ubuntuusers.de

Lüftersteuerung

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Achtung!

Es sollte mit äußerster Aufmerksamkeit und Vorsicht vorgegangen werden, da bei falscher Handhabung die Hardware irreparabel beschädigt werden kann!

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Die Anleitung kann für Nutzer sinnvoll sein, bei denen der CPU-Lüfter ständig auf höchster Drehzahl läuft und deshalb viel Lärm verursacht. IBM/Lenovo Thinkpad-Notebooks können nicht mit LM-Sensors gesteuert werden. Bei diesen Notebooks hilft der Artikel Thinkpad ACPI (Abschnitt „Luefter“) weiter. Das betrifft auch zumindest einige Dell-Notebooks. Diese kann man mit den i8kutils steuern, wobei auch eine automatische Steuerung direkt integriert ist.

Voraussetzungen

Mit Hilfe von LM-Sensors und eines Konfigurationsskriptes lassen sich die Lüfter im System, die per PWM angesteuert werden können, dynamisch anhand der Temperatur (z.B. der CPU) steuern. Voraussetzung für diese Anleitung ist die korrekte Installation und Konfiguration des Programms LM-Sensors [1] und die Installation von fancontrol:

  • fancontrol

Befehl zum Installieren der Pakete:

sudo apt-get install fancontrol 

Oder mit apturl installieren, Link: apt://fancontrol

Konfiguration der Lüftersteuerung

Welche Lüfter sind regelbar?

Man startet das Konfigurationsskript in einem Terminal mit Rootrechten [2]:

sudo pwmconfig 

Das Skript versucht nun festzustellen, welche Lüfter sich kontrollieren lassen. Dazu versucht es, einen Lüfter für 5 Sekunden anzuhalten - sollte das geschehen sein, bestätigt man die darauf folgende Abfrage mit Y . Es kann vorkommen, dass eine Fehlermeldung angezeigt wird und der Lüfter noch einmal abgeschaltet werden soll. Dies sollte durchgeführt und die folgende Abfrage wieder mit Y beantwortet werden. Nun sollte es funktionieren.

Lüfter konfigurieren

Hat man einen zu regelnden Lüfter gefunden, kann man ihn nach der entsprechenden mit Y zu bestätigenden Abfrage wie folgt konfigurieren:

What should be the path to your fancontrol config file (/etc/fancontrol)

Wenn die Konfigurationsdatei noch nicht vorhanden ist, dann wird sie von dem Skript erstellt. Man bestätigt die Abfrage dafür mit

Man erhält nun ein Menü ähnlich dem folgenden:

 fan output to configure, or other action:
1) 9191-0290/pwm2      3) Just quit           5) Show configuration
2) Change INTERVAL     4) Save and quit

Nun drückt man 1 + , um den entsprechenden Lüfter zu konfigurieren. Man wird nun nach dem Temperatursensor gefragt, nach dem sich die Drehzahl richten soll:

Select a temperature sensor as source for 9191-0290/pwm2:
1) 9191-0290/temp1_input
2) 9191-0290/temp2_input
3) None (Do not affect this PWM output)

Nun wählt man die entsprechende Nummer und bestätigt sie mit

Man wird nun nach der Temperatur gefragt, bei der sich der Lüfter ausschalten kann:

Enter the low temperature (C)
at which the fan should be switched off (0):

Jetzt wählt man nach Prozessor und Kühler-/Lüfterkombination einen relativ niedrigen Wert (auf die Herstellerangaben der CPU achten!) und bestätigt sie mit

Nun wird festgelegt, bei welcher Temperatur der Lüfter auf seine maximale Drehzahl gebracht werden soll:

Enter the high temperature (C)
at which the fan should be switched to full speed (60):

Auch hier achtet man auf die Angaben des Herstellers zur maximalen Prozessortemperatur. Man gibt am besten einen Wert an, der etwas darunter liegt.

Jetzt wird man nach der Geschwindigkeit gefragt, mit der der Lüfter beginnen soll, sich zu drehen, sobald die Minimaltemperatur, die man im ersten Schritt festgelegt hat, überschritten wird:

Enter the minimum PWM value (0-255)
at which the fan STARTS spinning (press t to test) (150):

Man kann einen Wert von 0 (Lüfter aus) bis 255 (maximale Drehzahl) eingeben.

Außerdem hat man die Möglichkeit, mit der Taste T die Lüfterdrehzahl in 10er-Schritten von 0-255 zu erhöhen, bis man den entsprechenden Wert gefunden hat und mit Y bestätigt. Man sollte sich mit dem "Durchtesten" beeilen, da der Lüfter während des Testens vermutlich nicht mit der erforderlichen Drehzahl arbeitet und das im schlimmsten Fall zu einer Überhitzung führen kann.

Jetzt wird man nach der Geschwindigkeit gefragt, mit welcher der Lüfter gerade noch am Laufen ist. Dies beschreibt den Zustand, der erreicht wird, wenn von einer höheren Temperatur erfolgreich heruntergekühlt wurde:

Enter the minimum PWM value (0-255)
at which the fan STOPS spinning (press t to test) (100):

Auch hier kann man wieder T eingeben, um die optimale Einstellung herauszufinden - nur diesmal von "maximaler Geschwindigkeit" bis "dreht sich gar nicht". Wenn der Lüfter nun aufhört sich zu drehen oder kurz davor ist, drückt man wieder Y .

Man sieht nun wieder folgendes Menü:

Select fan output to configure, or other action:
1) 9191-0290/pwm2      3) Just quit           5) Show configuration
2) Change INTERVAL     4) Save and quit

Jetzt speichert und beendet man die Konfiguration mit 4 + . Um die Drehzahl und Temperatur zu verfolgen, benutzt man LM-Sensors [3].

Lüftersteuerung testen

sudo fancontrol 

Strg + C bricht den laufenden Befehl ab.

Autostart einrichten

Für Systeme mit Systemd (Ubuntu 16.04 und neuer) wird der Autostart automatisch eingerichtet.

Deaktivieren lässt sich der Autostart mit:

sudo systemctl disable fancontrol 

bzw. mit

sudo systemctl enable fancontrol 

wieder reaktivieren.

Problembehebung

Drehzahl beim Beenden der Steuerung

Beim Beenden der Lüftersteuerung, z.B. wenn der Computer herunter gefahren wird, kann es auf einigen Systemen vorkommen, dass der Lüfter dann mit voller Drehzahl betrieben wird. Um dies zu unterbinden, kann man am Skript selber eine kleine Anpassung vornehmen. Dazu öffnet man mit einem Editor die Datei /usr/sbin/fancontrol und kommentiert in der Methode restorefans() die Zeile mit dem Eintrag pwmdisable $pwmo aus und fügt anschließend eine neue Zeile ein:

echo `expr ${AFCMAXPWM[$fcvcount]} - 25` > $pwmo

Sie bewirkt, dass der Lüfter beim Beenden der Lüftersteuerung mit dem in der /etc/fancontrol angegebenen Maximalwert minus 25 angesteuert wird.

Achtung!

Hierbei ist unbedingt zu beachten, dass auch mit dieser Einstellung die Komponenten immer noch genügend gekühlt werden müssen! Wird der Wert zu gering gesetzt, so kann es zur Beschädigung der Hardware führen! Dieses ist daher vorher für die eigene Hardware individuell zu ermitteln und zu testen.

Lüfter werden nach Ruhezustand/Energiesparmodus nicht mehr angesteuert

Nach einem Aufwecken aus dem Energiesparmodus oder Ruhezustand kann es auf einigen System vorkommen, dass die Lüfter nicht mehr auf eine manuelle Steuerung konfiguriert sind. Hier kann es sinnvoll sein, das Script dahingehend anzupassen, dass die Lüfter neu initialisiert werden, wenn fancontrol längere Zeit pausiert wurde. Dafür mit einem Editor /usr/sbin/fancontrol bearbeiten:

echo 'Starting automatic fan control...'

# main loop calling the main function at specified intervals
while true
do	
	UpdateFanSpeeds
	# Sleep while still handling signals
	sleep $INTERVAL &
	wait
done

Dafür die oberen Zeilen gegen die unteren austauschen.

echo 'Starting automatic fan control...'

TICK_LAST=$(date +%s)

# main loop calling the main function at specified intervals
while true
do
	TICK_NOW=$(date +%s)
	
	if [ $(($TICK_NOW - $TICK_LAST)) -ge $(($INTERVAL * 5)) ];then
		
		echo 'fancontrol was paused for about '$(($TICK_NOW - $TICK_LAST))' seconds! (Hibernation, suspend or freeze?)'
		echo 'Re-enabling PWM on fans to be on the safe side...'
		
		let fcvcount=0
		while (( $fcvcount < ${#AFCPWM[@]} )) # go through all pwm outputs
		do
			pwmo=${AFCPWM[$fcvcount]}
			pwmenable $pwmo
			if [ $? -ne 0 ]
			then
				echo "Error enabling PWM on $DIR/$pwmo" >&2
				restorefans 1
			fi
			let fcvcount=$fcvcount+1
		done
	fi

	TICK_LAST=$TICK_NOW
	
	UpdateFanSpeeds
	# Sleep while still handling signals
	sleep $INTERVAL &
	wait
done

Zur Erklärung: In jedem Intervall wird die aktuelle Zeit mit der des letzten Zyklus verglichen. Ist der letzte Zyklus länger als Intervall * 5 Sekunden her, so ist davon auszugehen, dass das System pausiert wurde und die Lüfter werden neu initialisiert.

Diese Revision wurde am 2. Dezember 2022 20:20 von Kätzchen erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Hardware, System, Lüfter