Lüftersteuerung unter Linux (lm-sensors, pwmconfig, fancontrol)

03.06.2010 | Bash | Linux

Wem sein Linux zu laut ist, der muß fancontrol installieren und konfigurieren. Eine ausführliche Anleitung gibt es im Ubuntu-Forum . Wer aber keine Lust hat, sich durch einen 10-seitigen Thread zu wühlen, bekommt hier eine Kurzfassung:

pwmconfig und lm-sensors sollten installiert. Im Zweifelsfall mit apt-get install nachholen.

Zuerst muß festgestellt werden, ob die zur Lüftersteuerung nötigen Module überhaupt geladen sind, bzw. ob das Board überhaupt Werte zur Lüftersteuerung zurückgibt.

 sudo sensors-detect

Dies gibt im Erfolgsfall sowas zurück:

 Probing for `Maxim MAX6650/MAX6651'...                      Success!
    (confidence 3, driver `max6650')

Am Ende bietet sensors-detect an, einen Eintrag in die /etc/modules vorzunehmen, um die Module beim nächsten Neustart automatisch zu laden:

 #----cut here----
# I2C adapter drivers
# modprobe unknown adapter NVIDIA i2c adapter 
# modprobe unknown adapter NVIDIA i2c adapter 
# modprobe unknown adapter NVIDIA i2c adapter 
# modprobe unknown adapter NVIDIA i2c adapter 
# Chip drivers
max6650
w83627ehf
k8temp
#----cut here----

D.h. um festzustellen, ob die Module schon geladen sind, müßte man lsmod ausführen.

Bei meiner Kiste war ein Modul noch nicht geladen. Das kann man als Superuser dann so nachholen:

 sudo modprobe w83627ehf

Ein erneutes lsmod sollte dann das Kernelmodul w83627ehf mit aufführen.

Dann sind die Voraussetzungen für die Lüftersteuerung gegeben.Jetzt wird ausgeführt:

 sudo pwmconfig

Dieses Programm erklärt selbst ganz gut, was es macht:

 This program will search your sensors for pulse width modulation (pwm)
controls, and test each one to see if it controls a fan on
your motherboard. Note that many motherboards do not have pwm
circuitry installed, even if your sensor chip supports pwm.

We will attempt to briefly stop each fan using the pwm controls.
The program will attempt to restore each fan to full speed
after testing. However, it is ** very important ** that you
physically verify that the fans have been to full speed
after the program has completed.

Found the following devices:
   hwmon0/device is k8temp
   hwmon1/device is w83627ehf

Found the following PWM controls:
   hwmon1/device/pwm1
   hwmon1/device/pwm2
   hwmon1/device/pwm3

Giving the fans some time to reach full speed...
Found the following fan sensors:
   hwmon1/device/fan1_input     current speed: 0 ... skipping!
   hwmon1/device/fan2_input     current speed: 3245 RPM
   hwmon1/device/fan3_input     current speed: 0 ... skipping!
   hwmon1/device/fan5_input     current speed: 0 ... skipping!

Die gefundenen Lüfter werden also kurzzeitig auf 0 runtergefahren! Danach sollte man sich vergewissern, daß sie auch wieder hochfahren, sonst drohen Schäden an der CPU!

pwmconfig bietet dann an, eine detaillierte Korrelation zwischen pwm-Werten und Lüfterumdrehung herzustellen. Das sollte man sich mal anschauen, um nachher vernünftige Werte beim Konfigurationsdialog eintragen zu können:

 Testing pwm control hwmon1/device/pwm2 ...
  hwmon1/device/fan2_input ... speed was 3245 now 1288
    It appears that fan hwmon1/device/fan2_input
    is controlled by pwm hwmon1/device/pwm2
Would you like to generate a detailed correlation (y)? y
    PWM 255 FAN 3183
    PWM 240 FAN 3245
    PWM 225 FAN 3125
    PWM 210 FAN 2909
    PWM 195 FAN 2766
    PWM 180 FAN 2636
    PWM 165 FAN 2481
    PWM 150 FAN 2376
    PWM 135 FAN 2250
    PWM 120 FAN 2109
    PWM 105 FAN 1985
    PWM 90 FAN 1985
    PWM 75 FAN 1834
    PWM 60 FAN 1704
    PWM 45 FAN 1562
    PWM 30 FAN 1467
    PWM 28 FAN 1430
    PWM 26 FAN 1418
    PWM 24 FAN 1406
    PWM 22 FAN 1406
    PWM 20 FAN 1394
    PWM 18 FAN 1394

Wenn ich also will, daß mein Lüfter bei einer Standarddrehzahl von 1985/min läuft, muß ich einen pwm-Wert von 105 als Minimaldrehzahl eintragen (lassen).

Man kann sich von pwmconfig eine Konfigurationsdatei erstellen lassen, wird dabei nach ein paar Werten gefragt:

  • Minimaltemperatur (darunter wird der Lüfter auf Minimalumdrehung gefahren),

  • Maximaltemperatur (darüber wird der Lüfter auf Maximalumdrehung gefahren),

  • Startumdrehung nach Systemstart etc.

Diese Werte werden dann in die /etc/fancontrol geschrieben. Die kann (bei mir z.B.) dann so aussehen:

 # Configuration file generated by pwmconfig, changes will be lost
INTERVAL=10
FCTEMPS=hwmon1/device/pwm2=hwmon1/device/temp2_input
FCFANS= hwmon1/device/pwm2=hwmon1/device/fan2_input
MINTEMP=hwmon1/device/pwm2=45
MAXTEMP=hwmon1/device/pwm2=60
MINSTART=hwmon1/device/pwm2=105
MINSTOP=hwmon1/device/pwm2=105
MINPWM=hwmon1/device/pwm2=100

Im Grunde war's das schon. Man kann die Lüftersteuerung jetzt mittels

 sudo fancontrol &

im Hintergrund starten lassen. Der PC sollte sofort leiser werden und der Lüfter auf die Standardumdrehung schalten.

Wenn die Lüftersteuerung nach dem jedem Systemstart anlaufen soll, müßte noch ein init-Skript eingerichtet werden, das kann man sich auf dem Ubuntuforum runterladen, unter /etc/init.d/fancontrol speichern und mittels des folgenden Befehls einrichten:

 sudo update-rc.d fancontrol defaults 99 01

Nun steht leisem Linuxen nichts mehr im Wege.

Analyse

Entwurf

Development

Launch