ROG Auto-Power & Live Wattage Tray Indicator
„Wer seine Hardware unter Linux nicht nur benutzen, sondern bis auf die Ebene der Kernel-Register und PCIe-Schlafzustände verstehen will, baut sich seine Werkzeuge früher oder später selbst.“
Moderne Gaming- und Workstation-Laptops wie das ASUS ROG Strix G17 (G713RM) mit AMD Ryzen 7 6800H (Radeon 680M iGPU) und dedizierter NVIDIA GeForce RTX 3060 Mobile vereinen zwei völlig gegensätzliche Welten: Am 240-Watt-Netzteil sind sie kompromisslose Rechenmaschinen mit 240-Hz-Panel; unterwegs im Akkubetrieb oder an einem kompakten USB-C-PD-Ladegerät hingegen entscheidet jedes eingesparte Watt über Stunden an Laufzeit.
Unter Linux existieren zwar exzellente Bausteine wie power-profiles-daemon, supergfxd und asus-nb-wmi, doch im Alltag fehlte mir das verbindende Glied: Ein Dienst, der vollautomatisch zwischen Akkubetrieb, USB-C Power Delivery und 240W-Netzteil unterscheidet, Hardware-Parameter tiefgreifend optimiert und mir gleichzeitig in Echtzeit im KDE System-Tray zeigt, wie viel Leistung tatsächlich ins Gerät fließt, wie viel davon im Akku landet und was das System verbraucht.
Aus diesem Anspruch ist rog-auto-power entstanden – veröffentlicht als freie Software unter der GPL-3.0-or-later.
1. Das Problem: 37,8 Watt im Leerlauf und eine schlaflose GPU
Im Auslieferungszustand zog das Notebook unter Linux selbst im vermeintlichen Leerlauf auf dem Desktop rund 37,8 Watt aus dem Akku – genug, um den Akku in knapp anderthalb Stunden zu leeren. Die Ursachen lagen auf mehreren Ebenen:
- Hardware-MUX &
D3cold: Stand der Hardware-MUX (gpu_mux_mode) auf der dedizierten NVIDIA-Grafikkarte oder wurde die Karte im Hybrid-Modus regelmäßig durch Abfragetools wienvidia-smigeweckt, verhinderte dies den Eintritt in den tiefen PCIe-SchlafzustandD3cold. Allein die wache RTX 3060 kostete im Leerlauf rund 10 bis 12 Watt. - 240-Hz-Panel & Panel-Overdrive: Ein QHD-Panel bei 240 Hz mit aktivierter Overdrive-Beschleunigung und 100 % Helligkeit genehmigt sich ein Vielfaches dessen, was bei 60 Hz und 50 % Helligkeit nötig ist.
- USB-C Power Delivery Überlastung: Schließt man unterwegs ein leichtes 45W- oder 65W-USB-C-Netzteil an, behandelt Linux dies standardmäßig genau wie das große 240W-Netzteil, schaltet auf Höchstleistung und überlastet das Ladegerät sofort.
2. Die Lösung: Drei Zustände, ein autonomer Daemon
rog-auto-power überwacht über UPower D-Bus-Signale und das Kernel-sysfs (/sys/class/power_supply/) kontinuierlich die anliegende Stromquelle und schaltet das gesamte System nahtlos um:
| Stromquelle | Energieprofil | Bildwiederholrate | Helligkeit | Tastatur-LED | Hardware-Tuning (sysfs) |
|---|---|---|---|---|---|
⚡ Akkubetrieb (battery) |
Stromsparmodus |
60 Hz | 50 % | Stufe 1 | CPU-Turbo Aus, Panel-Overdrive Aus, PCIe PM auto, WLAN-Sparmodus Ein (~12,4 W Leerlauf) |
🔌 USB-C PD (usbc) |
Ausgeglichen |
60 Hz | 75 % | Stufe 1 | Schützt 45W/65W USB-C-Netzteile vor Überlastung (~0,45 C schonendes Laden) |
🚀 240W-Netzteil (ac) |
Höchstleistung |
240 Hz | 100 % | Stufe 3 | Voller CPU-Turbo & Panel-Overdrive (~0,95 C Schnellladen) |
Durch die Kombination aus Hybrid-MUX-Modus, reinem sysfs-Monitoring ohne nvidia-smi-Wakeups und den Hardware-Tunings sank der reale Desktop-Verbrauch im Akkubetrieb von 37,8 W auf 12,45 W – eine Verdreifachung der Akkulaufzeit auf rund 5,5 bis 6 Stunden.
3. Echtzeit-Energiebilanz im KDE System-Tray
Statt einer bloßen Prozentanzeige zeichnet rog-auto-power alle zwei Sekunden ein dynamisches, zweizeiliges Badge-Icon direkt in die KDE-Systemleiste und schlüsselt die Leistungsflüsse physikalisch sauber nach dem Prinzip Eingang Gesamt = Akku + System auf:
⚡ Energie-Bilanz (Echtzeit)
🔌 Eingang Gesamt: 54.5 W [USB-C PD (Ladebetrieb) (Max 60W)]
├── 🔋 Akku: +30.3 W (0.38 C • Lädt • 45%/80% • ~0.8h bis 80%)
└── 💻 System: 24.2 W (Laufender Betrieb)
↳ CPU/iGPU: 17.2W | RTX 3060: 0.0W | Bildschirm/Mainboard: 7.0W
- Kein Aufwecken der NVIDIA-GPU: Der Schlafzustand der RTX 3060 wird ausschließlich passiv über
/sys/bus/pci/devices/0000:01:00.0/power/runtime_statusgeprüft. Solange dortsuspendedsteht, bleibt die Karte bei exakt 0,0 W im Tiefschlaf. - AMD APU Package Power (
PPT): Die reale Leistungsaufnahme von Prozessor und integrierter Radeon 680M wird direkt aus demamdgpu-hwmon-Sensor gelesen.
4. Akku-Schutzmodus, C-Rate & GPU/MUX-Steuerung
Direkt über das Rechtsklick-Menü des Tray-Icons lassen sich alle wesentlichen Hardware-Funktionen steuern:
- Echtzeit-C-Raten-Anzeige (
W / Wh): Zeigt jederzeit die chemische Belastung des Akkus beim Laden und Entladen (z. B.~0,45 Cüber USB-C PD vs.~0,95 Cam 240W-Netzteil). - Sofortiger
0.0 CDirektbetrieb (Bypass): Stoppt den Ladevorgang mit einem Klick exakt beim aktuellen Akkustand, sodass das Notebook zu 100 % direkt vom Netzteil gespeist wird. - Lade-Limits (60 % / 80 % / 100 %): Schreibt die gewünschte Ladeschwelle persistent in
/sys/class/power_supply/BAT0/charge_control_end_threshold. - GPU- & Hardware-MUX-Umschalter: Direkter Wechsel zwischen
Integrated(nur AMD),Hybrid(AMD + NVIDIA bei Bedarf viaprime-run) undAsusMuxDgpu(direkter Hardware-MUX auf die NVIDIA-Karte). - Automatische Lokalisierung (
DE/EN): Erkennt die Systemsprache automatisch und stellt Oberfläche, Benachrichtigungen sowie die CLI-Ausgabe (--status,--version) wahlweise komplett auf Deutsch oder Englisch dar.
5. Quellcode & Installation
Das Projekt folgt den offiziellen Linux-FHS- und Arch-Packaging-Richtlinien (Makefile, PKGBUILD, systemd-User-Unit, Freedesktop .desktop-Eintrag) und steht unter GPL-3.0-or-later auf GitHub bereit:
- GitHub Repository & Releases (
v0.1.2): https://github.com/Gigoslav/rog-auto-power
— Gigs