Lenovo-ThinkPads unter Manjaro leiser machen – Thinkfan-How-to

Ich habe einen Lenovo Thinkpad P16. Jedoch war mir die Lüftersteuerung deutlich zu laut. Hier für alle Suchenden eine Anleitung, um die Lüftersteuerung anzupassen. Es ist jetzt deutlich leiser. Natürlich wie immer Änderung der Temperaturregelung ist eigenes Risiko. Mit der App “Mission-Center” im Repository könnt Ihr bei Bedarf die Temperaturen gut im Blick behalten. Habe es noch ergänzt, so dass auch nach einem Neustart oder Kaltstart die thinkfan Lüftersteuerung weiter funktioniert. Ebenso habe ich die inhaltliche Struktur überarbeitet
(getestet Juli 2025, Manjaro KDE, Kernel 6.15.7-1, nochmals überarbeitet am 12.8.2025)


Optimierte Thinkfan-Anleitung (Manjaro / Archlinux)

Inhaltsverzeichnis

  • 1 Einleitung / Überblick
  • 2 Systemvorbereitung
    • 2.1 Kernel-Parameter aktivieren
    • 2.2 mkinitcpio (Hook & Rebuild)
  • 3 Pakete installieren
  • 4 Sensorpfade stabil halten
  • 5 /etc/thinkfan.conf erstellen
  • 6 Systemd-Override
  • 7 Dienst starten & aktivieren
  • 8 Kontrolle / Feintuning
  • 9 Schnell-Setup-Skript
  • 10 FAQ & bekannte Stolpersteine
  • 11 mkinitcpio-Fehler aufräumen
  • 12 Dienst wieder deaktivieren

1 Voraussetzungen

  • Lenovo ThinkPad mit /proc/acpi/ibm/fan.
  • Firmware/BIOS aktuell.
  • Manjaro / Arch (+ systemd).

2 Systemvorbereitung

sudo pamac install thinkfan lm_sensors

2.1 Kernel-Parameter aktivieren

Damit ThinkFan den Lüfter überhaupt ansprechen darf, muss das Kernel-Modul thinkpad_acpi mit der Option fan_control=1 geladen werden[^1].

# dauerhaft einschalten
echo "options thinkpad_acpi fan_control=1" | sudo tee /etc/modprobe.d/99-thinkfan.conf
  • Sofort-Test:

    sudo modprobe -r thinkpad_acpi
    sudo modprobe thinkpad_acpi fan_control=1
    echo level 7 | sudo tee /proc/acpi/ibm/fan   # sollte hörbar aufdrehen
    echo level 0 | sudo tee /proc/acpi/ibm/fan   # und wieder stoppen
    

[^fanctrl] Ohne fan_control=1 verweigert der Embedded-Controller jede Änderung der Lüfterstufe; ThinkFan beendet sich deshalb sofort.[^1]


2.2 mkinitcpio (Hook & Rebuild)

Optionen aus /etc/modprobe.d landen erst im nächsten initramfs – also ab dem nächsten Re-Build / Boot.

  1. Öffne /etc/mkinitcpio.conf und prüfe, dass der Eintrag modconf in der HOOK-Zeile vorhanden ist:

    HOOKS=(base udev autodetect microcode kms modconf …)
    
  2. Neues initramfs erzeugen:

    sudo mkinitcpio -P
    

3 Kernel-Modul freischalten

Ohne fan_control=1 lässt sich der Lüfter nicht steuern[^1].

# dauerhaft
echo 'options thinkpad_acpi fan_control=1' | sudo tee /etc/modprobe.d/thinkpad_acpi.conf

# sofort
sudo modprobe -r thinkpad_acpi
sudo modprobe thinkpad_acpi fan_control=1

Funktions-Check

echo level 7 | sudo tee /proc/acpi/ibm/fan   # Vollgas
echo level 0 | sudo tee /proc/acpi/ibm/fan   # Aus

4 Sensorpfade sind stabil

Ab Kernel ≥ 5.18 legt thinkpad_acpi automatisch
/sys/devices/platform/thinkpad_hwmon/hwmon/hwmon*/
an. Der Pfad bleibt über Reboots hinweg stabil; udev-Symlinks sind überflüssig.


5 /etc/thinkfan.conf

In ThinkFan legst du zwei Dinge fest:

  1. welche Temperatursensoren überwacht werden
  2. ab welchen Schwellen­werten welche Lüfter­stufe aktiv wird (Profil mit 5 °C Hysterese)

Du kannst das entweder mit einem Sammel-Pfad erledigen (Variante A) oder mit einzeln aufgelisteten Sensoren (Variante B).


Variante A – ein Pfad für alle 16 Sensoren (beobachten, ob das bei dir stabil läuft) [^4]

tp_fan     /proc/acpi/ibm/fan              # Lüftersteuerung
tp_thermal /proc/acpi/ibm/thermal          # alle TP-Sensoren

# Lüfterprofil (5 °C Hysterese)
(0,  0,   60)  # AUS  – zurückschalten <55 °C
(1, 55,   70)  # sehr leise
(2, 65,   80)
(4, 75,   90)
(6, 85,   95)
(7, 90, 32767) # Notfall

Vorteil: eine einzige Pfadangabe deckt alles ab.
Nachteil: Wenn das EC (Embedded Controller) falsche oder 0 °C meldet, gehen diese Fehler unbemerkt in die Mittel­temperatur ein und das Profil arbeitet ungenau.


Variante B – einzeln definierte Sensoren (praxis­tauglicher)

1 Aktive Sensoren ermitteln

# Alle Temperatursensoren des ThinkPad-Treiber durchgehen
for f in /sys/devices/platform/thinkpad_hwmon/hwmon/*/temp*_input; do
  if val=$(cat "$f" 2>/dev/null) && [[ $val =~ ^[0-9]+$ && $val -gt 0 ]]; then
    printf "%s : %d °C\n" "$f" "$((val/1000))"
  fi
done

Beispielausgabe (defekte Sensoren tauchen nicht auf):

/sys/devices/platform/thinkpad_hwmon/hwmon/hwmon5/temp1_input : 65 °C
/sys/devices/platform/thinkpad_hwmon/hwmon/hwmon5/temp3_input : 56 °C
/sys/devices/platform/thinkpad_hwmon/hwmon/hwmon5/temp5_input : 35 °C
/sys/devices/platform/thinkpad_hwmon/hwmon/hwmon5/temp6_input : 50 °C
/sys/devices/platform/thinkpad_hwmon/hwmon/hwmon5/temp7_input : 65 °C

2 Gefundene Pfade in thinkfan.conf eintragen

tp_fan /proc/acpi/ibm/fan                 # Lüftersteuerung

# funktionierende Sensoren (Beispiel)
hwmon /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon5/temp1_input
hwmon /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon5/temp3_input
hwmon /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon5/temp5_input
hwmon /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon5/temp6_input
hwmon /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon5/temp7_input

# Lüfterprofil (5 °C Hysterese)
(0,  0,   60)  # AUS  – zurückschalten <55 °C
(1, 55,   65)  # sehr leise
(2, 60,   70)
(4, 65,   75)
(6, 70,   80)
(7, 75, 32767) # Notfall

Vorteil: nur echte Temperaturen fließen in die Reg­elung ein.
Nachteil: musst du nach Firmware-Updates einmalig nachpflegen, falls neue Sensoren hinzukommen.


Kurz­check nach dem Speichern

sudo systemctl restart thinkfan        # Dienst neu laden
sudo journalctl -u thinkfan -e         # Protokoll auf Fehler prüfen

Keine Fehlermeldung? – Dann läuft deine Konfiguration sauber.

6 Systemd-Override

Thinkfan ≥ 1.3 startet am saubersten im Vordergrund (-n) mit Type=simple.

sudo systemctl edit thinkfan
[Service]
ExecStartPre=/usr/bin/install -Dm755 /dev/null /run/thinkfan/thinkfan.pid
PIDFile=/run/thinkfan/thinkfan.pid
ExecStart=/usr/bin/thinkfan -n -q -s 5 -c /etc/thinkfan.conf -p /run/thinkfan/thinkfan.pid
  • Es darf genau ein ExecStart=-Eintrag vorhanden sein – entferne doppelte Zeilen.
  • /run liegt auf tmpfs; das Verzeichnis /run/thinkfan muss daher bei jedem Boot neu angelegt werden (erledigt die ExecStartPre-Zeile).
sudo systemctl daemon-reload

7 Dienst starten & aktivieren

sudo systemctl enable --now thinkfan

Status prüfen

systemctl status --no-pager thinkfan

Funktionstest

  1. sudo systemctl restart thinkfan.service
  2. sudo thinkfan -n (Testlauf ohne Regelung)
    • Temperaturen sollten angezeigt werden
    • kein „cannot read sensor“

8 Kontrolle / Feintuning

journalctl -fu thinkfan.service        # Live-Log (mit -q nur Startmeldung)
cat /proc/acpi/ibm/fan                 # aktuelle Stufe & RPM
sensors                                 # Temperaturwerte

Schwellen ±2 °C anpassen, Intervall (-s) erhöhen, nicht benutzte Sensoren löschen.


9 Schnell-Setup-Skript

#!/usr/bin/env bash
set -e
sudo pamac install -y thinkfan lm_sensors

echo 'options thinkpad_acpi fan_control=1' | sudo tee /etc/modprobe.d/thinkpad_acpi.conf
sudo modprobe -r thinkpad_acpi && sudo modprobe thinkpad_acpi fan_control=1

sudo tee /etc/thinkfan.conf <<'EOF'
tp_fan     /proc/acpi/ibm/fan
tp_thermal /proc/acpi/ibm/thermal
(0,0,60)(1,55,70)(2,65,80)(4,75,90)(6,85,95)(7,90,32767)
EOF

sudo mkdir -p /etc/systemd/system/thinkfan.service.d
sudo tee /etc/systemd/system/thinkfan.service.d/override.conf <<'EOF'
[Unit]
After=systemd-udev-settle.service

[Service]
# Eigene PID-Datei, um Konflikte mit Testlauf zu vermeiden
PIDFile=/run/thinkfan/thinkfan.pid
ExecStart=/usr/bin/thinkfan -n -q -s 5 -c /etc/thinkfan.conf -p /run/thinkfan/thinkfan.pid
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now thinkfan

10 FAQ & bekannte Stolpersteine – ThinkFan auf Lenovo-ThinkPads (Manjaro, Archlinux)

1. Dienst startet nicht

Prüfe cat /sys/module/thinkpad_acpi/parameters/fan_control → Ausgabe muss Y sein; sonst fehlt fan_control=1.

2. ThinkFan stirbt direkt nach dem Boot

  • Häufigste Ursache: fan_control=1 fehlt im initramfs.
  • Fix: modconf-Hook eintragen, sudo mkinitcpio -P, danach neu starten.

3. Mehrere ThinkPads / Portabilität

Eine identische thinkfan.conf läuft, solange jedes Gerät den Plattform-Pfad hat – meist hwmon*/temp*_input unter platform/thinkpad_hwmon

4. Lüfterbefehle sind „ungültig“

  • Ursache: thinkpad_acpi ohne Option fan_control=1 geladen.
  • Fix:
    sudo modprobe -r thinkpad_acpi
    sudo modprobe thinkpad_acpi fan_control=1
    

5. „No such file or directory“ beim Start

  • Ursache: Falscher oder toter Sensorpfad.
  • Prüfung:
    ls /sys/devices/platform/thinkpad_hwmon/hwmon/*/temp*_input
    
    Nur vorhandene Dateien in thinkfan.conf referenzieren.

6. Keine Temperatur-Logzeilen

  • Grund: ThinkFan wurde mit -q (quiet) gestartet.
  • Diagnosemodus:
    sudo thinkfan -D
    

7. Nicht deterministische hwmonX-Nummern

Nutze bevorzugt den kompletten Pfad unter platform/thinkpad_hwmon; hwmonX-Hopping ist damit egal. Alternativ kannst du den virtuellen Treiber tp_thermal verwenden.

8. Andere Temperaturpfade / Modelle

  • Sensoren ermitteln:

    for f in /sys/devices/platform/thinkpad_hwmon/hwmon/hwmon*/temp*_input; \
        do echo "$f=$(cat "$f")"; done
    
  • Nur Sensoren mit plausiblen Werten (> 0 °C) in thinkfan.conf aufnehmen.

9. Lüfterstufe „0“ dreht trotzdem

  • Einige Firmware-Versionen lassen den Lüfter auf Level 0 weiterhin mit ≈ 1500 RPM laufen.
    Das ist normal und kein ThinkFan-Fehler.

10. Scan-Intervall & Überhitzung

  • Intervall: Werte > 5 s verringern das Umschalten, reagieren jedoch träger.
  • Thermik-Check: Unter Last (Prime95, stress-ng) sicherstellen, dass Spitzen < 95 °C bleiben.
    Gegebenenfalls Schwellen in thinkfan.conf absenken.

11. AMD-ThinkPads

  • Funktionieren ebenfalls, solange /proc/acpi/ibm/fan existiert; ein dedizierter GPU-Sensor kann fehlen.

11 mkinitcpio-Fehler aufräumen

crc32c_intel-Fehler bei mkinitcpio

Seit Kernel ≥ 6.12 ist das Modul crc32c_intel fest einkompiliert. Erscheint beim Build die Meldung

ERROR: module not found: 'crc32c_intel'

entferne den Namen einfach aus dem MODULES-Array und baue neu:

sudo nano /etc/mkinitcpio.conf   # MODULES=()
sudo mkinitcpio -P

12 Dienst deaktivieren

sudo systemctl disable --now thinkfan
echo level auto | sudo tee /proc/acpi/ibm/fan          # EC zurücksetzen
# Optional: Modul-Option entfernen
sudo sed -i 's/^options thinkpad_acpi/#&/' /etc/modprobe.d/thinkpad_acpi.conf
4 Likes