BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

FreeBSD automatisch herunterfahren, wenn Batterie leer ist

Nachdem mir zweimal der Laptop abgestellt ist, ohne sauber herunterzufahren, da die Batterie leer war, habe ich mich auf die Suchen nach einer Lösung gemacht, jedoch nur Lösungen mit Shellscripts/Cron gefunden, die ich nicht so schön fand. Also habe ich einen Patch für powerd(8) geschrieben. Es stellte sich aber heraus, dass dies mit devd(8) schon möglich ist. Also noch devd in die Googlesuche miteinbezogen und siehe da, das gibt es schon.

Einfach Folgendes mit root-Rechten ausführen:

#  fetch -o /etc/rc.d/battery http://www.lestinsky.de/michael/scripts/battery.sh && chmod +x /etc/rc.d/battery

Danach folgende Zeilen in der /etc/devd.conf einfügen:

# Warnings and emergency shutdown if battery is running low.
notify 10 {
match "system" "ACPI";
match "subsystem" "CMBAT";
action "/etc/rc.d/battery";
};

Falls dies noch nicht der Fall ist, muss devd noch in der /etc/rc.conf eingetragen werden:

devd_enable="YES"

Ist der Batteriestand niedrig, wird eine Warnung an die Benutzer mittels wall(1) gesendet und wenn man darauf nicht reagiert, bzw. den Laptop an den Strom hängt, wird das System automatisch heruntergefahren.

Da jedoch mein IBM T42 den ACPI Batteriestatus nicht korrekt zurückmeldet, habe ich oben genanntes Skript angepasst, dass es bei 5% Batteriestand eine Warnung ausgibt, 60 Sekunden wartet und falls dann der Akku nicht wieder geladen wird, das System herunterfährt. Das angepasste devd-Skript ist hier verfügbar.

Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
Comments (3)  Permalink

Comments

mich_ @ 15.06.2006 10:42 UTC
Habs mal übernommen. Beim T40p wird der Batteriestatus doch richtig angezeigt? Weisst du das vielleicht?
Wie hast du bemerkt, das bei dir der Batteriestand falsch angezeigt wurde?
Beat @ 15.06.2006 11:01 UTC

Weiss es nicht wies beim T40p ist. Mit

sysctl -n hw.acpi.battery.state

kannst Du den Status der Batterie abfragen. Unglücklicherweise wechselt mein T42 auch bei sehr niedrigem Batteriestand nie auf 5 (LOW) oder 4 (CRITICAL), so dass ich das unter http://www.lestinsky.de/michael/scripts/battery.sh gefundene Skript nicht so übernehmen konnte. Mein T42 meldet nur 1 (DISCHARG) und 2 (CHARGING) zurück. Ich musste daher das Skript ein wenig an diese Umstände anpassen.

mich_ @ 15.06.2006 11:05 UTC
Ich werds mal testen. Zurzeit meldet es bei mir nur 0 (mit Netzteil) und 1 (ohne Netzteil). Aber die Batterie ist auch komplett geladen.
Danke.
No new comments allowed (anymore) on this post.