Tipp: Lüfter steuern unter Linux

Piloboy

Admiral Special
Mitglied seit
11.04.2004
Beiträge
1.995
Renomée
36
Standort
/home/piloboy
  • RCN Russia
  • Spinhenge ESL
Auch unter Linux kann man die angeschlossenen Lüfter übers Mainboard steuern.

Im Paket lm_sensors gibt es den Dienst fancontrol das mit dem Programm pwmconfig eingestellt werden kann.

Dort könnt ihr selbst ne Regel erstellen wie die Lüfter bei den Temperaturen laufen sollen.
Mit ein wenig rumprobieren, kann man etwas an der Geräuschkulisse schrauben, z.B. kann ich so nun meinen Zalman 9700 mit Umdrehungszahlen von 1000 U/min und weniger betreiben und die Temperaturen bleiben bei mir trotzdem noch im grünen Bereich. Teilweise wird der sogar abgeschaltet und das System läuft passiv.

Hier mal als Beispiel meine Config Datei, die von pwmconfig angelegt wird.

/etc/fancontrol

Code:
INTERVAL=10
FCTEMPS=9191-0290/pwm2=9191-0290/temp2_input 9191-0290/pwm1=9191-0290/temp1_input
FCFANS=9191-0290/pwm2=9191-0290/fan2_input 9191-0290/pwm1=9191-0290/fan1_input
MINTEMP=9191-0290/pwm2=35 9191-0290/pwm1=25
MAXTEMP=9191-0290/pwm2=75 9191-0290/pwm1=50
MINSTART=9191-0290/pwm2=150 9191-0290/pwm1=100
MINSTOP=9191-0290/pwm2=40 9191-0290/pwm1=30

Zur Erklärung:
INTERVAL = Abfrageintervall in Sekunden
FCTEMPS = Die benutzten Temperatursensoren und die Zuweisung eines Lüfterkanals
FCFANS = Die benutzten Lüfterkanäle und die Zuweisung des Drehzahlmonitors
MINTEMP = Hier wird dem Lüfterkanal die mindest Temperatur (in °C) zugewiesen, wo dieser anlaufen soll.
MAXTEMP = Hier wird dem Lüfterkanal die max Temperatur (in °C) zugewiesen, wo dieser auf volle Leistung laufen soll
MINSTART = Gibt den Lüfterkanal die Anlaufgeschwindigkeit wo er aktiviert wird, z.B. läuft ein 7V Lüfter bei 5V nicht an, also gibt man ihm eine hohe Anlaufgeschwindigkeit.
MINSTOP = Gibt dem Lüfterkanal die mindest Umdrehungszahl wo der Lüfter noch dreht, dadrauf basieren dann die anderen Umdrehungzahlen mit den angegebenen Temperaturwerten. HIER VORSICHTIG SEIEN

Ansonsen bitte auch die Manpages lesen:
Code:
man fancontrol
man pwmconfig

Jedoch auch hier eine Warnung, ihr übernimmt bei konfiguieren die Kontrolle über die Lüfter, die werden zum testen der Umdrehungen auch ein paar Sekunden lang ausgeschaltet, also seit vorsichtig damit!
Ferner funktiert das Programm nicht mit jedem Mainboard.

Zum starten des Dienst, als root

Code:
/etc/init.d/fancontrol start

zum stoppen

Code:
/etc/init.d/fancontrol stop

Ich hoffe ich mache ein paar Ohren glücklich ;D
 
Zuletzt bearbeitet:
Vielen Dank für den Tip. Funktioniert auch super.

Mit einem kleinen Haken: Ich würde als Temperatur-Sensor gerne die Core0 Temp nehmen, die "sensors" auch ausgibt. Allerdings weiss ich nicht wie ich das in fancontrol einbinde bzw. wo ich das device finde.

/edit: ok. habe es hinbekommen: die temp ist in "/sys/bus/pci/devices/0000:00:18.3/temp1_input". Der Sensor ist wesentlich genauer wie der MB-Sensor!
 
Zuletzt bearbeitet:
Vielen Dank für den Tip. Funktioniert auch super.

Mit einem kleinen Haken: Ich würde als Temperatur-Sensor gerne die Core0 Temp nehmen, die "sensors" auch ausgibt. Allerdings weiss ich nicht wie ich das in fancontrol einbinde bzw. wo ich das device finde.

/edit: ok. habe es hinbekommen: die temp ist in "/sys/bus/pci/devices/0000:00:18.3/temp1_input". Der Sensor ist wesentlich genauer wie der MB-Sensor!

Danke für den Hinweis, den Core Sensor wollt ich auch noch einbinden, war mir auch nicht sicher obs geht, darum hat ich das noch verschoben zum testen.
In der Tat sollte man diesen Sensor nehmen, da er genauer ist.
Bloss stellt sich hier die Frage bei E6 Sanis und X2/C2D welche Sensor von den Cores man nehmen sollte?
Da währe es ratsam den MB Sensor weiter zu verwenden oder man ist sicher das beide Cores auch immer gleiche Werte haben, also gleich ausgelastet.

Man kann auch, für AMD K8, besser diesen Pfad nehmen, veranschautlicht besser worum es sich handelt.

Code:
 /sys/bus/pci/drivers/k8temp/0000:00:18.3/temp1_input
 
Zuletzt bearbeitet:
Das ist allerdings ein wenig schade, dass man nicht 2 Sensoren kombinieren kann. Muss man eben einen auswählen (ich würde den ersten nehmen) und Spielraum von ein paar Grad lassen.


Ich habe auch noch das Problem, dass mein Lüfter sich bei einem PWM-Wert von 100 schon auf Volllast dreht. Von 100-250 passiert quasi gar nichts mehr. Kennt jemand eine Möglichkeit, daran was zu ändern?
 
pwmconfig hattest du aber durchlaufen lassen?
 
Ja, das sieht dann so aus:
Code:
Testing pwm control 9191-0290/pwm1 ...
  9191-0290/fan1_input ... speed was 2812 now 0
    It appears that fan 9191-0290/fan1_input
    is controlled by pwm 9191-0290/pwm1
Would you like to generate a detailed correlation (y)? 
    PWM 255 FAN 2812
    PWM 240 FAN 2812
    PWM 225 FAN 2812
    PWM 210 FAN 2812
    PWM 195 FAN 2812
    PWM 180 FAN 2812
    PWM 165 FAN 2721
    PWM 150 FAN 2812
    PWM 135 FAN 2721
    PWM 120 FAN 2721
    PWM 105 FAN 2812
    PWM 90 FAN 2721
    PWM 75 FAN 2721
    PWM 60 FAN 2721
    PWM 45 FAN 2556
    PWM 30 FAN 2343
    PWM 15 FAN 1834
    PWM 0 FAN 0
    Fan Stopped at PWM = 0

Ist eher ein Hardware Problem. Ich denke, es liegt an meinem Lüfter.
 
Regelst du noch einen anderen Kanal, wie sieht es da aus?
Könnte durchaus am Lüfter liegen.
 
Könntest doch ein kleines Script schreiben, dass dir die gewünschte Temperatur
mittels sensors im gewünschten Format ausgibt.
Das musste dann nur noch vorschalten.
 
Ich hätte noch einen anderen Kanal. Dazu muss ich aber erst den Lüfter umstecken. Werde ich nach dem WE mal probieren.
Vielleicht schliesse ich auch mal einen anderen Lüfter an.
 
Könntest doch ein kleines Script schreiben, dass dir die gewünschte Temperatur
mittels sensors im gewünschten Format ausgibt.
Das musste dann nur noch vorschalten.

Nichts anderes macht fancontrol und pwmconfing, fancontrol ist auch nur ein batchscript was auf sensors zugreift.
Und wieso "gewünschtes Format", wir wollen doch nichts ausgeben?

Ich hätte noch einen anderen Kanal. Dazu muss ich aber erst den Lüfter umstecken. Werde ich nach dem WE mal probieren.
Vielleicht schliesse ich auch mal einen anderen Lüfter an.

Ich dachte du lässt schon 2 Kanäle steuern, kann natürlich auch sein das dein Sensorchip kein PWM steuern kann.
 
Nichts anderes macht fancontrol und pwmconfing, fancontrol ist auch nur ein batchscript was auf sensors zugreift.
Und wieso "gewünschtes Format", wir wollen doch nichts ausgeben?
Oben stand, dass die falsche Temp ausgelesen wurde.
Das das ebenfalls ein bashscript ist war mir nicht klar, dann kannst du natürlich das anpassen.
Ich dachte, dass es sich dabei um ein Programm handelt, welches einen Temperaturinput erwartet.
 
Wo hast du das gelesen, stehe wohl voll auf dem Schlauch ;D
Wir sprechen hier um die U/min des Lüfters, oder meinst du die Core Temps die ich ansprach bei X2 Systemen, das man zum steuern dann lieber die Diode nehmen sollte anstatt die von einem Core?
 
Aber mit dem Script haste gar nicht so unrecht, man könnte ein Script benutzten oder fancontrol so erweitern, das alle Core Temps auswertet und dann den höchsten Wert in einer Datei schreibt, diese könnte man dann als Input benutzen, oder direkt verarbeiten ohne die config zu benutzten.
 
Aber mit dem Script haste gar nicht so unrecht, man könnte ein Script benutzten oder fancontrol so erweitern, das alle Core Temps auswertet und dann den höchsten Wert in einer Datei schreibt, diese könnte man dann als Input benutzen, oder direkt verarbeiten ohne die config zu benutzten.
Ich halte es da für sinnvoller, fancontrol zu erweitern. Kannst ja einen patch machen
und an die entwickler schicken. Wenn die das nicht wollen, selbst schuld ;)
 
Muss ich mir mal überlegen, hätte auch bei meinen E6 Sani Sinn, da ändert sich auch häufig die Coretemps, mal ist die eine höher mal die andere.
Muss mich mal einlesen wie ich da was coden kann ;D
 
sudo update-rc.d fancontrol defaults 50

mit update-rc.d kannste easy Scripte beim Start laden und genauso einfach nicht benötigte entfernen...
 
Zurück
Oben Unten