Skip to content

Raspberry Pi get_throttled: Decode 0x50000 and Undervoltage

vcgencmd get_throttled reports a hexadecimal bitmask, not a temperature or error number. A value such as 0x50000 records earlier undervoltage and throttling; it does not say those conditions are active at the moment of the reading. Use this guide to decide whether to check power, cooling, or another performance bottleneck.

Read get_throttled alongside temperature

1
2
3
4
# Capture firmware health, temperature, and the current Arm clock.
vcgencmd get_throttled
vcgencmd measure_temp
vcgencmd measure_clock arm

Take readings at idle and during the workload that becomes slow. Clock frequency naturally changes with load, so a low idle clock is not enough to diagnose throttling. Firmware support and fault detection vary by board; the Zero range lacks the low-voltage detection circuit described for other models.

Decode the get_throttled bits

The official vcgencmd reference defines these flags:

Bit Hex mask Meaning
0 0x1 Undervoltage detected now
1 0x2 Arm frequency currently capped
2 0x4 Currently throttled
3 0x8 Soft temperature limit active
16 0x10000 Undervoltage occurred earlier
17 0x20000 Frequency capping occurred earlier
18 0x40000 Throttling occurred earlier
19 0x80000 Soft temperature limit occurred earlier

Check masks with a bitwise AND. Comparing the entire result to one known value misses combinations of faults.

What do 0x50000 and 0x50005 mean?

Example result Interpretation
0x0 None of these flags set in this reading
0x50000 Earlier undervoltage and throttling; no current flags set
0x50005 Current undervoltage and throttling, plus both historical flags
0x20000 Earlier frequency cap; no current cap flag
0x80008 Soft temperature limit active and recorded earlier

A history flag alone does not identify when the event happened. These examples explain combinations, not guaranteed outputs for every board. The throttling bit alone also does not establish whether heat or power was the cause.

Decode any reading with Python

Save this as decode-throttled.py on any computer with Python 3. It decodes a captured value without requiring Raspberry Pi hardware:

#!/usr/bin/env python3
"""Decode a hexadecimal vcgencmd get_throttled snapshot."""
import sys

FLAGS = {
    0: "CURRENT: undervoltage",
    1: "CURRENT: Arm frequency capped",
    2: "CURRENT: throttled",
    3: "CURRENT: soft temperature limit",
    16: "HISTORY: undervoltage",
    17: "HISTORY: Arm frequency capped",
    18: "HISTORY: throttled",
    19: "HISTORY: soft temperature limit",
}

if len(sys.argv) != 2:
    raise SystemExit("Usage: python3 decode-throttled.py 0x50000")
text = sys.argv[1].removeprefix("throttled=")
try:
    value = int(text, 16)
except ValueError:
    raise SystemExit("Supply a hexadecimal value, such as 0x50000")
if value < 0:
    raise SystemExit("The bitmask must be non-negative")

print(f"Bitmask: {value:#x}")
for bit, label in FLAGS.items():
    if value & (1 << bit):
        print(label)
known_mask = sum(1 << bit for bit in FLAGS)
if value & ~known_mask:
    print(f"Unknown bits: {value & ~known_mask:#x}")
if value == 0:
    print("No documented flags set in this snapshot")
1
2
3
# Decode a saved snapshot or capture the current Raspberry Pi reading.
python3 decode-throttled.py 0x50000
python3 decode-throttled.py "$(vcgencmd get_throttled)"

Unknown bits remain visible rather than being silently treated as healthy.

If undervoltage is active, inspect the power path

  1. Record the reading and kernel messages before changing anything.
  2. Shut down cleanly before moving power cables or removing hardware.
  3. Check the supply's supported output, cable quality, connectors, and peripheral load.
  4. Repeat the same workload with a suitable supply and, where appropriate, a powered USB hub.
# Look for supporting evidence; message text varies by kernel and board.
sudo journalctl -k -b --no-pager | grep -Ei 'voltage|throttl|over.?current'

No matching log messages does not invalidate a firmware flag. Also, vcgencmd measure_volts core is not a measurement of the incoming USB supply, so it cannot prove the cable is delivering adequate input voltage.

For Pi 5, a compatible 3A supply permits booting but limits USB peripheral current to 600mA; a supported 5A-at-5V supply allows a higher 1.6A limit. A charger's advertised total wattage alone does not establish that output capability. See the official power-supply requirements for your model. Avoid forcing a higher USB current limit as a substitute for adequate power.

If temperature is high, verify cooling under load

Check heatsink contact, enclosure airflow, and fan operation while running your normal workload. Pi 5's fan can stop at low temperature; an idle stopped fan alone is not a failure. Do not connect a fan motor directly to a GPIO output.

Use the temperature and cooling guide for board-specific thermal behaviour. The older soft-temperature-limit feature is not a universal Pi 5 temperature threshold.

# Watch for changes while reproducing the normal workload; Ctrl-C stops it.
watch -n 2 'vcgencmd measure_temp; vcgencmd get_throttled; vcgencmd measure_clock arm'

If current undervoltage and thermal symptoms both appear, address both. A cooler does not repair the power path.

Verify recovery without confusing history with an active fault

Record the original flags, supply/cable, peripherals, temperature, and workload. After the repair, compare current flags under the same workload. Historical flags can remain latched after the active condition clears; repeatedly reading a non-zero history value is not proof the repair failed.

For a fresh baseline, save the evidence, shut down cleanly, and start a new boot; if history remains, a clean power cycle provides a stronger reset boundary. Reproduce the workload and watch for new flags. Do not power-cycle repeatedly while writing storage or reboot solely to hide an unresolved fault.

Track an actual outcome too: request latency, inference speed, video playback, or sustained CPU frequency. If current flags remain clear but performance is poor, continue with memory-pressure diagnosis, storage measurements, and the performance troubleshooting guide.

FAQ

Is 0x50000 a current low-voltage warning?

It contains the historical undervoltage and throttling bits. Check bit 0 and take another reading during the affected workload to determine whether undervoltage is currently detected.

Does 0x0 prove the power supply is good?

It means the documented flags are clear in that snapshot. Brief failures, unsupported detection, USB power limits, and unrelated faults still require separate checks.

Should I disable throttling to make the Pi faster?

Keep automatic protection and fix the cause. Measure normal workload performance after improving power or cooling.

Documentation and bit definitions checked on 2 October 2026. The decoder examples can be tested without hardware; power and cooling results depend on the actual Raspberry Pi installation.