TLP - Linux Stromsparen
Was ist TLP?
Mit jedem Release werden in den Linux-Distributionen weitere Verbesserungen des Stromverbrauchs beim Einsatz auf Laptops implementiert, so daß mit einer einfachen Standardinstallation bereits recht gute Verbrauchswerte zu erzielen sind.
Die danach noch verbleibenden Möglichkeiten des Stromsparens sind recht leicht im WWW mittels einer Suchmaschine aufzufinden. Das Auswählen und Anwenden der jeweils zur eigenen Hardware und Linux-Distribution passenden Einstellungen aus der gebotenen Vielfalt von Wiki-, Blog- und Foren-Beiträgen, fordert dem Anwender hingegen oft fortgeschrittene Kenntnisse ab.
Hier soll TLP Abhilfe schaffen, indem es Linux die Feinheiten des Stromsparens beibringt, ohne daß der Anwender allzuviel Detailwissen mitbringen muß.
TLP ersetzt nicht das vorhandene Power Management, sondern ergänzt es. Dazu wird TLP beim Systemstart und bei jedem Wechsel der Stromquelle von Power Management aufgerufen und nimmt dann seine Einstellungen vor.
TLP-Pakete sind verfügbar für Arch, Debian, Fedora, Gentoo, openSUSE und Ubuntu. Wersich dafür interessiert TLP für andere Distributionen zu paketieren, sollte einen Blick in die TLP Programmdokumentation werfen.
Hinweis: TLP ist für alle Laptop-Fabrikate geeignet, das Einstellen der Akkuladeschwellen ist jedoch nur für IBM/Lenovo ThinkPads verfügbar.
Funktionen
Einstellungen in Abhängigkeit von der Stromquelle
Folgende Einstellungen, die auch die relevanten Empfehlungen des Werkzeugs Powertop umfassen, werden in Abhängigkeit von der aktiven Stromquelle (Akku/Netzteil) automatisch vorgenommen:
- Kernel-Laptop-Mode und Timeouts für das Zurückschreiben der Dateisystempuffer auf die Festplatte
- Prozessortakt-Steuerung
- Verbrauchsbewusster Prozess-Scheduler für Multi-Core/Hyper-Threading-CPUs
- Advanced Power Management Level und Spindown Timeout (je Festplatte)
- SATA Aggressive Link Power Management (ALPM)
- PCI Express Active State Power Management (PCIe ASPM) – ab Kernel 2.6.35
- Runtime Power Management für PCI(e)-Bus-Geräte – ab Kernel 2.6.35
- Radeon KMS Taktfrequenzsteuerung – ab Kernel 2.6.35, nicht fglrx
- WLAN (WiFi) Stromsparmodus – abhängig von Kernel und Treiber
- Optisches Laufwerk in Wechselschacht bzw. UltraBay ausschalten (beim Wechsel zum Akkubetrieb)
Weitere Einstellungen
- I/O-Scheduler (je Festplatte)
- USB Auto Suspend mit Geräte-Blacklist (Eingabegeräte werden automatisch ausgespart)
- Audio Stromsparmodus – für Intel HDA- und AC97-Sound
- Integriertes Bluetooth, WLAN und WWAN (UMTS) selektiv beim Systemstart bzw. beim Herunterfahren ein- bzw. ausschalten
- Funkgerätezustand beim Systemstart wiederherstellen (wie beim letzten Herunterfahren bzw. Neustart)
- Radio Device Wizard: Funkgeräte ereignisgesteuert ein- und ausschalten (Netzwerkverbindung/-trennung, An-/Abdocken)
- Wake-on-LAN deaktivieren
- Schaltzustand Ein/Aus des integrierten WWAN nach Suspend und Hibernation wiederherstellen
- Undervolting von Intel-Prozessoren – erfordert den Ubuntu tp-Kernel oder einen Kernel mit PHC-Patch
- Akku-Ladeschwellen – nur bei ThinkPads
- Akku rekalibrieren – nur bei ThinkPads
Installieren
Voraussetzungen
- Eigene Stromspar-Einstellungen oder -Skripte z.B. in /etc/rc.local sind deaktiviert, ansonsten sind schwer vorhersagbare Resultate zu erwarten.
- Das Paket laptop-mode-tools ist nicht installiert.
Ubuntu 10.04 bis 12.04
sowie Linux Mint 9 bis 13, nicht jedoch LMDE (siehe Debian)
In die Ubuntu-Paketquellen ist das TLP-PPA einzutragen mit folgenden Terminalkommandos:
sudo add-apt-repository ppa:linrunner/tlp sudo apt-get update
Folgende Pakete sind zu installieren:
- tlp (PPA) – Stromsparfunktionen von TLP
Hinweis für Ubuntu 10.04: es wird automatisch das Ubuntu-Paket pm-utils-powersave-policy deinstalliert.
- tlp-rdw (PPA) – optional, Funkgerätesteuerung (Radio Device Wizard)
- tp-smapi-dkms (universe) – optional nur für ThinkPads, tp-smapi ermöglicht das Einstellen der Akkuladeschwellen und erweiterte Statusanzeigen.
- smartmontools (main) – optional, ermöglicht die Anzeige von SMART-Daten für die Festplatte(n) durch tlp-stat.
- ethtool (main) – optional, ermöglicht es Wake On LAN zu deaktivieren.
Die Pakete installiert man über die Paketverwaltung (Ubuntu Software Center, Synaptic, ...) oder im Terminal:
sudo apt-get install --no-install-recommends tlp tlp-rdw tp-smapi-dkms smartmontools ethtool
Debian 6.0 und höher
sowie Linux Mint Debian Edition (LMDE)
Die folgenden Schritte sind - wie bei Debian üblich - in einer Root-Shell auszuführen.
Als Paketquelle wird das TLP-PPA für Ubuntu 10.04 verwendet. Dafür ist folgende Zeile in /etc/apt/sources.list einzutragen:
deb http://ppa.launchpad.net/linrunner/tlp/ubuntu lucid main
Anschließend ist der Public-Key des TLP-PPA zu hinterlegen:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 02D65EFF
Schlägt das vorstehende Kommando fehl, probiert man es mit einem anderen Keyserver:
apt-key adv --keyserver pool.sks-keyservers.net --recv-keys 02D65EFF
Zuletzt führt man ein Update der Paketquellen durch:
apt-get update
Folgende Pakete sind zu installieren:
- tlp (PPA) – Stromsparfunktionen von TLP
- tlp-rdw (PPA) – optional, Funkgerätesteuerung (Radio Device Wizard)
- tp-smapi-dkms (main) - optional nur für ThinkPads, ermöglicht das Einstellen der Akkuladeschwellen und erweiterte Statusanzeigen.
- smartmontools (main) - optional, ermöglicht die Anzeige von SMART-Daten für die Festplatte(n) durch tlp-stat.
- ethtool (main) - optional, ermöglicht es Wake-On-LAN zu deaktivieren.
Die Pakete installiert man über die Paketverwaltung oder im Terminal:
apt-get install --no-install-recommends tlp tlp-rdw tp-smapi-dkms smartmontools ethtool
Arch Linux
TLP für Arch Linux ist über AUR erhältlich. Die Installation ist im Arch Wiki beschrieben.
Gentoo
Die Installation von TLP für Gentoo ist im Gentoo Wiki beschrieben.
openSUSE 11.4 und höher
Zur Installation von TLP auf openSUSE müssen die folgenden Schritte in einer Root-Shell ausgeführt werden.
Hinzufügen von Repositories:
openSUSE 11.4
zypper ar -f http://download.opensuse.org/repositories/home:/cdersch:/TLP/openSUSE_11.4/home:cdersch:TLP.repo
Falls Contrib Repo noch nicht aktiv:
zypper ar -f http://download.opensuse.org/repositories/openSUSE:/11.4:/Contrib/standard/openSUSE:11.4:Contrib.repo
openSUSE 12.1
zypper ar -f http://download.opensuse.org/repositories/home:/cdersch:/TLP/openSUSE_12.1/home:cdersch:TLP.repo
Falls Contrib Repo noch nicht aktiv:
zypper ar -f http://download.opensuse.org/repositories/openSUSE:/Factory:/Contrib/openSUSE_12.1/openSUSE:Factory:Contrib.repo
openSUSE Tumbleweed
zypper ar -f http://download.opensuse.org/repositories/home:/cdersch:/TLP/openSUSE_Tumbleweed/home:cdersch:TLP.repo
Paketquellen aktualisieren:
zypper ref
Folgende Pakete sind zu installieren:
- tlp (TLP Repo)
- tlp-rdw (TLP Repo) - optional, Radio Device Wizard, erfordert NetworkManager
- tp_smapi-kmp-desktop (Contrib Repo) - optional nur für ThinkPads, ermöglicht das Einstellen der Akkuladeschwellen und erweiterte Statusanzeigen. Für Tumbleweed derzeit nicht verfügbar.
Hinweis: Paketname muss ggf. in tp_smapi-kmp-VARIANTE angepaßt werden, die Kernelvariante lässt sich mit uname -r ermitteln.
- smartmontools (openSUSE Repo) - optional, ermöglicht die Anzeige von SMART-Daten für die Festplatte(n) durch tlp-stat.
- ethtool (openSUSE Repo)- optional, ermöglicht es Wake On LAN zu deaktivieren.
Die Pakete installiert man im Terminal als root mit folgendem Kommando (tp_smapi-Paketname ist ggf. anzupassen):
zypper in tlp tlp-rdw tp_smapi-kmp-desktop smartmontools ethtool
Fedora 16 und höher
Zur Installation von TLP für Fedora müssen die folgenden Schritte in einer Root-Shell ausgeführt werden.
Hinzufügen des TLP- und des RPM-Fusion-Repositories per yum (Variante 1 - empfohlen):
yum localinstall --nogpgcheck http://repo.linrunner.de/fedora/tlp/repos/releases/tlp-release-1.0-0.noarch.rpm yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
Hinzufügen der Repositories per rpm (Variante 2):
wget http://repo.linrunner.de/fedora/tlp/repos/releases/tlp-release-1.0-0.noarch.rpm wget http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm rpm -ivh tlp-release-*.noarch.rpm rpmfusion-free-release-*.noarch.rpm
Folgende Pakete sind zu installieren:
- tlp (TLP Repo)
- tlp-rdw (TLP Repo) - optional, Radio Device Wizard, erfordert NetworkManager
- akmod-tp_smapi (TLP + RPM Fusion Repo) - optional nur für ThinkPads, ermöglicht das Einstellen der Akkuladeschwellen und erweiterte Statusanzeigen.
yum install tlp tlp-rdw akmod-tp_smapi
Kernel-Bootoptionen
Mit Kernel 2.6.39 bzw. 3.0 wurden einige Stromspartechniken wegen Stabilitätsproblemen mit bestimmter Hardware per Default ausgeschaltet. Leider führt dies bei einigen Notebooks – insbesondere den aktuellen Modellen mit Sandy-Bridge-CPU/Chipsatz – zu einem teilweise deutlich erhöhten Stromverbrauch. Mit den in diesem Abschnitt beschriebenen Kernel-Bootoptionen lassen sich diese Techniken wieder aktivieren.
Achtung: der Einsatz dieser Optionen kann bei einigen Systemen zu Instabilität oder zu Darstellungsproblemen führen, sie sollten daher nur von erfahrenen Linux-Benutzern angewendet werden.
Intel-Grafik (Kernel 3.0 und höher, nicht Ubuntu 12.04)
i915.i915_enable_rc6=1
Aktiviert den RC6-Stromsparmodus des Intel-Grafikchips. Hohes Sparpotential bei Sandy-Bridge-Hardware. Kann zum Hängenbleiben der Grafikdarstellung führen.
Hinweis: ab Ubuntu 12.04 ist diese Bootoption nicht mehr nötig.
Allgemein (nur Kernel 2.6.39, nicht Ubuntu 11.10 und höher)
pcie_aspm=force
Aktiviert das PCIe Active State Power Management. Kann zum Hängenbleiben des Systems führen.
Hinweis: in Kernel 3.0 (Ubuntu 11.10) und Kernel 3.2 (Ubuntu 12.04) ist diese Bootoption nicht mehr nötig. Dies gilt trotz folgender Ausgabe von tlp-stat:
+++ PCIe Active State Power Management /sys/module/pcie_aspm/parameters/policy = default (disabled by kernel)
Boot-Konfiguration
Aktuelle Distributionen verwenden GRUB2 für den Bootvorgang. Die Bootoptionen sind in /etc/default/grub hinzuzufügen (Beispiel):
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pcie_aspm=force i915.i915_enable_rc6=1"
Mehrere Optionen sind mit Leerzeichen zu trennen.
Nach jeder Änderung sind die Bootoptionen stets mit
sudo update-grub
und einem Reboot zu aktivieren.
Hinweis: es ist empfehlenswert die Bootoptionen jeweils einzeln hinzuzufügen und zu testen um bei auftretenden Probleme den Verursacher leichter eingrenzen zu können.
Einstellungen vornehmen
Alle TLP-Einstellungen finden sich in /etc/default/tlp – siehe TLP Einstellungen.
Start
Sind Installation und Konfiguration abgeschlossen, aktiviert sich TLP automatisch beim Systemstart.
Alternativ startet man TLP sofort mit dem Kommando
sudo tlp start
Geänderte Einstellungen können ebenfalls auf diesem Wege sofort aktiviert werden.
Check
Um zu prüfen ob TLP korrekt arbeitet, benutzt man das Kommando
sudo tlp-stat
und schaut in der Ausgabe nach
+++ System Status TLP power save = enabled power source = ...
Hinweis: es gibt keinen TLP-Hintergrund-Prozess oder -Dämon den man mit ps anzeigen könnte.
Terminal-Kommandos
Hinweis: alle in diesem Kapitel beschriebenen, mit sudo beginnenden Kommandos, können ohne sudo in einer root-Shell ausgeführt werden.
wifi, bluetooth, wwan
Integriertes WLAN, Bluetooth und WWAN (UMTS) lassen sich im Terminal ein-, aus- und umschalten bzw. bei Aufruf ohne Parameter abfragen:
wifi [ on | off | toggle ]
Hinweis: für Intel 2100b-, 2200bg- und 2915abg-Karten muß das Kommando mit sudo
oder in einer Root-Shell aufgerufen werden.
bluetooth [ on | off | toggle ]
wwan [ on | off | toggle ]
Hinweis: Voraussetzung für die gezeigten Funktionen ist, daß die Hardware das rfkill-Framework des Kernels unterstützt (Ausnahme: Intel 2100/2200/2915). Zur Überprüfung gibt man
rfkill list
ein und schaut ob die gewünschte Geräteklasse wifi/bluetooth/wwan in der Auflistung erscheint (für Debian ist zuvor das Paket rfkill zu installieren).
tlp-stat
Statusbericht der Konfiguration und aller aktiven Einstellungen erstellen:
sudo tlp-stat
Nur Akkuinformationen anzeigen:
sudo tlp-stat -b sudo tlp-stat --battery
Nur Konfiguration anzeigen:
tlp-stat -c tlp-stat --config
Nur Schaltzustand der Funkgeräte anzeigen:
tlp-stat -r tlp-stat --rfkill
Nur Temperaturen und Lüfterdrehzahl anzeigen:
tlp-stat -t tlp-stat --temp
Traceausgabe aus /var/log/debug anzeigen:
tlp-stat -T tlp-stat --trace
tlp
Einstellungen für die momentane Stromquelle aktivieren/testen
sudo tlp start
Einstellungen für Akkubetrieb aktivieren
(unabhängig von der tatsächlichen, momentanen Stromquelle)
sudo tlp bat
Einstellungen für Betrieb am Netzteil aktivieren
(unabhängig von der tatsächlichen, momentanen Stromquelle)
sudo tlp ac
Stromspar-Einstellungen für WLAN aktivieren
(nur für unterstützte Adapter bzw. Kernel)
sudo tlp wifi
Auto Suspend für alle angeschlossenen USB-Geräte aktivieren
(außer in Blacklist enthaltene und Eingabegeräte)
sudo tlp usb
Optisches Laufwerk in Wechselschacht/Ultrabay ausschalten
sudo tlp bayoff
Hinweise zu bayoff:
- Das Laufwerk kann über den Wechselschacht-/Ultrabay-Entriegelungsschieber bzw. bei neueren Modellen über den Auswurfknopf am Laufwerk wieder eingeschaltet werden.
- Alle anderen Geräte in Wechselschacht/UltraBay, insbesondere Festplatten, werden durch dieses Kommando nicht ausgeschaltet.
Akku-Ladeschwellen vorübergehend ändern
nur für ThinkPads
Die Ladeschwellen werden auf die angegebenen Werte gesetzt (nur für ThinkPads, nicht SL, L- und Edge-Baureihe).
Wertebereich von 1 bis 100; START_SCHWELLE muß kleiner als die STOP_SCHWELLE - 3 sein. Gibt man keine Parameter an, werden die in den Einstellungen angegebenen Schwellen für den Hauptakku (BAT0) verwendet.
sudo tlp setcharge [ START_SCHWELLE STOP_SCHWELLE [ BAT0 | BAT1 ] ]
Die geänderten Akku-Ladeschwellen werden beim nächsten Systemstart wieder auf die in den Einstellungen vorgegebenen Werte gesetzt.
Akku-Ladeschwellen vorübergehend auf Maximum setzen
nur für ThinkPads
Die Ladeschwellen werden auf Werkseinstellungen 96/100 % gesetzt. Dient dazu den Akku voll aufzuladen.
sudo tlp fullcharge [ BAT0 | BAT1 ]
Die geänderten Akku-Ladeschwellen werden beim nächsten Systemstart wieder auf die in den Einstellungen vorgegebenen Werte gesetzt.
Akku im Betrieb am Netzteil entladen
nur für ThinkPads
sudo tlp discharge [ BAT0 | BAT1 ]
Mit dem Parameter BAT0
(Default) wird der Hauptakku, mit BAT1
der Ultrabayakku entladen. Das Kommando zeigt laufend die verbleibende Kapazität und Entladezeit an. Das Entladen kann jederzeit mit Strg+C abgebrochen werden.
Hinweise:
- das Kommando funktioniert nur mit angeschlossenem Netzteil
- während des Entladevorgangs kann ganz normal mit dem ThinkPad gearbeitet werden
- bei Problemen mit dieser Funktion bitte auch die TLP FAQ beachten
Akku rekalibrieren
nur für ThinkPads
Hinweis: der Rekalibrierungsvorgang sorgt dafür, daß die Elektronik im Akku Ladezustand und Kapazität korrekt wiedergibt. Verschlissene oder defekte Akkuzellen werden dadurch nicht repariert.
sudo tlp recalibrate [ BAT0 | BAT1 ]
Das Kommando faßt die Funktionen fullcharge und discharge zusammen. Zunächst werden die Ladeschwellen auf Werkseinstellungen 96/100 % gesetzt, dann der Akku vollständig entladen.
Disk ID
tlp diskid
Ermittelt die IDs der Festplatten zur Angabe im Konfigurationsparameter DISK_DEVICES.
Statusbericht
sudo tlp stat
Entspricht tlp-stat.
run-on-ac, run-on-bat
Bedingtes Starten von Befehlen in Abhängigkeit von der aktiven Stromquelle:
run-on-ac befehl parameter ... run-on-bat befehl parameter ...
Der befehl
wird nur ausgeführt, wenn die passende Stromquelle (-ac
für das Netzteil, -bat
für den Akku) aktiv ist. Dies kann man z.B. in "System -> Einstellungen -> Startprogramme" verwenden.
Manpages
Details aller Befehle erhält man per:
man <befehl>
Lizenz
TLP ist nach der GPL Version 2 lizensiert. Zum Download des Quellcodes siehe die TLP Programmdokumentation.
Support
FAQ
Erste Anlaufstation bei Fragen und Problemen ist die TLP FAQ.
Thinkpad-Forum
Für darüber hinaus gehende Fragen und Probleme gibt es einen TLP-Support-Thread im Thinkpad-Forum (selbstverständlich sind dort auch Nutzer anderer Fabrikate willkommen). Bitte bei Anfragen dort stets die vollständige Ausgabe von (möglichst im Akkubetrieb)
sudo tlp-stat
per http://paste.ubuntuusers.de beifügen.
Trace-Modus
Bei komplexen Fehlersituationen kann durch folgende Einstellung in /etc/default/tlp der Trace-Modus aktiviert werden:
TLP_DEBUG="bat lock nm path pm rf run sysfs udev usb"
Die gesammelten Informationen können jederzeit mit
grep "tlp" /var/log/debug
ausgelesen werden.
Falls der Befehl keine Ausgabe erzeugt, muss die Konfiguration von rsyslogd ergänzt werden. Dazu legt man die Datei /etc/rsyslog.d/90-debug.conf mit folgendem Inhalt an:
*.=debug;\ auth,authpriv.none;\ news.none;mail.none -/var/log/debug
Anschließend startet den Dämon neu mit
sudo /etc/init.d/rsyslog restart
und führt den Testfall erneut aus.
Links
TLP
- TLP Einstellungen
- TLP FAQ
- TLP-Support-Thread – im Thinkpad-Forum
- TLP – Projekt-Homepage
- TLP Linux Advanced Power Management – Documentation in English
- TLP Quellcode – GIT Repository bei Github.com (englisch)
- TLP Developer Documentation – Hinweise zur Paketierung (englisch)
- TLP PPA – Pakete für Ubuntu und Debian (englisch)
Hintergrund
- Messung des Stromverbrauchs – Wikiartikel
- PHC wiki – PHC Dokumentation (englisch)
- Absenken der Prozessorspannung – Anleitung zum Undervolting
- SMART – Ermitteln des Festplattenzustands
- Ungenutztes Stromsparpotenzial – Artikel zu den Kernel-Bootoptionen auf heise.de
Changelog
Version 0.3.6 - 23.03.2012
Neue Features:
- USB Autosuspend wird nun per udev gesteuert und erfaßt dadurch auch nachträglich angesteckte/eingeschaltete Geräte
- Wahlweise Funkgerätezustand beim Systemstart wiederherstellen; wie beim letzten Herunterfahren bzw. Neustart (fabio)
- Radio Device Wizard: Funkgeräte ereignisgesteuert ein- und ausschalten bei Netzwerkverbindung/-trennung, An-/Abdocken (Samba);
eigenes Paket tlp-rdw in Ubuntu/Debian, das nach einem autom. Update manuell nachinstalliert werden muss! - Prozessortakt-Steuerung (Alex Lochmann)
- tlp-stat: Konfiguration mit anzeigen
Fehlerbehebung:
- Runtime PM wird nur für einen Teil der PCI(e)-Geräte aktiviert; im Akkubetrieb nun wieder per Default aktiviert; beseitigt Probleme mit dem Herunterfahren
Version 0.3.5 - 19.12.2011
Neue Features:
- tlp recalibrate: kombiniert fullcharge und discharge
- tlp-stat: Ausgabeformat mit Zwischenüberschriften aufgebrezelt; zusätzliche Anzeige von Lüfterdrehzahl, Akkutyp, momentaner Leistungsaufnahme, Stromsparfunktionen der Intel-Grafik und Kernel-Bootoptionen; USB-Informationen überarbeitet
- Intel 2100b WLAN ein-/ausschalten (kristatos)
Hinweis: das Setzen der Stromsparfunktionen für die Intel-Grafik (0.3.4 Betatest) wurde wieder entfernt – bitte Bootoptionen verwenden!
Fehlerbehebung:
- Bug #27: Fehlermeldung aufgrund fehlendem /proc/acpi/ibm/thermal unterdrücken bei X220/T420(s) et al. (Esc)
- X220/T420(s) et al.: fehlende tp-smapi-Funktionen (start_charge_thresh, force_discharge) korrekt behandeln (fabio)
- Bug #28: Zeitkonflikt beim Abschalten der Funkgeräte im Sytemstart auf Debian 6.0 abschwächen (blackbox)
- Bug #29: fehlerhafte Ausgaben von smartctl in tlp-stat filtern (SirVival)
- Bug #30: Fehlermeldungen von dmidecode in tlp-stat unterdrücken (kristatos)
- Alle Instanzen von sched_powersave_? berücksichtigen
- upowerd beim Systemstart aufrufen (Evilandi666)
- Bug #32: Fehlermeldung mit Aufforderung zum Deinstallieren von laptop-mode-tools zeigen (Kuzoku)
Ältere Versionen
Vollständiges Changelog siehe hier.