UPS (Uninterruptible Power Supply)¶
Helios64 provides a built-in UPS feature to protect your data from unexpected power loss. The feature requires an additional Li-Ion Battery to be connected to header J9 .
When system detects AC power loss, the system will switch instantly to battery mode. The system is able to fully run (including HDDs) on battery for up to 15 min. During that time, if AC power comes back, system will switch back to AC power mode. Else, if AC power is not resuming and battery voltage reach a certain low threshold, the system will automatically trigger graceful shutdown or hibernation (system-to-disk).
As part of Helios64 accessories, we provide a specially designed Li-Ion Battery for the UPS feature (SKU: H64-BAT-01 ).
The actual cells of the this battery pack is the Panasonic NCR18650BD, we use 2x cells in 2S1P configuration. The battery pack is equipped with a protection IC (HY2120) and a thermistor to monitor the cell temperature.
The battery pack is rated 7.2V 3180mAh (22.9Wh) with max continuous discharge of 10A.
It's possible for users to build their own battery if they respect the same above specification and pinout.
J9 Header Pinout¶
Battery charge is fully managed by hardware (Texas Instrument BQ24133), no software required. Charging function still operates when system is powered off. Helios64 board provides a visual charging indicator on LED9.
|Blinking||Fault / Battery Absent|
Note: The estimated time to fully charge the empty battery is around 4 hours.
UPS Status Under Linux¶
In Linux, the UPS is declared as gpio-charger located at
Main Power Status¶
Main Power status can be read using
1 means power adapter supplying the power.
0 means loss of power, power adapter no longer supplying power.
This status is unavailable on Linux Kernel 4.4
Battery charging status can be read using
It will return Charging or Not Charging
The status is only valid when main power is available.
Fault / Battery Absent status is unavailable but it can be concluded if the status keep changing.
Battery voltage can be measured on internal ADC channel 2. The internal ADC is located at
Following table shows scaling between ADC reading and actual battery voltage
|Battery Voltage (V)||ADC reading (mV)||Remarks|
|7.0||916||Recommended threshold to force shutdown system|
IIO subsystem provides hardware raw value. To convert the raw value to standard units, use following formula
adc = in_voltage2_raw * in_voltage_scale
To get the actual ADC reading in shell run following command
echo "`cat /sys/bus/iio/devices/iio:device0/in_voltage2_raw` * `cat /sys/bus/iio/devices/iio:device0/in_voltage_scale`" | bc