TLP - Linux Stromsparen

Aus ThinkPad-Wiki

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, 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. vor dem Herunterfahren deaktivieren
  • 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 11, 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 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.3 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.3

zypper ar -f http://download.opensuse.org/repositories/home:/cdersch:/TLP/openSUSE_11.3/home:cdersch:TLP.repo

Falls Contrib Repo noch nicht aktiv:

zypper ar -f http://download.opensuse.org/repositories/openSUSE:/11.3:/Contrib/standard/openSUSE:11.3:Contrib.repo 

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

Paketquellen aktualisieren:

zypper ref

Folgende Pakete sind zu installieren:

  • tlp (TLP Repo)
  • tp_smapi-kmp-desktop (Contrib Repo) - optional nur für ThinkPads, ermöglicht das Einstellen der Akkuladeschwellen und erweiterte Statusanzeigen.

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 tp_smapi-kmp-desktop smartmontools ethtool

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)

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.

Allgemein (nur Kernel 2.6.39)

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 bei nächsten Systemstart. Alternativ startet man TLP sofort mit dem Kommando

sudo tlp start

Geänderte Einstellungen können ebenfalls auf diesem Wege sofort aktiviert werden.

Terminal-Kommandos

Arch/Debian/Gentoo/openSUSE: 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 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 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 aller aktiven Einstellungen erstellen:

sudo tlp-stat

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="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

Hintergrund

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.