Under-voltage of Raspberry Pi’s power supply can be the reason for all kinds of stability problems we have seen in the past. The problem may occur due to power drain on high system load or a bad power supply which is not able to provide a stable supply in all load situations or the PSU is too weak to provide enough power which for example may be the case if you use an ordinary USB2 hub or a some smart phone charger. Starting from Raspberry Pi 2 all model supplied with the current firmware will detect under-voltage and throttle the SoC to lower the drain. Running the SoC at lower frequencies will stabilize the voltage of the power supply in most cases, but it also means the system does not run at full speed. If the under-voltage cannot been resolved the system may start to linger which may result in memory corruption which may imply program abortion and data-loss, e.g., due to corruptions of cached disk data.
To identify under-voltage a status status check can be performed as follows:
/opt/vc/bin/vcgencmd get_throttled
The command indicates whether the SoC has been throttled which will occur in case of undervoltage, but may also occur due to other events such as overheating.
When you get the following no throttling has occurred and you’re system is ok.
throttled=0x0
In other cases the result may be difficult to read as it is a 20 bit sequence which is output as 5 hex digits. As far as undervoltage is concerned the relevant bits are
- bit 0 indicating under-voltage has been currently detected (rightmost hex digit)
- bit 16 indicating under-voltage has been detected previously(leftmost digit)
Typically you will see a status of throttled=0x50005
which indicates under-voltage has occurred present and in the past and the SOC has been throttled at present. For a full explanation of the result see the vcgencmd command documentation at https://github.com/raspberrypi/documentation/blob/master/raspbian/applications/vcgencmd.md#get_throttled