“Undervoltage detected!” on a Raspberry Pi: what it does to a streamer, and how to check the supply
Short answer: when its supply sags below about 4.63 V, a Raspberry Pi slows its processor down
and the kernel writes Undervoltage detected! in its log. On the Pi 4 below, the processor fell from
1.8 GHz to 600 MHz while Linux still showed 1.8 GHz, and it happened 68 times a day, often within
seconds of a login. Playing a file kept up even then; heavier work has less room, and USB devices,
a DAC among them, share the low voltage. vcgencmd get_throttled tells whether it has happened. The
cure is the supply and its cable, not a setting.
Checked on 2026-10-26 on a Raspberry Pi 4 Model B under Raspberry Pi OS (Debian 13, Linux 6.18) whose supply falls short: six days of its log, and a two-minute load test. The rest comes from Raspberry Pi's documentation, its engineers and the kernel's sources.
Has it happened on yours?
vcgencmd get_throttled
throttled=0x0 means none of these has happened. Any other value adds them up, from Raspberry Pi's
documentation:
| Now | Has occurred | What |
|---|---|---|
0x1 |
0x10000 |
Undervoltage |
0x2 |
0x20000 |
Arm frequency capped |
0x4 |
0x40000 |
Throttled |
0x8 |
0x80000 |
Soft temperature limit |
On the Pi above, 0x50000 at rest: undervoltage and throttling have occurred, none is going on. It
still read so five minutes after the last drop. During a drop, 0x50005: both are going on too.
The kernel's log gives the time of each drop:
journalctl -k --no-hostname | grep -i voltage
Oct 26 09:43:29 kernel: hwmon hwmon1: Undervoltage detected!
Oct 26 09:43:50 kernel: hwmon hwmon1: Voltage normalised
- One pair of lines per drop. The kernel asks the firmware every two seconds and writes a line
each time the state changes. To count the drops since the Pi started:
journalctl -k -b | grep -c "Undervoltage detected". - The same alarm, without
vcgencmd:grep -H . /sys/class/hwmon/hwmon*/in0_lcrit_alarmreads1while a drop lasts,0otherwise. - On the desktop, Raspberry Pi OS shows a notification, "Low voltage warning", over "Please check your power supply".
- Where none of this exists.
vcgencmdcomes with Raspberry Pi OS and DietPi, in theraspi-utils-corepackage. Debian's own packages have neither it nor the kernel's driver, which Debian 13 leaves out of its arm64 kernel: there, what is left is the red power LED of a Pi 1 to 4, "off or flickering when there is undervoltage", and a multimeter (below). The Zero range has no detection circuit at all.
What it does
In Raspberry Pi's documentation: "If the voltage drops below 4.63 V (±5%), the Arm cores and the GPU are throttled back, and a message indicating the low voltage state is added to the kernel log." To watch it happen:
watch -n 1 'vcgencmd measure_clock arm; vcgencmd get_throttled'
What the Pi above did, with three of its four cores kept busy:
- The processor ran at a third of its speed.
measure_clock armreadfrequency(48)=600117184, 600 MHz, within a tenth of a second of the load starting, while Linux's own figure,/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq, still read1800000. The documentation explains it: that figure "is the kernel requested frequency", andmeasure_clockgives the actual one. Tools that show Linux's figure do not see the slowdown. - It came back at once. 1.8 GHz again within 0.2 s of the load stopping; the kernel wrote
Voltage normalisedabout four seconds later. - Playing a file kept up. One core decoded a 24-bit, 192 kHz FLAC file of noise, the hardest kind for FLAC, 64 times faster than it plays at 1.8 GHz, and still 25 times faster at 600 MHz with the other cores busy. Work that needs far more of the processor, heavy resampling or HQPlayer's filters, gets a third of it while a drop lasts.
- Storage and USB devices share the low voltage. Raspberry Pi's documentation: "Low quality power supplies can corrupt storage or cause unpredictable behaviour", and "often problems with USB devices are caused by power issues". One of its engineers adds that below 4.75 V, the edge of the USB specification, "USB devices are likely to malfunction".
How often, on that Pi, over six days of log: 404 drops, 68 a day, from 4 seconds to over 5 minutes (half of them 6 seconds or less, nine over a minute). They followed activity: 16 between midnight and 7 a.m., and nearly one login in two was followed by one within ten seconds (162 of 347).
The supply, and what it feeds
Raspberry Pi's requirements:
| Model | Supply | Shared by the USB ports |
|---|---|---|
| Pi 3 B+ | 5.1 V, 2.5 A, micro USB | 1.2 A |
| Pi 4, Pi 400 | 5.1 V, 3 A, USB-C | 1.2 A |
| Pi 5 | 5.1 V, 5 A, USB-C | 1.6 A, or 600 mA from a 3 A supply |
- The cable counts. The documentation's figures are "measured at the plug, not the supply": "Allow for voltage loss in the cable", it says, and it names wires "that are too thin" among the causes. Raspberry Pi's own supplies come with 1.2 to 1.5 m of 17 or 18 AWG cable. It adds that "the voltage from some USB chargers/power supplies can fall as low as 4.2 V", where 4.8 V is the floor "for reliable performance".
- Count what the Pi feeds. A DAC, a disk or a hub powered through its USB cable draws on the
column above, from the same supply.
lsusb -vshows what each device declares: the DAC of my x86 test box reads(Bus Powered)andMaxPower 500mA, so its USB side may take up to 500 mA from the port. To rule power out, Raspberry Pi's documentation advises connecting USB devices "using a powered hub". - A Pi 5 needs 5 A to feed its USB ports fully. Without a supply that offers 5 A, its desktop
warns "This power supply is not capable of supplying 5A", over "Power to peripherals will be
restricted".
usb_max_current_enable=1inconfig.txtlifts the limit, under the documentation's warning that it "can cause system instability, crashes, or data loss": for a USB-powered DAC, the 5 A supply is the better fix. - Reading the voltage. A Pi 5 reads its own:
vcgencmd pmic_read_adc EXT5V_Vanswers, in the documentation's example,EXT5V_V volt(24)=5.06520000V. On older models,vcgencmd measure_voltsgives the processor's voltage, not the supply's, and the documentation sends you to a multimeter between the 5 V and ground pins. A multimeter shows the average: "it won't pick up momentary dropouts", in the words of the same engineer, and the Pi's own detection does.
Settings that hide it
avoid_warnings=2"allows turbo mode even when low-voltage is present". Raspberry Pi files it among theconfig.txtoptions that "don't work with Raspberry Pi OS Bookworm and later", and it never mended the supply.- DietPi's
cpucommand prints a "Throttle up" line: that is the frequency governor's threshold, not the slowdown above.
With Audiogravity
On a Raspberry Pi, its Performance tab marks every core THROTTLED when the supply could not keep up, and, with notifications on, the box sends "Power Supply Too Weak" as the voltage drops, at most once a day.
The details are in the manual: Administration → Performance tuning and Push notifications.
Sources
- Raspberry Pi's documentation, read on 2026-10-26 from its repository, which mirrors the website: power supplies (the 4.63 V threshold, the requirements, the causes and consequences), setting up (voltage measured at the plug), vcgencmd (
get_throttled,measure_clock,measure_volts,pmic_read_adc), overclocking (throttling, 4.8 V, the requested frequency), USB (current per port), performance (usb_max_current_enable), LED warnings, legacy options (avoid_warnings); the product briefs of the 27 W and 15 W supplies (cables). - Raspberry Pi engineers on GitHub: Phil Elwell on
0x50000(2018); Dave Stevenson on brief drops, multimeters and USB (August 2023). - The desktop's messages: pplug-power, Raspberry Pi OS's power plugin.
- Linux 6.12: the messages and the two-second polling in drivers/hwmon/raspberrypi-hwmon.c and its documentation. Debian 13:
CONFIG_SENSORS_RASPBERRYPI_HWMONnot set in its arm64 kernel 6.12.113, and novcgencmdin its packages. DietPi: dietpi-cpuinfo. - Measurements, 2026-10-26: a Raspberry Pi 4 Model B Rev 1.5, Raspberry Pi OS (image of 2026-04-21) on Debian 13, Linux 6.18.50, firmware of 2026-09-14, nothing on its USB ports; its kernel log from 2026-10-20 to 26; the load test with busy loops and ffmpeg 7.1. The USB DAC's declaration read with
lsusb(usbutils 018) on the x86 test box, Debian 13. Nothing was measured on a Pi 5.