habt Ihr Euch mal gefragt, wie die Anzeige des Batteriezustandes im Desktop zustande kommt?
Abfrage der Batterie mit upower
Als erstes brauchen wir mal ein Gerät mit Batterie, in diesem Beitrag ein altes Surface Tablet, da bekomme ich am schnellsten Ladezustandsänderungen hin 😉
Bevor wir uns upower zuwenden, erst einmal der klassische konsolenbasierte Zugang über /sys .Das ist nicht der intuitivste Weg, aber ggf. noch brauchbar, wenn man mal eben die Batterie per Script abfragen will.
Der Weg für Hardcorefans geht über /sys
Im Pfad /sys/class/power_supply/ finden wir zwei Links, einen zum Adapter ADP1, daß ist das Ladegerät selbst und völlig uninteressant, und die Batterie BAT1, die wesentlich interessantere Ausgaben hat:
lrwxrwxrwx. 1 root root 0 18. Sep 2025 ADP1 -> ../../devices/pci0000:00/0000:00:1f.0/PNP0C09:00/ACPI0003:00/power_supply/ADP1 lrwxrwxrwx. 1 root root 0 18. Sep 2025 BAT1 -> ../../devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:19/PNP0C09:00/PNP0C0A:00/power_supply/BAT1
Wie man sehen kann, ist das /sys Filesystem nicht gerade verständlich aufgebaut, deswegen lassen wir den Teil weg, denn genau dafür sind die Links da, um es etwas leichter zu machen.
In diesem BAT1 Verzeichnis finden wir einige lesbare Dateien:
-rw-r--r--. 1 root root 4096 18. Sep 08:34 alarm -r--r--r--. 1 root root 4096 18. Sep 08:25 capacity -r--r--r--. 1 root root 4096 18. Sep 08:34 capacity_level -r--r--r--. 1 root root 4096 18. Sep 08:25 cycle_count lrwxrwxrwx. 1 root root 0 18. Sep 08:25 device -> ../../../PNP0C0A:00 -r--r--r--. 1 root root 4096 18. Sep 08:25 energy_full -r--r--r--. 1 root root 4096 18. Sep 08:25 energy_full_design -r--r--r--. 1 root root 4096 18. Sep 08:25 energy_now drwxr-xr-x. 2 root root 0 18. Sep 08:34 extensions drwxr-xr-x. 3 root root 0 18. Sep 2025 hwmon2 -r--r--r--. 1 root root 4096 18. Sep 08:25 manufacturer -r--r--r--. 1 root root 4096 18. Sep 08:25 model_name drwxr-xr-x. 2 root root 0 18. Sep 08:34 power -r--r--r--. 1 root root 4096 18. Sep 08:25 power_now -r--r--r--. 1 root root 4096 18. Sep 08:25 present -r--r--r--. 1 root root 4096 18. Sep 08:25 serial_number -r--r--r--. 1 root root 4096 18. Sep 08:25 status lrwxrwxrwx. 1 root root 0 18. Sep 2025 subsystem -> ../../../../../../../../../class/power_supply -r--r--r--. 1 root root 4096 18. Sep 08:25 technology -r--r--r--. 1 root root 4096 18. Sep 08:25 type -rw-r--r--. 1 root root 4096 18. Sep 2025 uevent -r--r--r--. 1 root root 4096 18. Sep 08:25 voltage_min_design -r--r--r--. 1 root root 4096 18. Sep 08:25 voltage_now
Ihr habt es schon erraten, von der Seriennummer über das Batteriemodell zum aktuellen Ladestrom ist alles dabei was das Batteriefanherz so begeistert 😉 Wenn man sich nicht jede Datei einzeln ansehen will, dann ist uevent Eurer Freund, denn das ist eine Zusammenfassung der Werte. Beschreibbare Dateien können Veränderungen an den Geräten durchführen z.B. LEDs ein und ausschalten. Das zieht sich durch den ganzen Sys-Gerätepark.
DEVTYPE=power_supply
POWER_SUPPLY_NAME=BAT1
POWER_SUPPLY_TYPE=Battery
POWER_SUPPLY_STATUS=Charging
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_TECHNOLOGY=Li-ion
POWER_SUPPLY_CYCLE_COUNT=381
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=7500000
POWER_SUPPLY_VOLTAGE_NOW=8648000
POWER_SUPPLY_POWER_NOW=6270000
POWER_SUPPLY_ENERGY_FULL_DESIGN=38152000
POWER_SUPPLY_ENERGY_FULL=33285000
POWER_SUPPLY_ENERGY_NOW=31485000
POWER_SUPPLY_CAPACITY=94
POWER_SUPPLY_CAPACITY_LEVEL=Normal
POWER_SUPPLY_TYPE=Battery
POWER_SUPPLY_MODEL_NAME=X910528
POWER_SUPPLY_MANUFACTURER=DYN
POWER_SUPPLY_SERIAL_NUMBER=XXXXXXXXXXX
Wie man sieht, zur Zeit ist der Ladestand der Batterie bei 94 % und sie wird mit rund 6 Watt geladen.
„Aber da stehen doch nur blanke Zahlen, woher weißt Du jetzt, daß das 6 Watt sind?“
POWER=> µW ( 1/1.000.000 tel Watt )
ENERGY=> µWh
VOLTAGE=> µV
Woher wissen wir, daß das stimmt?
Wir checken es gegen mit upower 🙂
upowerd ist ein ein Dienst, der sich um die Energieangelegenheiten kümmert und alle Batterien oder batteriebetriebenen Geräte erfasst und deren Verhalten protokolliert. Schritt 1 für Euch wäre also upower zu installieren (Fedora) und den Service zu starten: dnf install upower -y && systemctl enable –now upower
Zum Glück für Euch ist der bei den meisten Distros per Default dabei, weil alle Desktopumgebungen ( Gnome, Cinnamon etc. ) den haben wollen für die Energiestatistiken.
Batterien & Geräte finden
upower listet Euch alle Informationsquellen auf. Das DisplayDevice gibt es immer, selbst auf Desktop-PCs.
# upower -e
/org/freedesktop/UPower/devices/battery_BAT1
/org/freedesktop/UPower/devices/line_power_ADP1
/org/freedesktop/UPower/devices/DisplayDevice
Das DisplayDevice ist eine Art Default Gerät, das kann man immer anzeigen und im Falle des Tablets ist das mit der Batterie identisch. Es ist allerdings etwas aufgeräumter als die individualanzeigen der beiden Geräte ADP1 und BAT1, was der Sache aber nicht abträglich ist, weil alles wesentliche drin ist:
# upower -i /org/freedesktop/UPower/devices/DisplayDevice
power supply: yes
updated: Do 18 Sep 2025 08:55:45 CEST (19 seconds ago)
has history: no
has statistics: no
battery
present: yes
state: charging
warning-level: none
energy: 32,947 Wh
energy-full: 33,285 Wh
energy-rate: 3,75 W
charge-cycles: N/A
time to full: 5,4 minutes
percentage: 98%
icon-name: ‚battery-full-charging-symbolic‘
Wie man sehen kann schlägt die Ausgabe auch das anzuzeigende Symbol für den Desktop vor 🙂
Vergleichen wir das mit der Detailansicht der Batterie
# upower -i /org/freedesktop/UPower/devices/battery_BAT1
native-path: BAT1
vendor: DYN
model: X910528
serial: XXXXXXXXX
power supply: yes
updated: Do 18 Sep 2025 08:59:15 CEST (14 seconds ago)
has history: yes
has statistics: yes
battery
present: yes
rechargeable: yes
state: charging
warning-level: none
energy: 32,947 Wh
energy-empty: 0 Wh
energy-full: 33,285 Wh
energy-full-design: 38,152 Wh
energy-rate: 3,427 W
voltage: 8,672 V
charge-cycles: 381
time to full: 5,9 minutes
percentage: 98%
capacity: 87,2431%
technology: lithium-ion
icon-name: ‚battery-full-charging-symbolic‘
History (rate):
1758178755 3,427 charging
1758178725 3,472 charging
1758178695 3,510 charging
1758178665 3,555 charging
Da finden wir am Ende sogar noch eine Historie des Lade- oder Entladevorhangs und können so Vorhersagen zur Laufzeit treffen.
Jetzt kann upower in der Konsole aber noch mehr, weil man ja nicht ständig den Befehl benutzen will, kann man sich auch alle Updates zu Ent/Ladevorgängen anzeigen lassen: upower –monitor –monitor-detail
Sobald es was Neues gibt, bekommt ihr die obige Anzeige des jeweiligen Gerätes angezeigt, was notorisch Ungeduldigen in die Hände spielt 😉
Bluetooth Headset Ausgabe
Der Monitormodus entdeckt auch, wenn ein neues Gerät, in dem Fall ein BT Headset, hinzugefügt wird:
[09:05:40.286] device added: /org/freedesktop/UPower/devices/headset_dev_XXXXXXXXXXXXXX
native-path: /org/bluez/hci0/dev_XXXXXXXXXXXX
model: Soundcore A1
serial: XXXXXXXXXXXXXXXXXXXX
power supply: no
updated: Do 18 Sep 2025 09:05:40 CEST (0 seconds ago)
has history: yes
has statistics: no
headset
warning-level: none
percentage: 90%
icon-name: ‚battery-missing-symbolic‘
History (charge):
1758179140 0,000 unknown
History (rate):
1758179140 0,000 unknown
Entschuldigt die XXXX Orgie, aber die MAC von dem Gerät geht das Internet nichts an 😉
Wir sehen hier wie versprochen auch den Ladezustand des Headsets. Mit dem Iconnamen bin ich nicht einverstanden, weil sich das irgendwie mit „Prozent: 90%“ nicht in Einklang bringen lässt.
Den upowerd könnt Ihr als Programm auch per DBUS-API abfragen, mehr Infos dazu findet Ihr hier: