Raspberry Pi power stability
The Raspberry Pi 5 power management IC PMIC is the Renesas DA9091, a chip specifically designed for the Pi 5. The Raspberry Pi 3B+ and Raspberry Pi 4 PMIC is the MaxLinear MXL7704. Older Raspberry Pi models used custom circuitry or the APX803 instead of a COTS PMIC to handle sequencing of discrete DC power input to the Pi subsystems. It has been noted that damaging the PMIC can make the Raspberry Pi too difficult to repair.
A yellow lightning bolt is GPU-superimposed on the Raspberry Pi display output for low voltage. In general computing platform operation is not guaranteed with voltages out of tolerance. The SD card can become unreadable, the Pi may have random malfunctions, and corrupt data (bad writes) on the SD card. Raspberry Pi 4 and Pi 5 require a minimum 5 Volt 3.0 Amp power supply. Using peripherals can require higher current supply. The cable between the power supply and Raspberry Pi must be of good quality to minimize voltage drop and unstable operation. The USB-C power connector of the Raspberry Pi 4 and Pi 5 is markedly more robust than the micro-USB power connector of legacy Raspberry Pi models.
Raspberry Pi Low voltage alarm
If the DC input voltage falls below 4.65 volts (depending on Raspberry Pi model and firmware), the GPU superimposes a lightning bolt graphic on the display output. This may not be visible on a VNC remote desktop.
The status of the low voltage alarm (current or past) can be read from the Terminal with the command:
vcgencmd get_throttledFrom the man page of vcgencmd:
Returns the throttled state of the system. This is a bit pattern - a bit being set indicates the following meanings:
| Bit | Meaning |
|---|---|
| 0 | Under-voltage detected |
| 1 | Arm frequency capped |
| 2 | Currently throttled |
| 3 | Soft temperature limit active |
| 16 | Under-voltage has occurred |
| 17 | Arm frequency capping has occurred |
| 18 | Throttling has occurred |
| 19 | Soft temperature limit has occurred |
A value of zero indicates that none of the above conditions is true.
To find if one of these bits has been set, convert the value returned to binary, then number each bit along the top. You can then see which bits are set. For example:
0x50000 = 0101 0000 0000 0000 0000
Adding the bit numbers along the top we get:
19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
From this we can see that bits 18 and 16 are set, indicating that the Pi has previously been throttled due to under-voltage, but is not currently throttled for any reason.
This can be done in Python script:
Example:
python3 check_raspi_throttle.pythrottled: 0x50005
Set throttled bits:
bit 0: Under-voltage detected
bit 2: Currently throttled
bit 16: Under-voltage has occurred
bit 18: Throttling has occurred
Measure Raspberry DC input voltage / current
The Raspberry Pi 5 added vcgencmd pmic_read_adc to read DC input voltage and the several generated voltages and currents consumed. On older Raspberry Pi models there is no built-in capability to measure the Raspberry Pi DC input voltage without adding an external ADC.
On the older Raspberry Pi (older than Pi 5) it may be possible to read the input voltage binary state (OK or low) from the Terminal, but we have not confirmed this. On the Raspberry Pi 1 B+ and Pi 2 it may be possible to read state of GPIO 35, depending on the hardware and firmware. On the Raspberry Pi 3 in may be possible to read GPU-driven LED status.
Mitigate inadequate power supply
When compiling programs with concerns about excessive power consumption, consider not compiling in parallel.
For GNU Make, “make -j1” uses 1 CPU core.
For Ninja compilation in parallel is default, so specify “ninja -j1” for one build thread.
For meta-build systems limit build parallelism like CMake
cmake --build <build-directory> -j1
or Meson
meson compile -j1
- Detailed Raspberry Pi voltage and current measurements
- Power recommendations for each Raspberry Pi model.
- Pi power alarm LED controlled with software since it’s on GPIO.
Related: Measure Raspberry Pi CPU temperature