Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
ibm-acpi ist ein spezielles Treiber-Paket für IBM/Lenovo ThinkPad-Laptops. Es ermöglicht, auf verschiedene Komponenten dieser Laptops zuzugreifen, welche über ACPI angesteuert, aber vom konventionellen Linux-ACPI-Treiber nicht unterstützt werden. Das Modul ist in Kernel-Versionen ab 2.6.10 bereits enthalten. Diverse Prozesse und Anwendungen (so etwa GNOME-Sensors-Applet, GKrellM oder Pidgin-Thinklight) greifen auf dieses Kernelmodul zurück.
Ab Kernel 2.6.22 (also ab Ubuntu 7.10 Gutsy Gibbon) heißt das Modul wegen der Übernahme der Notebook-Sparte durch Lenovo allerdings nicht mehr ibm-acpi, sondern thinkpad-acpi. Allerdings sorgte bis Kernel 2.6.29 ein Alias dafür, dass auch der alte Name weiter funktioniert. Erst ab Kernel 2.6.30 bzw. Ubuntu 9.10 Karmic Koala ist der alte Name nicht mehr gültig.
Der vorliegende Artikel beschreibt, wie sich die einzelnen Komponenten manuell ansteuern lassen. Das ist nicht immer ganz ungefährlich, weil damit teils direkt in die Hardware-Register des Laptops geschrieben wird. Die Funktionen sind daher mit entsprechender Sorgfalt auszutesten!
Thinkpad ACPI funktioniert derzeit nicht mit ThinkPads der Baureihen SL und L, da dort eine abweichende Hardware verbaut ist!
Die Modelle Edge sowie das X100e werden erst ab Ubuntu 10.10 Maverick Meerkat unterstützt (oder bei Nutzung eines speziell angepassten Kernels).
Ob das Kernelmodul automatisch geladen wurde, lässt sich mittels
lsmod | grep pad
herausfinden. Falls es nicht geladen ist, kann man das durch
sudo modprobe -v thinkpad-acpi
nachholen. Die Komponenten, die über das Modul angesteuert werden können, finden sich im Verzeichnis /proc/acpi/ibm. Sie werden alle auf dieselbe Weise angesprochen.
Der Zugriff über /proc/acpi/ibm gilt inzwischen als veraltet. Stattdessen sollte der Zugriff bei neueren Kerneln (Faustregel: 2.6.29 und neuer) über die Ordner /sys/devices/platform/thinkpad_acpi/ und /sys/devices/platform/thinkpad_hwmon/ erfolgen (siehe auch Verzeichnisstruktur und ThinkWiki ). Beispiel:
cat /sys/devices/platform/thinkpad_acpi/bluetooth_enable
liefert für BlueTooth den Wert 0
(deaktiviert) zurück. Um BlueTooth zu aktivieren:
echo 1 | sudo tee /sys/devices/platform/thinkpad_acpi/bluetooth_enable
Um auszulesen, wie eine Komponente momentan eingestellt ist (status) und welche Optionen zur Verfügung stehen (commands), ist folgender Befehl zu verwenden:
cat /proc/acpi/ibm/KOMPONENTE
Welche Komponente es gibt, sieht man mit
ls /proc/acpi/ibm/
Dabei kommt z.B. heraus:
beep bluetooth cmos driver fan hotkey led light thermal video volume
Wird eine Komponente vom aktuellen Gerät nicht unterstützt, so kommt die Rückmeldung
status: not supported
Um die Einstellungen einer Komponente zu verändern, muss die Eingabe an die jeweilige Datei geleitet werden. Das geschieht mit dem echo-Befehl. Weil Dateien im /proc-Verzeichnis aber nur mit Root-Rechten verändert werden dürfen, ist eine verschachtelte Umleitung notwendig. Also entweder durch das Kapseln des Befehls in eine eigene Shell:
sudo bash -c "echo OPTION > /proc/acpi/ibm/KOMPONENTE"
oder durch eine Umleitung über tee.
echo OPTION | sudo tee /proc/acpi/ibm/KOMPONENTE
Es können mehrere Optionen gleichzeitig an eine Komponente übergeben werden, sie sind dann durch Kommas zu trennen. Falsch geschriebene Optionen geben eine Fehlermeldung aus.
Sollen gewisse Komponenten bei jedem Systemstart mit einer bestimmten Option automatisch geladen werden, so kann dies in der Datei /etc/modprobe.d/thinkpad_acpi.conf festgelegt werden. Einträge haben die Form KOMPONENTE=OPTION
, eine modifizierte Datei könnte folgendermassen aussehen:
options thinkpad_acpi experimental=1 fan_control=1 hotkey=enable,0xffff8f bluetooth=enable
Nicht alle der hier beispielhaft genannten Optionen machen Sinn, sondern sollten nur bei Bedarf aktiviert werden. Eine Übersicht der möglichen Optionen liefert der Befehl:
modinfo thinkpad-acpi
Im folgenden werden alle Komponenten vorgestellt, die über das Modul angesteuert werden können. Ein ganze Reihe von ihnen sind längst mit Multimedia- und Sondertasten ansprechbar (Volumen, Helligkeit, Bluetooth einschalten), so dass ein gewöhnlicher Benutzer nicht auf die hier vorgestellten Befehle zurückgreifen muss. Sie werden hier dennoch vorgestellt, weil zum einen nicht alle ThinkPads über die gleichen Sondertasten verfügen und weil zum anderen damit die Möglichkeit gegeben ist, wie ACPI-Ereignisse mit entsprechenden Scripts ausgelesen, ausgelöst oder gesteuert werden können (genaueres s.u.).
In /proc/acpi/ibm/hotkey können die
Fn -Sondertasten aktiviert und deaktiviert, bzw. deren aktuelle Einstellung abgelesen werden. Grundsätzlich freigeschaltet und gesperrt werden können diese Tasten mit den Optionen enable
und disable
:
echo enable echo disable
Es lassen sich aber auch nur einzelne Tasten ein- und ausschalten. Dazu bedient sich der Treiber folgender 16-Bit-Maske (die Zuordnungen der ACPI-Ereignisse können von Modell zu Modell variieren, eine Übersicht bietet das entsprechende Artikel im ThinkWiki):
Hotkey | Bit-Maske | ACPI-Ereignis | Hotkey | Bit-Maske | ACPI-Ereignis | Hotkey | Bit-Maske | ACPI-Ereignis |
Fn + F1 | 0001 | Bildschirm sperren | Fn + F5 | 0010 | Bluetooth an / aus | Fn + F9 | 0100 | abdocken |
Fn + F2 | 0002 | Bildschirm abdunkeln | Fn + F6 | 0020 | unbekannt | Fn + F10 | 0200 | unbekannt |
Fn + F3 | 0004 | Bildschirm aus | Fn + F7 | 0040 | Monitor wechseln | Fn + F11 | 0400 | unbekannt |
Fn + F4 | 0008 | Standby | Fn + F8 | 0080 | unbekannt | Fn + F12 | 0800 | Ruhezustand |
Es ist nun die Summe der Bit-Masken aller zu aktivierender Hotkeys an die hotkey-Komponente zu übergeben. Dazu einige Beispiele:
echo 0xffff # Alle möglichen Hotkeys werden aktiviert echo 0x0000 # Alle möglichen Hotkeys werden deaktiviert echo 0xff9f # Alle möglichen Hotkeys außer Fn + F8 werden aktiviert echo 0x080c # Nur Fn + F3, Fn + F4 und Fn + F12 werden aktiviert
Diese Bit-Masken entsprechen nicht den Codes der ACPI-Ereignisse , welche durch die Tasten ausgelöst werden!
Mit der Option reset
schließlich lässt sich die ursprüngliche Maske wiederherstellen:
echo reset
Wegen den Nvidia-Grafiktreibern funktioniert die Bildschirmhelligkeit Reglung über die Fn-Tasten erst, nachdem man in der Datei /etc/X11/xorg.conf im Bereich Device
folgende Option hinzufügt:
1 | Option "RegistryDwords" "EnableBrightnessControl=1" |
Danach den Benutzer ab- und wieder anmelden und das Regeln der Bildschirmhelligkeit funktioniert wieder.
Die meisten ThinkPads verfügen über mindestens sechs Temperatur-Sensoren, übergeben dem normalen ACPI aber nur die CPU-Themperatur (einlesbar unter /proc/acpi/thermal_zone/THM0/temperature). Unter /proc/acpi/ibm/thermal hingegen können bis zu 16 verschiedene Temperatur-Sensoren abgelesen werden. Das ist insbesondere deswegen interessant, weil Lm sensors ThinkPads nicht unterstützen. Hier die Ausgabe bei einem T43 (nicht vorhandene Sensoren werden mit -128 ausgewiesen):
$ cat /proc/acpi/ibm/thermal temperatures: 00 00 00 00 00 -000 00 -000 00 00 00 -000 -000 -128 -128 -128
Wo genau die Sensoren liegen, variiert von Modell zu Modell; folgende Angaben treffen aber für die meisten neueren ThinkPads zu:
Nr. | Sensor-Lage | Nr. | Sensor-Lage | Nr. | Sensor-Lage | Nr. | Sensor-Lage |
1 | CPU | 2 | Mini-PCI | 3 | HDD | 4 | GPU |
5 | Batterie 1 | 6 | UltraBay-Batterie 1 | 7 | Batterie 2 | 8 | UltraBay-Batterie 2 |
9 | Modell-spezifisch | 10 | Modell-spezifisch | 11 | Modell-spezifisch | 12 | Modell-spezifisch |
13 | Modell-spezifisch | 14 | Modell-spezifisch | 15 | Modell-spezifisch | 16 | Modell-spezifisch |
Ein Modell-spezifische Zusammenstellung, an welcher Stelle welcher Sensor ausgewiesen wird, findet sich auf thinkwiki.org .
Bei dieser Komponente lässt sich manuell nichts verändern; zum Lesen und Überwachen der Temperatur-Sensoren eignet sich folgender Befehl, wobei X
das Zeitintervall in Sekunden angibt, in welchem die Sensor-Daten neu ausgegeben werden sollen:
watch -n X cat /proc/acpi/ibm/thermal
Unter /proc/acpi/ibm/fan lässt sich der Lüfter manuell steuern, was besonders interessant ist, weil der übliche Weg mit Lm sensors bei ThinkPads nicht unterstützt wird.
Manipulationen am Lüfter können zu Überhitzung und damit zu irreversiblen Hardware-Schäden führen. Die Lüfter-Einstellungen dürfen nur bei gleichzeitiger Überwachung der Temperatur-Sensoren verändert werden!
Manipulationen am Lüfter sind nur möglich, wenn das thinkpad-acpi-Modul mit der Option fan_control=1
geladen wird. Ein entsprechender Eintrag muss also in der Datei /etc/modprobe.d/thinkpad_acpi.conf stehen.
Mittels des Pakets
thinkfan (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install thinkfan
sudo aptitude install thinkfan
kann eine automatisierte Lüftersteuerung verwendet werden. Anleitung zur Einrichtung siehe thinkfan .
Grundsätzlich lässt sich der Lüfter mit den Befehlen enable
und disable
ein- und ausschalten.
echo enable echo disable
Die direkte Steuerung des Lüfters erfolgt über Levels, wobei die gewünschte Stufe jeweils als level X
zu übergeben ist (nicht jedes Level muss zu einer spürbaren Veränderung führen):
echo level 0 # stoppt den Ventilator echo level 1 # niedrigste Stufe ... echo level 7 # höchste (gesicherte) Stufe echo level disengaged # Lüfter läuft ungebremst (kann zu Hardware-Schäden führen) echo level auto # überlässt die Lüfter-Steuerung dem PC
Zur Sicherheit verfügt die Lüftungssteuerung zudem über eine Überwachungsfunktion (watchdog): ihr kann eine Zeitspanne zwischen "1" und "120" Sekunden übergeben werden, nach deren Ablauf dem Lüfter automatisch das enable
-Kommando (mit dem Level auto
) übergeben wird, sofern inzwischen vom Benutzer kein neues Kommando eingegangen ist:
echo watchdog 30
Einmal gesetzt, bleibt der Wachhund auch für jede weitere Manipulation gesetzt, bis er entweder manuell verändert oder mit 0
ausgeschaltet wird.
Helligkeit, Lautstärke und ThinkLight lassen sich inzwischen bei den meisten Modellen problemlos über die Tastatur einstellen. Das vorliegende acpi-Modul bietet dennoch gleich zwei Möglichkeiten, wie diese Komponenten eingestellt werden können: über die je eigenen Konfigurationsdateien /brightness, /volume und /light oder über die interne Schnittstelle /cmos:
Unter /proc/acpi/ibm/brightness kann die Helligkeit des LCD-Bildschirms eingestellt werden. Dies geschieht entweder, indem als level X
direkt eine Helligkeitsstufe zwischen "0" (dunkelste) und "7" (hellste) eingegeben wird,
echo 'level 0' ... echo 'level 7'
oder indem mit up
und down
die Helligkeit eine Stufe höher, bzw. tiefer gestellt wird (entspricht den Tastenkombinationen
Fn +
Pos1 und
Fn +
Ende ):
echo up echo down
Bei manchen Modellen kann die Helligkeit über /sys/class/backlight/acpi_video0 (oder thinkpad_screen
ab Ubuntu 11.04) gesteuert werden.
Andere Modelle (getestet für X240) nutzen /sys/class/backlight/intel_backlight/brightness, wobei in der Datei max_brightness der Helligkeitsmaximalwert hinterlegt ist. Hier schaltet
echo 0
den Bildschirm ab, ohne dass er sich durch Mausbewegung etc. wieder einschaltet – im Gegensatz zu:
xset dpms force off
Um mit /proc/acpi/ibm/volume die Lautstärke regeln zu können muss dem thinkpad-acpi Modul zusätzlich der Parameter volume_control=1 übergeben werden. Dann kann entweder als level X
direkt eine Stufe zwischen "0" (stumm) und "15" (Maximum) eingegeben werden,
echo 'level 0' ... echo 'level 15'
oder es kann mit up
und down
die Lautstärke eine Stufe höher, bzw. tiefer gestellt werden. Allerdings entspricht nicht zwingend jede Stufe einer eigenen Lautstärke, so dass nicht jeder Schritt eine hörbare Veränderung hervorrufen muss.
Mit mute
schließlich kann die Lautstärke ausgeschaltet werden; dabei ist zu beachten, dass der Stumm-Modus nicht mit einem Level-Befehl, sondern nur mit up
oder down
wieder verlassen werden kann:
echo up echo down echo mute
Alternativ lässt sich die Lautstärke auch mit dem Befehl amixer -D [device] set Console [0-14,mute,unmute] regeln.
Unter /proc/acpi/ibm/light lässt sich das ThinkLight ein- und ausschalten sowie sein aktueller Status ablesen. Zum Ein- und Ausschalten dienen die Optionen on'
und off
(entspricht
Fn +
Bild ↑ ):
echo on echo off
Alternativ besteht die Möglichkeit, die eben erwähnten und einige weitere Komponenten über eine interne acpi-Schnittstelle unter /proc/acpi/ibm/cmos anzusprechen. Die Eingabe erfolgt über eine Zahl zwischen 0 und 21
echo 0 ... echo 21
wobei zu folgenden Zahlen die Effekte bekannt sind (möglicherweise von Modell zu Modell verschieden, bitte ergänzen):
Befehl | Ereignis | Befehl | Ereignis | Befehl | Ereignis |
echo 0 | Lautstärke runter | echo 3 | Drücken von "Access IBM" wird simuliert | echo 12 | ThinkLight an |
echo 1 | Lautstärke hoch | echo 4 | Bildschirm-Helligkeit hoch | echo 13 | ThinkLight aus |
echo 2 | Lautstärke aus | echo 5 | Bildschirm-Helligkeit runter |
In /proc/acpi/ibm/bluetooth kann ein installiertes Bluetooth-Gerät ein- und ausgeschaltet sowie der aktuelle Status ausgelesen werden. Zum Ein- und Ausschalten dienen die Optionen enable
und disable
(fürs Bluetooth entspricht dies
Fn +
F5 ):
echo enable echo disable
Eine Alternative zum Ein- und Ausschalten ist der Befehl rfkill.
In /proc/acpi/ibm/video lassen sich der LCD-, der CRT- und, falls vorhanden, der DVI-Video-Ausgang steuern. Jeder lässt sich mit X_enable
, bzw. X_disable
ein- und ausschalten:
echo lcd_enable # bzw. lcd_disable echo crt_enable # bzw. crt_disable echo dvi_enable # bzw. dvi_disable
Zudem kann mit auto_enable
, bzw. auto_disable
ein automatisches Wechseln des aktiven Video-Ausgangs - etwa beim Zuklappen des Laptops - ein- und ausgeschaltet werden (eingeschaltet kann die Option manchmal zu einem Flackern führen). Wenn die Option ausgeschaltet ist, kann mit video_switch
der Video-Ausgang manuell umgeschaltet werden (entspricht
Fn +
F7 ):
auto_enable # bzw. auto_disable video_switch
Damit besteht etwa die Möglichkeit, einen Beamer zu benutzen, auch wenn dieser beim Hochfahren noch nicht an den PC angeschlossen war.
Der folgende Abschnitt funktioniert nicht mehr unter Ubuntu 10.04.
Unter /proc/acpi/ibm/bay lässt sich der Status der Ultra-Bay ablesen; für ThinkPad-Modelle, die über keinen Schalter verfügen, um die Ultra-Bay bei laufendem PC auszuwerfen, besteht zudem die Möglichkeit, mit der Option eject
die notwendigen ACPI-Ereignisse für ein sicheres Entfernen zu veranlassen:
echo eject
Sobald die Kontrollleuchte an der Ultra-Bay erlischt, kann sie sicher entfernt werden.
Der folgende Abschnitt funktioniert nicht mehr unter Ubuntu 10.04.
Der Zustand einer Docking-Station kann unter /proc/acpi/ibm/dock ausgelesen werden. Damitt ist es möglich, die ACPI-Ereignisse eines An- und Abdockens hervorzurufen:
echo undock echo dock
Letzteres ist etwa dann sinnvoll, wenn der PC nicht innerhalb der Docking-Station gestartet wurde und sie nun nicht automatisch erkennt. Der undock
-Befehl löst nur die Dock-spezifischen ACPI-Ereignisse aus, weitere an der Dock angeschlossene Hardware muss separat ausgeworfen werden.
In /proc/acpi/ibm/led lassen sich die Kontrollleuchten ansprechen. Zur Verfügung stehen die Optionen on
, off
und blink
:
echo X on echo X off echo X blink
"X" ist dabei ein Zahl zwischen "0" und "7", wobei die Zahlen bei den meisten Modellen für folgende Leuchten stehen:
Nr. | Warnleuchte | Nr. | Warnleuchte | Nr. | Warnleuchte | Nr. | Warnleuchte |
1 | Batterie (orange) | 3 | UltraBase | 5 | Modell-spezifisch | 7 | Standby |
2 | Batterie (grün) | 4 | UltraBay | 6 | Modell-spezifisch | 8 | Power |
Für Sonderfälle bietet diese Tabelle den besten Überblick.
Unter /proc/acpi/ibm/beep können eine Reihe von Warntönen ausgelöst werden, indem der Komponente eine Zahl zwischen "0" und "17" übergeben wird:
echo X
Die Zahlen stehen für folgende Warntöne:
Nr. | Signal | Nr. | Signal | Nr. | Signal | Nr. | Signal |
0 | stoppt einen Ton (außer 16) | 5 | ein einzelner Beep | 10 | ein langer Beep | ||
1 | k.A. | 6 | ein sehr hoher und ein normaler Beep | 11 | k.A. | 15 | drei konstant wiederholte, hohe Beeps (mit Null stoppen) |
2 | 2 kurze Beeps, Pause, ein langer Beep | 7 | ein hoher Beep | 12 | ein tiefer Beep | 16 | ein normaler Beep, konstant wiederholt (mit 17 stoppen) |
3 | ein einzelner Beep | 8 | k.A. | 13 | k.A. | 17 | Zum Stoppen von 16 |
4 | ein hoher und ein tiefer Beep | 9 | drei kurze Beeps | 14 | k.A. |
Unter /proc/acpi/ibm/driver erfährt man, welche Treiberversion aktuell installiert ist. In diese Datei lässt sich entsprechend nicht schreiben.
Der folgende Abschnitt funktioniert nicht mehr unter Ubuntu 10.04.
In /proc/acpi/ibm/ecdump lassen sich schließlich die Werte von 256 internen Kontroll-Registern lesen. Werte, die sich seit dem letzten Ablesen verändert haben, sind mit einem Stern markiert. Damit ist es möglich, durch spezifisches Verändern von Hardware-Begebenheiten auf die zugehörigen Kontroll-Register zu schließen. Genaueres dazu ist der Entwickler-Dokumentation von ibm-acpi zu entnehmen.
Für einige der Komponenten kann es interessant sein, sie über Scripte zu steuern. Entweder werden die Befehle, genau so wie sie hier vorgestellt worden sind, mitsamt Optionen in ein Script eingebaut (s.u. Bsp. 2), oder es wird, wo die Optionen jedesmal gewählt werden sollen - und um die Eingabe der Optionen zu vereinfachen, ein spezifisches kleines Script geschrieben. Dazu empfiehlt es sich, zuerst mit echo
kurz auf die zur Vefügung stehenden Optionen zu verweisen, sie sodann mit read
als Argument vom Benutzer abzufragen und schließlich wie gewohnt an eine Komponente zu übergeben.
Zur manuellen Regulierung des Lüfters kann etwa folgendes Script verwendet werden:
#! /bin/sh echo "Bitte Lüfter-Stufe (0-7 oder 'auto') eingeben:" read A echo "level $A" | sudo tee /proc/acpi/ibm/fan
Folgendes Script schaltet die Bluetooth-Antenne ein, startet eine Synchronisation via OpenSync und schaltet die Bluetooth-Antenne wieder aus:
#! /bin/sh echo enable | sudo tee /proc/acpi/ibm/bluetooth msynctool --sync nokia echo disable | sudo tee /proc/acpi/ibm/bluetooth
ThinkWiki – umfangreiche Informationsquelle zu allen Thinkpad-Modellen
Thinkpad-acpi im ThinkWiki
ThinkPad-Wiki – nicht ganz so umfangreiche, aber deutschsprachige Informationen
Ubuntu Schnelleinstieg – Ubuntu auf Thinkpads installieren
ThinkPad Extras PPA – Kernel und Tools für Thinkpads
Lenovo Patches and Fixes PPA – Tools für neuere Lenovo-Modelle (nur Ubuntu 12.04)
ThinkPad-Forum – weitere Informationsquelle
Ubuntu auf dem ThinkPad – nützliche Links
Lüftersteuerung:
How to control fan speed im ThinkWiki
thinkfan – einfache Lüftersteuerung (in den offiziellen Paketquellen enthalten)
ThinkPad Fan Control (tpfanco) – Lüftersteuerung mit grafischer Oberfläche
Trackpoint einrichten
Akkuladeschwellen per SMAPI einstellen und mehr
Diese Revision wurde am 27. Februar 2016 09:43 von passer-domesticus erstellt.