Die von Lenovo für die meisten Thinkpads vorgegebenen Grenzwerte für den CPU Lüfter sind eher suboptimal. Per Voreinstellung schaltet sich der CPU Lüfter selbst bei unter 40 °C Grad CPU Temperatur nicht aus. Für Debian und Debian basierte Betriebssysteme gibt es dafür das Thinkfan Script.
Installation
1 |
sudo apt-get install thinkfan |
Damit die Lüftersteuerung funktioniert, muß das Kernelmodul thinkpad_acpi mit der Option fan_control=1
geladen werden. Die dafür notwendige Konfigurationsdatei erzeugt man mittels
1 |
echo "options thinkpad_acpi fan_control=1" | sudo tee /etc/modprobe.d/thinkfan.conf |
Anschließend lädt man das Modul neu
1 2 |
sudo modprobe -rv thinkpad_acpi sudo modprobe -v thinkpad_acpi |
Hinweis: falls der erste Befehl mit der Meldung „modprobe: FATAL: Module thinkpad_acpi is in use“ fehlschlägt, startet man stattdessen das ThinkPad neu, um das Modul mit der geänderten Konfiguration zu laden.
Automatischer Start
Um thinkfan beim Systemstart automatisch zu aktivieren, wird in der Datei /etc/default/thinkfan die Zeile START=yes hinzugefügt bzw editiert.
1 |
START=yes |
Hinweis: Ab Debian 8.0 Jessie muss zusätzlich zu den o.g. Punkten noch der Dienst automatisch gestartet werden. Dies geschieht durch folgenden Befehl:
1 |
sudo systemctl enable thinkfan.service |
Alternativ kann auch das Terminalprogramm sysv-rc-conf zum Aktivieren versch. Startscripte in allen verfügbaren Runlevels genutzt werden
Temperaturschwellen konfigurieren
Thinkfan besitzt keine GUI. Die Temperaturschwellen werden über die Textdatei /etc/thinkfan.conf konfiguriert.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# T430 mit SSD ( keine HDD ) (0, 0, 57) (1, 50, 61) (2, 52, 62) (3, 53, 63) (4, 56, 65) (5, 59, 66) (7, 63, 32767) # T430 defaults #(0, 0, 55) #(1, 48, 60) #(2, 50, 61) #(3, 52, 63) #(4, 56, 65) #(5, 59, 66) #(7, 63, 32767) |
Jede Zeile besteht aus drei Werten – deren Bedeutung ist (von links nach rechts):
- Lüfterlevel 0 (aus) – 7 (max.), 127 („disengaged“, d.h. volle Pulle ohne Regelung)
- Temperatur bei deren Erreichen in absteigender Richtung der Lüfterlevel um 1 verringert wird
- Temperatur bei deren Erreichen in aufsteigender Richtung der Lüfterlevel um 1 erhöht wird
Hinweis: berücksichtigt wird jeweils nur der höchste Wert aller konfigurierten Temperatursensoren.
Nach dem Einrichten der Schwellen kann der thinkfan-Dämon manuell gestartet werden
1 |
sudo systemctl start thinkfan |
Temperatursensoren mit Offsets versehen
Wie oben beschrieben, richtet sich thinkfan immer nach der höchsten Temperatur aus den vorhandenen Sensoren. Möchte man einzelne Sensoren stärker gewichten, so versieht man sie mit einem Offset. Dazu nimmt man eine sensors-Zeile vor den Schwelleneinstellungen auf. Im Beispiel werden zum Wert des 2., 9. und 10. Sensors jeweils 5°C addiert:
1 |
sensor /proc/acpi/ibm/thermal (0, 5, 0, 0, 0, 0, 0, 0, 5, 5) |
Warnung: Offsets sollten nur mit der gebotenen Vorsicht eingesetzt und die Einstellungen unbedingt per Testbetrieb (s.u.) überprüfen werden.
Hinweis: negative Offsets funktionieren hier nicht.
Regelverhalten
Sollte thinkfan allzu schnell zwischen den Lüfterstufen hin und her springen, kann man /etc/default/thinkfan anpassen:
1 |
DAEMON_ARGS="-q -b 1 -s 3" |
Bedeutung der Optionen:
- -b – der sog. „Bias“ (Default: 5) dient dazu die Reaktionsgeschwindigkeit bei schnell steigender Temperatur zu verbessern
- -s – maximale Zeit (in Sekunden) zwischen zwei Temperaturmessungen (Default: 5)
Einzelheiten stehen in der Manpage.
Temperaturen anzeigen
Bei ThinkPads zeigt man die Werte aller Temperatursensoren mit
1 |
cat /proc/acpi/ibm/thermal |
an. Der erste Wert ist stets die CPU. Die Zuordnung der weiteren Sensoren hängt vom jeweiligen Modell ab. Einzelheiten findet man hier.
Testbetrieb
Um die Wirkung der vorgenommenen Einstellungen direkt beobachten zu können, stoppt man zuerst den im Hintergrund laufenden thinkfan-Dämon
1 |
sudo systemctl stop thinkfan |
Anschließend wird thinkfan im Vordergrund gestartet:
1 |
sudo thinkfan -n |
Es erscheint folgende fortlaufende Ausgabe (Beispiel)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
WARNING: Using default temperature inputs in /proc/acpi/ibm/thermal. WARNING: You have not provided any correction values for any sensor, and your fan will only start at 55 °C. This can be dangerous for your hard drive. Config as read from /etc/thinkfan.conf: Fan level Low High 0 0 55 1 48 60 2 50 61 3 52 63 4 56 65 5 59 66 7 63 32767 sleeptime=5, temp=50, last_temp=0, biased_temp=50 -> level=1 sleeptime=5, temp=60, last_temp=59, biased_temp=60 -> level=2 sleeptime=5, temp=61, last_temp=60, biased_temp=61 -> level=3 sleeptime=5, temp=52, last_temp=53, biased_temp=52 -> level=2 sleeptime=5, temp=50, last_temp=51, biased_temp=50 -> level=1 |
Mit Strg+C kann der Test beendet werden.
Problembehebung
Keine Funktion auf X220, T420(s) – sowie auf allen neueren Modellen
Symptom: beim manuellen Start von thinkfan per
1 |
sudo systemctl start thinkfan |
erscheint folgender Output
1 |
/proc/acpi/ibm/thermal: No such file or directory |
Ursache: die Datei /proc/acpi/ibm/thermal existiert bei den betroffenen Modellen nicht mehr. Die Temperatursensoren sind an eine andere Stelle im Sysfs umgezogen und thinkfan erkennt sie nicht.
Lösung: zur Ermittlung der verfügbaren Temperatursensoren ist zunächst das Paket
- lm-sensors
zu installieren. Anschließend startet man die Erkennung mit dem Kommando
1 |
sudo sensors-detect |
Alle Nachfragen des Programms (bis auf die letzte) können mit <Enter> (YES) bestätigt werden.
Die letzte Frage des Programms „Do you want to add these lines automatically to /etc/modules? (yes/NO)“ beantwortet man mit yes
<Enter>.
Als nächsten Schritt lädt man die von sensors-detect ermittelten Kernelmodule mit
1 |
sudo systemctl start module-init-tools |
oder wahlweise mit einem Neustart.
Nun können die verfügbaren Temperatursensoren mit folgendem Kommando angezeigt werden:
1 |
find /sys/devices -type f -name "temp*_input" |
Die Ausgabezeilen nimmt mit man einem vorangestellten hwmon in /etc/thinkfan.conf auf (vor den Temperaturschwellen).
Beispiel (T430s):
1 |
hwmon /sys/devices/virtual/hwmon/hwmon0/temp1_input |
Die aktuellen Werte der Temperatursensoren können mit folgenden Befehlen angezeigt werden, dabei kann auch die durch thinkfan auszulesende Datei geprüft werden:
1 |
sensors |
1 |
cat hwmon /sys/devices/virtual/hwmon/hwmon0/temp1_input |
Hinweis: da Sandy-Bridge-Prozessoren (und Nachfolger) sich recht schnell aufheizen, kann es nützlich sein das Regelverhalten anzupassen.
by Speefak | thinkwiki.de