UPS
Add a Backup Power Supply
A UPS (uninterruptible power supply) ensures that your node continues to function through minor power fluctuations and power outages.
If you don’t shut your Raspberry Pi down properly this is essentially the same as pulling the power cord out of your desktop computer every time you want to shut it down. When this happens, you risk corrupting your device’s SD card, as well as data on your hard drive.
The solution is that you plug your device into a high-output power bank. This is basically a juiced-up version of what you might use to charge your phone while camping. The battery pack gets plugged into the wall and your device gets plugged into the battery pack.
A UPS should only be relied on to provide you with enough time to safely shut down your node until your power is restored. You should not connect your router or modem to the UPS due to potential data corruption that may occur if your node is in the process of writing to the disk when a power outage occurs.
Many UPS devices have a loud audible alert that will be triggered when the power goes out.
Here are some options to consider:
- https://amzn.com/B01FWAZEIU
- https://amzn.com/B00DBAA696
- https://amzn.com/B07BXZPF99
- https://amzn.com/B073Q3BSPG
- https://www.amazon.co.uk/gp/product/B07BZCD927/ For those looking for UK Sockets.
Advanced UPS Setup
If you want to automate a graceful shutdown for the node once the UPS power capacity goes to a minimum level, you can connect the UPS Serial port (via USB) to the Raspberry Pi or PC and have it communicate with the UPS once configuring the UPS daemon in the Pi or you Linux setup correctly, it will initiate a graceful shutdown if the capacity hits 5%
The following steps should be run via SSH:
sudo apt-get install apcupsd sudo nano /etc/default/apcupsd
In /etc/default/apcupsd change ‘ISCONFIGURED=no’ to ‘ISCONFIGURED=yes’
sudo nano /etc/apcupsd/apcupsd.conf
Change the values as below, make sure the DEVICE field is empty, the default is /dev/ttyS0 and should be cleared.
UPSNAME myups UPSCABLE usb UPSTYPE usb DEVICE
Note - Make sure the Restart apcupsd
sudo apcupsd restart
CHECK IF UPS IS RECOGNISED OR ELSE YOU WILL HAVE TO STOP IT!
lsusb
will list the connected UBS devices. On some umbrel installations, UPS is not recognised on the USB bus and if that happens you would not see that in the output of this command.
umbrel@umbrel:~ $ lsusb Bus 002 Device 002: ID 2109:0715 VIA Labs, Inc. Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub umbrel@umbrel:~ $
If this happens on your node, there is an issue and you must check /var/log/syslog
tail -f /var/log/syslog
if you see lots of USB related error messages written of the following description
Jul 26 14:30:55 umbrel kernel: [ 6004.122153] usb 1-1: new high-speed USB device number 122 using xhci_hcd Jul 26 14:30:55 umbrel kernel: [ 6004.122286] xhci_hcd 0000:01:00.0: Setup ERROR: setup address command for slot 1. Jul 26 14:30:55 umbrel kernel: [ 6004.330262] xhci_hcd 0000:01:00.0: Setup ERROR: setup address command for slot 1. Jul 26 14:30:55 umbrel kernel: [ 6004.542121] usb 1-1: device not accepting address 122, error -22 Jul 26 14:30:55 umbrel kernel: [ 6004.670139] usb 1-1: new high-speed USB device number 123 using xhci_hcd
you should stop the apcupsd since your device is not recognising the UPS and filling up the syslog with error messages. If you keep it running UPSD which cannot connect to the UBS device, the syslog will be bloated with these error messages. you can press ctrl-c to stop the output from tail -f
sudo /etc/init.d/apcupsd shutdown
and
sudo nano /etc/default/apcupsd
In /etc/default/apcupsd change ‘ISCONFIGURED=yes’ to ‘ISCONFIGURED=no’
The implications are that your UPS will protect only for short power outage but would not safely shutdown. We are still looking for solutions for this issue which could be related to power supply to SSD on some intallations.
IF YOUR UPS WAS RECOGNISED and you did not see any issues in syslog as above you are good and proceed below.
Check UPS status:
apcaccess status
output example:
$ apcaccess status APC : 001,035,0900 DATE : 2021-06-14 02:13:51 +0000 HOSTNAME : umbrelmavic VERSION : 3.14.14 (31 May 2016) debian UPSNAME : myups CABLE : USB Cable DRIVER : USB UPS Driver UPSMODE : Stand Alone STARTTIME: 2021-06-13 01:38:35 +0000 MODEL : Back-UPS ES 350 STATUS : ONLINE LINEV : 120.0 Volts LOADPCT : 0.0 Percent BCHARGE : 100.0 Percent TIMELEFT : 36.4 Minutes MBATTCHG : 5 Percent MINTIMEL : 3 Minutes MAXTIME : 0 Seconds SENSE : High LOTRANS : 88.0 Volts HITRANS : 139.0 Volts ALARMDEL : 30 Seconds BATTV : 13.7 Volts LASTXFER : Unacceptable line voltage changes NUMXFERS : 1 XONBATT : 2021-06-13 01:50:34 +0000 TONBATT : 0 Seconds CUMONBATT: 251 Seconds XOFFBATT : 2021-06-13 01:54:45 +0000 STATFLAG : 0x05000008 SERIALNO : XXXXXXXXXXXX BATTDATE : 2007-06-08 NOMINV : 120 Volts NOMBATTV : 12.0 Volts FIRMWARE : 823.B1.D USB FW:B1 END APC : 2021-06-14 02:13:55 +0000
Once the output looks correct, specifically the STATUS shows as ONLINE, you can test the setup by disconnecting the UPS from the main power, watch the message prompts on the terminal and and let the battery drain until the point that a showdown will be initiated, this will confirm that your setup is correct.