Kommt ihr gut durch die Hitze? Wenn während der Hitzewelle der PC zu sehr brummt könnte eine Anpassung der Lüftersteuerung angesagt sein. Das Programm fan2go ist eine relativ neue Alternative zum altgedienten fancontrol, die leichter zu benutzen ist und ein paar Probleme bezüglich der sich ändernden Lüfter-Indexierung ausräumen will.
Warum sollte man solch ein Programm nutzen und nicht einfach die Fankurve im BIOS festlegen? Tatsächlich sollte man letzteres vorziehen. Aber manchmal hat das Mainboard diese Funktion einfach nicht, oder sie funktioniert nicht richtig. So war es bei mir; Ich hatte den Lüfter des Prozessorkühlers auf 12% runtergeregelt, trotzdem rödelte er relativ laut. Ich wunderte mich darüber ewig, bis ich jetzt darauf kam, dass das Mainboard (ein MSI Z97M-G43) da einfach den Lüfter nie unter 50% fallen ließ. Vielleicht ein fehlgeleiteter Abschaltschutz, sicher aber viel zu laut im Idle. Den Radiatorlüfter (mein System hat eine AIO) an Systemfan zu hängen und den Gehäuselüfter als CPU-Lüfter laufen zu lassen war ein Teil der Lösung meines Geräuschproblems, den Rest erledigt die Lüftersteuerung durch das neue Programm.
Installation
Als recht junges Projekt ist fan2go leider noch nicht in vielen Quellen. Um es zu installieren könnte man es wie in der Readme vorgeschlagen von Github herunterladen und in den $PATH
verschieben:
curl -L -o fan2go https://github.com/markusressel/fan2go/releases/latest/download/fan2go-linux-amd64 chmod +x fan2go sudo cp ./fan2go /usr/local/bin/fan2go # besser als direkt nach /usr/bin/ fan2go -h
Ohne Konfigurationsdatei erscheint nun erstmal eine Fehlermeldung im Terminal, aber immerhin.
Konfiguration
Die Konfiguration ist leider wieder etwas Handarbeit. Man muss wissen, welche Lüfter man steuern will, sie finden und ihnen Temperaturbereiche zuweisen. Immerhin hilft das Programm hier mit einer Übersicht:
onli@fallout:~$ fan2go detect > coretemp-isa-0 Sensors Index Label Value 1 Package id 0 (temp1_input) 43000 2 Core 0 (temp2_input) 41000 3 Core 1 (temp3_input) 43000 4 Core 2 (temp4_input) 40000 5 Core 3 (temp5_input) 43000 > amdgpu-pci-0100 Fans Index Label RPM PWM Auto 1 hwmon0 165 18 false Sensors Index Label Value 1 edge (temp1_input) 43000 > nct6792-isa-0 Fans Index Label RPM PWM Auto 1 hwmon3 0 127 true 2 hwmon3 534 59 false 3 hwmon3 408 64 false 4 hwmon3 1515 255 true 5 hwmon3 0 127 true Sensors Index Label Value 1 SYSTIN (temp1_input) 39000 2 CPUTIN (temp2_input) 127500 3 AUXTIN0 (temp3_input) 38000 4 AUXTIN1 (temp4_input) 70000 5 AUXTIN2 (temp5_input) 127000 6 AUXTIN3 (temp6_input) -60000 7 PECI Agent 0 (temp7_input) 41500 8 PCH_CHIP_CPU_MAX_TEMP (temp8_input) 0 9 PCH_CHIP_TEMP (temp9_input) 0 10 PCH_CPU_TEMP (temp10_input) 0 > acpitz-acpi-0 Sensors Index Label Value 1 hwmon1 (temp1_input) 27800 2 hwmon1 (temp2_input) 29800
In der Ausgabe von fan2go detect
konnte ich meine drei steuerbaren Lüfter finden: Die Einträge hwmon3 unter nct6792 verrieten sich mit der RPM-Angabe. Der bei 1515 stehende konnte nur die Pumpe der AIO sein und muss nur optional gesteuert werden. Es blieben Index 2 und 3 für die Lüfter, was in meinem Fall einmal der Lüfter auf dem Radiator und der im Gehäuse hinten sein musste.
Um die genau zu identifizieren musste ich einmal sudo su
aufmachen und dann die PWM-Regler unter /sys/ mit Werten füttern, z.B. so:
onli@fallout:~$ sudo su Password: # bash [root@fallout onli]# cat /sys/class/hwmon/hwmon3/pwm2 58 [root@fallout onli]# cat /sys/class/hwmon/hwmon3/pwm2_enable 1
Wenn da stattdessen bei pwm2_enable
eine 5 gestanden hätte, müsste noch eine 1 hineingeschrieben werden:
[root@fallout onli]# echo "1" > /sys/class/hwmon/hwmon3/pwm2_enable
Sonst kontrolliert das Mainboard die Lüfter. Genau so lässte sich auch der PWM-Wert erhöhen (0-255), dann dreht ein Lüfter hoch und man kann erkennen welcher welcher ist.
Jetzt mit allen Infos über das System ausgestattet ging es ans Anlegen der Konfiguration. Meine /etc/fan2go/fan2go.yaml sieht so aus:
# A list of fans to control fans: - id: casefan # The type of fan configuration, one of: hwmon | file hwmon: # The platform of the controller which is # connected to this fan (see sensor.platform below) platform: nct6792 # The index of this fan as displayed by `fan2go detect` index: 2 # Indicates whether this fan should never stop rotating, regardless of # how low the curve value is neverStop: false # The curve ID that should be used to determine the # speed of this fan curve: cpu_curve - id: radiatorfan # The type of fan configuration, one of: hwmon | file hwmon: # The platform of the controller which is # connected to this fan (see sensor.platform below) platform: nct6792 # The index of this fan as displayed by `fan2go detect` index: 3 # Indicates whether this fan should never stop rotating, regardless of # how low the curve value is neverStop: false # The curve ID that should be used to determine the # speed of this fan curve: cpu_curve - id: pump # The type of fan configuration, one of: hwmon | file hwmon: # The platform of the controller which is # connected to this fan (see sensor.platform below) platform: nct6792 # The index of this fan as displayed by `fan2go detect` index: 4 # Indicates whether this fan should never stop rotating, regardless of # how low the curve value is neverStop: true # The curve ID that should be used to determine the # speed of this fan curve: pump_curve # A list of sensors to monitor sensors: # A user defined ID, which is used to reference # a sensor in a curve configuration (see below) - id: cpu_package # The type of sensor configuration, one of: hwmon | file | cmd hwmon: # A regex matching a controller platform displayed by `fan2go detect`, f.ex.: # "coretemp", "it8620", "corsaircpro-*" etc. platform: coretemp # The index of this sensor as displayed by `fan2go detect` index: 1 - id: system_package # The type of sensor configuration, one of: hwmon | file | cmd hwmon: # A regex matching a controller platform displayed by `fan2go detect`, f.ex.: # "coretemp", "it8620", "corsaircpro-*" etc. platform: nct6792 # The index of this sensor as displayed by `fan2go detect` index: 1 curves: - id: cpu_curve # The type of the curve, one of: linear | function linear: # The sensor ID to use as a temperature input sensor: cpu_package # Sensor input value at which the curve is at minimum speed min: 30 # Sensor input value at which the curve is at maximum speed max: 80 - id: pump_curve # The type of the curve, one of: linear | function linear: # The sensor ID to use as a temperature input sensor: cpu_package # Sensor input value at which the curve is at minimum speed min: 40 # Sensor input value at which the curve is at maximum speed max: 80
Sie ist simpel abgeleitet von den Beispielen in der Readme. Man erkennt, wie die Zuordnung zu den Indezes und der Plattform der Lüfter funktioniert und dass jeweils ein Lüfter, ein Sensor und eine Kurve gebraucht wird – wobei natürlich zwei Lüfter sich auch eine Kurve teilen können. Zwischen Minimal- und Maximaltemperatur linear zu schalten ist ein sehr simpler Ansatz, kann auch funktionieren, wenn nicht können auch PWM-Schritte angegegen werden. Da erklärt die Githubseite mehr.
Nicht wundern: Die AIO-Pumpe über den PWM-Wert zu steuern macht man nicht immer, oft kann sie auf 100% laufen. Bei meiner alten Corsair H90 aber piepst sie dann zu arg.
Starten
Nun startet man das Programm einfach mit:
sudo fan2go
Das System sollte man nun ordentlich testen, dass es ja nicht überhitzt. Stimmt alles könnte man wie in der Readme vorgeschlagen einen Systemdienst anlegen, ich packte mir den Befehl stattdessen in die /etc/rc.local.
Ich bin mit dem Ergebnis ganz zufrieden, mein System ist deutlich leiser geworden und bei fancontrol wollte die alte Konfigurationsdatei nicht mehr funktionieren. Eine Alternative zu haben ist toll. Ich vermisse aber ein Interface, das die manuelle Konfiguration ersetzt. Müsste ja nicht gleich komplett grafisch sein, schon eine UI im Terminal würde mir reichen.
Wichtiger aber noch: Es fehlt die Unterscheidung zwischen dem Start-PWM-Wert und dem Stop-PWM-Wert, die ja oft sehr unterschiedlich sind, da ein Lüfter viel mehr Energie zum Losdrehen braucht als zum Weiterdrehen. Deswegen sollte die Option neverStop vermieden werden, sie setzt den Start-PWM-Wert als Minimum fest und ist daher für reguläre Lüfter ziemlich laut. Vielleicht der gleiche Fehler wie der meines Mainboards anfangs. Nur für die Pumpe passte das perfekt. Ich hoffe da entwickelt sich das Projekt noch weiter, sodass man die Option auch für Lüfter setzen kann.
Trotz der Einschränkungen finde ich das Programm schon jetzt ziemlich großartig. Vielleicht ist es auch für den ein oder anderen Leser hilfreich, gerade in dieser Phase des Sommers.
onli blogging am : Brainwavzs ProStock-Ohrenpolster für den ATH-M50x
Vorschau anzeigen
onli blogging am : Mein neuer PC
Vorschau anzeigen
onli blogging am : Inwiefern Hochsensibilität existiert
Vorschau anzeigen
onli blogging am : Koss KSC75, Kopfhörer zwischen perfektem Komfort, guter Klangqualität und wortwörtlichem Schrott
Vorschau anzeigen