Tutorial: Eine USV für den Raspberry Pi auslegen und die Notabschaltung einrichten

Inhalt
Eine USV für den Raspberry Pi wird nach einer Zahl gekauft und nach einer anderen beurteilt. Auf der Packung steht die Zellkapazität. Zählen tut, wie lange die Maschine weiterläuft – und zwischen beiden liegen drei Abzüge, die zusammen etwa ein Drittel ausmachen.
Es folgt die Rechnung in der Reihenfolge, in der sie zu führen ist, und der Teil, der gar keine Rechnung ist: Das Abschalten muss geschehen, solange noch Energie da ist, denn ein Paket, das sich leerläuft, nimmt das Dateisystem mit.

Was der Aufbau wirklich zieht
Datenblätter beschreiben das Netzteil, nicht den Verbrauch. Das offizielle 27-Watt-Netzteil des Raspberry Pi 5 sagt nichts über die Maschine aus, sondern darüber, was die Maschine in der Spitze mit voller USB-Last ziehen darf.
Der echte Wert lässt sich auf der Platine selbst messen. Pi 4 und Pi 5 tragen einen Stromversorgungsbaustein, dessen Schienen auslesbar sind, und die Summe über alle Schienen ergibt die Gesamtaufnahme.
vcgencmd pmic_read_adc | awk '
/_A current/ { split($1, n, "_"); a[n[1]] = $2 + 0 }
/_V volt/ { split($1, n, "_"); v[n[1]] = $2 + 0 }
END { for (r in a) s += a[r] * v[r]; printf "%.2f W\n", s }'
So gemessen liegt ein Pi 5 im Leerlauf bei rund 2,7 Watt und erreicht mit vier ausgelasteten Kernen etwa 9 Watt. Eine NVMe-SSD unter Last kommt mit anderthalb bis zweieinhalb Watt hinzu, der aktive Kühler mit einem halben, eine USB-Festplatte mit zwei bis drei. Der realistische Planungswert für einen kleinen Heimserver liegt damit zwischen sechs und zwölf Watt, und beide Enden dieser Spanne lohnen die Rechnung.
Eine einzelne Messung genügt nicht, denn der interessante Moment ist nicht der Durchschnitt. Ein Stromausfall während einer Sicherung trifft die Maschine in der Spitze, und die Laufzeit, die zählt, ist die unter Last.
Von Milliamperestunden zu Wattstunden
Zellen sind in Milliamperestunden beschriftet, und das ist eine Ladung, keine Energie. Erst die Multiplikation mit der Nennspannung macht daraus etwas Vergleichbares.
Wh = mAh × V / 1000
3400 mAh × 3,7 V / 1000 = 12,58 Wh je Zelle
zwei Zellen parallel = 25,2 Wh
Die 3,7 Volt sind der Mittelwert über die Entladekurve, nicht die Ladeschlussspannung von 4,2. Wer 4,2 in die Formel setzt, hebt das Ergebnis um gut zehn Prozent an – der häufigste Grund für eine zu optimistische Rechnung.
Ein Vergleich, der im Gedächtnis bleiben sollte: Eine Powerbank mit der Angabe 20 000 mAh ist auf Zellebene gemessen, nicht am USB-Anschluss. Bei 3,7 Volt sind das 74 Wattstunden, nach der Wandlung auf 5 Volt bleiben davon etwa 55 – und genau diese Zahl verbirgt die Werbeangabe.
Der Anteil des Pakets, der nie zu Laufzeit wird
Drei Abzüge stehen zwischen den Zellen und der Maschine, jeder mit einer anderen Ursache.
Der erste ist der Wandler. Zellen liefern zwischen 4,2 und 3,0 Volt, der Pi braucht stabile 5,1. Der Aufwärtswandler dazwischen arbeitet bei üblicher Last mit etwa 88 Prozent, was drei der 25,2 Wattstunden kostet. Günstige Module fallen bei kleiner Last unter 80 Prozent – und kleine Last ist genau das, was ein wartender Pi erzeugt.
Der zweite ist die Spannungsgrenze. Lithiumzellen werden bei rund drei Volt je Zelle abgeschaltet, und die Energie unterhalb dieser Linie bleibt im Paket. Das ist keine Verschwendung, sondern Schutz: Tieferes Entladen altert die Zelle überproportional und beschädigt sie unter 2,5 Volt dauerhaft. Etwa fünf Prozent des Pakets liegen unter dieser Linie.
Der dritte ist der einzige, der gewählt und nicht vorgegeben ist. Ein Herunterfahren dauert zehn bis dreissig Sekunden und muss beginnen, solange der Wandler noch stabile fünf Volt liefert. Eine Reserve von fünfzehn Prozent der Nettoenergie schafft dafür Platz – und zugleich für ein gealtertes Paket und für einen zweiten Ausfall wenige Minuten nach dem ersten.
Von 25,2 Wattstunden bleiben 17,8. Die Laufzeiten ergeben sich unmittelbar daraus.
| Last | Typische Lage | Laufzeit aus 17,8 Wh |
|---|---|---|
| 6 W | Pi 5, Leerlauf, SD-Karte | 2 h 58 min |
| 9 W | Pi 5 mit NVMe, mittlere Last | 1 h 59 min |
| 12 W | Alle Kerne belegt, Platte und Kühler | 1 h 29 min |
Abschalten, bevor die Grenze erreicht ist
Jede USV, die den Namen verdient, meldet den Wegfall der Netzspannung auf irgendeine Weise. Zwei Mechanismen decken fast alle Platinen am Markt ab, und der einfachere kommt ganz ohne Software aus.
Ein HAT, der einen GPIO-Pin auf Masse zieht, kann das Herunterfahren über ein Device-Tree-Overlay auslösen. Eine Zeile in der Startkonfiguration ist die ganze Umsetzung.
# /boot/firmware/config.txt
dtoverlay=gpio-shutdown,gpio_pin=17,active_low=1,gpio_pull=up
Der Vorteil: Das funktioniert ohne laufenden Dienst und sogar während des Startvorgangs. Der Nachteil: Es fährt sofort herunter, was bei einem vier Sekunden langen Ausfall falsch ist. Eine kurze Verzögerung macht den Unterschied zwischen überlegter Reaktion und nächtlichem Neustart.
#!/bin/bash
# /usr/local/bin/usv-wacht.sh - wartet auf einen anhaltenden Netzausfall
while gpiomon --num-events=1 --falling-edge gpiochip0 17 >/dev/null; do
sleep 60
if gpioget gpiochip0 17 | grep -q '^0$'; then
logger -t usv "Netz seit 60 s weg - fahre herunter"
/sbin/shutdown -h now
fi
done
# /etc/systemd/system/usv-wacht.service
[Unit]
Description=USV-Wache
After=multi-user.target
[Service]
ExecStart=/usr/local/bin/usv-wacht.sh
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Der zweite Mechanismus ist eine Ladestandsanzeige über I2C – ein MAX17048 oder ein INA219 sitzt auf den meisten besseren Platinen und meldet den Ladestand in Prozent. Damit hängt die Auslösung am Paket statt an der Uhr, und das ist das ehrlichere Kriterium: abschalten unter zwanzig Prozent, unabhängig davon, wie lange der Strom schon fehlt.
Welcher Weg auch gewählt wird, eine Einstellung gehört dazu. Eine Maschine, die bei einem Ausfall herunterfährt, muss bei Rückkehr der Spannung von selbst wiederkommen – beim Pi 5 ist das eine Sache des Bootloaders, nicht des Betriebssystems.
sudo rpi-eeprom-config --edit
# POWER_OFF_ON_HALT=1
# WAKE_ON_GPIO=0
# PSU_MAX_CURRENT=5000
Die Probe, die absichtlich stattfinden muss
Eine nie geprüfte USV ist eine Annahme. Die Probe ist unspektakulär und kostet einen Nachmittag: die Maschine unter die Last setzen, die sie später wirklich sieht, den Netzstecker ziehen und zwei Zeiten notieren – wann das Herunterfahren begann und wann das Paket aufgab.
Danach steht der Beleg im Protokoll des vorherigen Starts. Ein sauberes Herunterfahren endet mit einer Stopp-Meldung für das Dateisystem; ein abruptes Ende zeigt gar nichts, und das ist selbst der Befund.
journalctl -b -1 -n 30 --no-pager
Zwei Ergebnisse kommen häufig vor, und beide sind brauchbar. Begann das Herunterfahren, war das Paket aber vor dem Ende leer, ist die Reserve zu klein. Hatte das Paket Minuten nach dem Ausschalten noch Ladung, ist die Reserve grosszügig – eine gute Lage, die zu kennen besser ist, als sie anzunehmen.
Diese Probe einmal im Jahr zu wiederholen kostet eine Stunde und fängt den Ausfall ab, der sonst kein Anzeichen hat: ein Paket, das im Vollladezustand still die Hälfte seiner Kapazität verloren hat.
Was zwei Jahre verändern
Lithiumzellen verlieren auf zwei Wegen an Kapazität, und nur einer davon entsteht durch Nutzung. Drei- bis fünfhundert volle Zyklen bringen eine Zelle auf etwa achtzig Prozent ihrer ursprünglichen Kapazität – für eine USV, die sich ein paar Mal im Jahr entlädt, ohne Bedeutung.
Der andere Weg ist die Zeit, und dieser trifft hier zu. Eine dauerhaft voll geladene Zelle bei der Temperatur in einem geschlossenen Gehäuse altert messbar schneller als dieselbe Zelle bei Lagerladung. Nach zwei Jahren in einem warmen Schrank sind zwanzig bis dreissig Prozent Kapazitätsverlust normal und kein Defekt.
Daraus folgen zwei Dinge. Platinen, die auf 4,1 statt 4,2 Volt laden, geben rund zehn Prozent Nennkapazität auf und verdoppeln dafür grob die kalendarische Lebensdauer – ein guter Tausch für ein Gerät, das sein Leben mit Warten verbringt. Und die Auslegung am Anfang erfolgt besser mit dem Paket, das in zwei Jahren dasteht, nicht mit dem aus der Verpackung: Die Reserve gehört so gewählt, dass auch achtzig Prozent des Pakets das Herunterfahren noch tragen.