Unter Linux gibt es eine ganze Reihe hilfreicher Kommandozeilenwerkzeuge, die via ACPI ausführliche Daten über den Betriebszustand einer Notebook-Batterie ermitteln.
Bei der Arbeit mit einem Laptop müssen Sie darauf vertrauen können, dass der Akku noch genügend Ladung aufweist. Erreicht diese einen bestimmten unteren Schwellwert, erhalten Sie in vielen Fällen über die grafische Oberfläche eine entsprechende Nachricht. Das erlaubt es, alle Daten zu speichern und das Gerät sicher herunterzufahren. Alternativ wechseln Sie zum Weiterarbeiten in den Netzbetrieb, in dem sich die Batterie im Hintergrund wieder auflädt.
Die Daten für die Warnnachricht stammen aus dem Advanced Configuration and Power Interface [1] oder kurz ACPI [2]. Bereits 1996 erstmalig vorgestellt, hat die Technik inzwischen den Vorgänger Advanced Power Management (APM) abgelöst; die aktuelle Version 6 stammt vom April 2015. Mehr Informationen zum Thema APM und ACPI lesen Sie auf Tuxmobil [3] und im ACPI-Howto [4].
Früher war ACPI eine separate Komponente, heute pflegen die Kernel-Entwickler es im Rahmen des Unified Extensible Firmware Interface [5] (UEFI). Letzteres erlaubt, mithilfe von Tools für die Kommandozeile den Akku-Status eines Geräts auszulesen. Das betrifft nicht nur den Ladezustand, sondern auch den Zustand der Batterien selbst sowie des Temperatursensors. Unter Debian und dessen Derivaten heißen die dazu notwendigen Pakete acpi, acpid und acpi-support-base.
Bis zu Linux 2.6.26 lagen die Informationen zum ACPI im Proc-Filesystem [6] unter /proc/acpi/ [7]. Mittlerweile haben die Entwickler das Dateisystem etwas umsortiert und die Informationen nach /sys/class/power_supply/ verlegt.
Praxisbeispiel
Abbildung 1 zeigt Daten, wie sie unter Debian 8 auf einem Lenovo Thinkpad X250 [8] entstehen. Das Gerät verfügt über zwei Akkus, davon einer fest verbaut und einer zum Austauschen. Aus diesem Grund finden sich hier drei Stromzuführungen. Der Bereich AC steht für den Netzbetrieb, BAT0 und BAT1 für die erste beziehungsweise zweite Batterie.

Abbildung 1: Über das Pseudo-Dateisystem Sysfs erfahren Sie, welche Stromzuführung eine Hardware hat und ermitteln bei Bedarf detaillierte Informationen zu den einzelnen Komponenten.
Mithilfe der Kommandos cat, less oder more zeigen Sie den Inhalt der einzelnen Dateien an. Die Angabe Charging aus der Datei status verrät, dass die Batterie gerade lädt. Alternative Angaben lauten Discharging für das Entladen und Fully charged für einen vollständig geladenen Akku.
Werkzeuge
Das Auslesen der einzelnen Dateien gelingt immer. Das Zusammensuchen und Interpretieren der Daten bereitet aber mitunter etwas Mühe. Einige kleine Programme machen Ihnen das Leben leichter und bereiten die Daten in übersichtlicher Form auf. Dazu gehören die Werkzeuge Upower [9], Acpi [10] und Acpitool [11] sowie der Intelligent Battery Monitor Ibam [12].
Informationen über die einzelnen Energiequellen liefern alle vier Programme. Dafür kennt Upower den Schalter --enumerate (kurz: -e) (Listing 1), bei Acpi sind es die beiden Schalter --ac-adapter (-a) und --battery (-b) (Listing 2).
Listing 1
$ upower --enumerate
/org/freedesktop/UPower/devices/line_power_AC
/org/freedesktop/UPower/devices/battery_BAT0
/org/freedesktop/UPower/devices/battery_BAT1
/org/freedesktop/UPower/devices/DisplayDevice
Listing 2
$ acpi --ac-adapter --battery
Battery 0: Charging, 50%, 01:00:01 until charged
Battery 1: Unknown, 75%
Adapter 0: on-line
Acpitool hingegen liefert eine kompakte Übersicht (Listing 3). Während Upower lediglich die einzelnen Energiequellen auflistet, gehen Acpi und das Acpitool etwas mehr ins Detail.
Listing 3
$ acpitool
Battery #1 : Unknown, 75.35%
Battery #2 : Charging, 50.98%, 00:59:05
AC adapter : online
Thermal info: <not available>
Sagt Ihnen die Ausgabe im Terminal nicht zu, greifen Sie auf die entsprechenden Werkzeuge der Desktop-Umgebung zurück. Abbildung 2 zeigt das anhand des Energiemanagements von XFCE4 [13]. Um flink den Ladezustand abzufragen, binden Sie das Applet in den Systray ein (Abbildung 3).

Abbildung 2: Über ein Tool in der Task-Leiste fragen Sie unter XFCE4 komfortabel den Status und Details der Energieversorgung ab.

Abbildung 3: Die etwas kompaktere Variante des Programms für den Systray zeigt den Status der Batterien im Laptop an.
Details
Im nächsten Schritt geht es zunächst mit Upower ans Eingemachte: Rufen Sie es mit dem Schalter --show-info (-i) und dem Namen der Energiequelle auf, zeigt es alle Details dazu an. Der Schalter --dump (-d) listet sämtliche Energiequellen auf.
Listing 4 zeigt das Ergebnis für die zweite Batterie des Testgeräts. Neben dem Hersteller, der Modell- und Seriennummer sowie dem Typ – hier ein Lithium-Ionen-Akku – listet Upower mehrere für den Alltagsbetrieb nützliche Angaben auf. Daraus ersehen Sie unter anderem den Ladezustand der Batterie (hier nur noch bei rund 90 Prozent). Konzipiert für eine Kapazität von 71 Wh, fasst der Akku aufgrund fortgeschrittenen Alters nur noch 64 Wh. Die Zeile time to full zeigt, dass es etwa 90 Minuten dauert, die Batterie wieder vollständig zu laden.
Listing 4
$ upower --show-info /org/freedesktop/UPower/devices/battery_BAT1
native-path: BAT1
vendor: SANYO
model: 45N1777
serial: 27945
power supply: yes
updated: Di 09 Mai 2017 11:24:13 CEST (1 seconds ago)
has history: yes
has statistics: yes
battery
present: yes
rechargeable: yes
state: charging
warning-level: none
energy: 34,2 Wh
energy-empty: 0 Wh
energy-full: 64 Wh
energy-full-design: 71,28 Wh
energy-rate: 21,177 W
voltage: 11,566 V
time to full: 1,4 hours
percentage: 53%
capacity: 89,7868%
technology: lithium-ion
icon-name: 'battery-good-charging-symbolic'
History (charge):
1494321853 53,000 charging
History (rate):
1494321853 21,177 charging
Acpi geht nicht ganz so ins Detail, liefert aber immerhin ausreichend Informationen für einen schnellen Überblick. Dazu rufen Sie es mit dem Schalter --details (-i) auf. Das Kommando in Listing 5 beschränkt mithilfe von Grep die Ausgabe auf die Informationen zur ersten Batterie (Battery 0).
Listing 5
$ acpi -i | grep "Battery 0" Battery 0: Charging, 56%, 01:18:07 until charged Battery 0: design capacity 6127 mAh, last full capacity 5502 mAh = 89%
Eine vollständige Übersicht zu allen Energiequellen liefert der Aufruf von acpi --everything (kurz -V) sowie acpitool -Be. Die Ausgabe beinhaltet neben dem Ladestatus der Batterien den Wert des Temperatursensors sowie die Informationen zur Kühlung (Abbildung 4). Letztere Informationen erhalten Sie separat über die beiden Schalter --thermal (kurz -t) sowie --cooling (kurz -c).

Abbildung 4: Neben den Informationen zu den Stromquellen liefert Acpi über weitere Schalter Daten aus dem Temperatursensor sowie Daten zur Kühlung.
Mit dem Schalter --show-empty (-s) zeigt Ihnen Acpi Geräte an, die gerade nicht funktionieren. So identifizieren Sie defekte oder nicht korrekt angeschlossene Systemkomponenten. Die Ausgabe in Listing 6 zeigt, dass mit beiden Batterien etwas nicht stimmt.
Listing 6
$ acpi -s
Battery 0: Unknown, 4%
Battery 1: Charging, 75%, charging at zero rate - will never fully charge.
Lauf- und Ladezeit
Das Tool Ibam errechnet sowohl die verbleibende Laufzeit als auch die vermutliche Ladedauer. In Listing 7 sehen Sie den Aufruf mit dem Schalter --battery, der eine verbleibende Arbeitsdauer von 19 Minuten anzeigt sowie eine Ladezeit von rund 90 Minuten prognostiziert.
Listing 7
$ ibam --battery
Battery time left: 0:19:12
Charge time left: 1:34:48
Adapted charge time left: 1:34:48
Für eine grafische Ausgabe kombinieren Sie Ibam mit Gnuplot [14]. Dabei nutzen Sie den Umstand, dass die Software bei jedem Aufruf die ermittelten Werte zum Ladezustand lokal unter ~/.ibam/ speichert. Über den Schalter --plot wertet es diese Daten aus. Sie erhalten ein Gnuplot-Fenster mit einer Darstellung des Ladezustands (Abbildung 5). Dabei repräsentiert die X-Achse den aufgezeichneten Ladezustand, die Y-Achse zeigt die Zeit.

Abbildung 5: Das Tool ibam speichert die Werte aus jedem Aufruf, und ermöglicht es, diese als Grafik auszugeben.
Alternativ koppeln Sie das Tool über Gkrellm-ibam [15] mit dem Monitoring-Werkzeug Gkrellm [16], um den Ladezustand anzuzeigen. Das Plugin klinkt sich dazu in die Anzeige ein (Abbildung 6).

Abbildung 6: Über ein Plugin dockt Ibam an den Systemmonitor Gkrellm an und zeigt dort die Daten über den Ladezustand.
Fazit
Mit den vier Werkzeugen Upower, Acpi, Acpitool und Ibam behalten Sie den Zustand von Laptop-Akkus jederzeit im Blick. Insbesondere Acpi und Upower liefern erfahrungsgemäß präzise, zuverlässige Werte. Das schützt Sie vor unangenehmen Überraschungen bei der Arbeit mit dem mobilen Rechner.
Danksagung
Der Autor bedankt sich bei Werner Heuser, Arne Wichmann und Justin Kelly für deren Kritik und Anregungen im Vorfeld des Beitrags.
Über den Autor
Frank Hofmann arbeitet von unterwegs – bevorzugt aus Berlin, Genf und Kapstadt – als Entwickler, Trainer und Autor. Er ist zudem Koautor des Debian-Paketmanagement-Buchs (http://www.dpmb.org).
Infos
-
Linux-ACPI-Projekt: https://01.org/linux-acpi
-
Acpi.info: http://www.acpi.info
-
APM, ACPI, PMU: Werner Heuser, “Power Management on Linux Laptops and Notebooks”, http://tuxmobil.org/apm_linux.html
-
ACPI-Howto: Emma Jane Hogbin, “ACPI Howto”, http://www.tldp.org/HOWTO/ACPI-HOWTO/
-
UEFI: https://de.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface
-
Proc-Filesystem: https://de.wikipedia.org/wiki/Procfs
-
ACPI-Tipps: “How to make ACPI work”, ThinkWiki, http://www.thinkwiki.org/wiki/How_to_make_ACPI_work
-
Lenovo X250 im ThinkWiki: http://thinkwiki.de/X250
-
Upower: https://upower.freedesktop.org
-
Acpiclient: https://sourceforge.net/projects/acpiclient/
-
Batterie-Plugin für XFCE4: http://goodies.xfce.org/projects/panel-plugins/xfce4-battery-plugin
-
Gnuplot: http://www.gnuplot.info
-
Gkrellm-ibam (Debian): https://packages.debian.org/jessie/gkrellm-ibam
-
Gkrellm: http://gkrellm.srcbox.net





