In meiner Mediabox setze ich ein ASUS P5B-E ein. Um die Mediabox ein wenig leiser zu gestalten musste ich mich mit lm_sensors auseinandersetzen. Leider stellte sich dabei auch heraus, dass das Board nicht per se unterstützt ist und einiges and Handarbeit notwendig war bis alles wie gewünscht funktioniert hatte.
Nach zwei Tagen und disassemblieren des ACPI/DSDT anhand der Anleitung 'ASUS Formula Hacking' im lm_sensors wiki konnte ich die Konfigurationsdatei für das Board zusammenbasteln.
Zu beachten ist, dass das Ganze erst ab Kernel 2.6.21 und nur mit einem Patch funktioniert, da der Treiber für den Winbond w83627dhg (dieser kümmert sich um die Bereitstellung der Daten) erst ab dieser Kernel version eingeführt wird. Der Kernel ist zur Zeit (17.03.2007) allerdings noch nicht stabil, aber das handelt sich sicherlich nur noch um ein paar Tage.
Eingesetzte Versionen:
- ASUS P5B-E mit BIOS Version 1101
- Kernel 2.6.21-rc3 mit dem Coretemp Patch aus der lm_sensors Mailingliste. Hiermit ist es möglich die Core Temeraturen der CPU auszulesen
- lm_sensors 2.10.2
- sensors.conf für ASUS P5B-E (alternativ lm-sensors wiki eintrag)
Wurde alles erfolgreich gepatcht und installiert kommt folgendes Zustande:
w83627dhg-isa-0290
Adapter: ISA adapter
Vcore: +1.18 V (min = +0.85 V, max = +1.60 V)
+12V: +12.20 V (min = +10.19 V, max = +13.46 V)
+3.3V: +3.28 V (min = +2.98 V, max = +3.63 V)
5V: +5.12 V (min = +4.51 V, max = +5.50 V)
Cha1 Fan: 1081 RPM (min = 803 RPM, div = 16)
CPU Fan: 1054 RPM (min = 602 RPM, div = 16)
Cha2 Fan: 1140 RPM (min = 803 RPM, div = 16)
Sys Temp: +51 C (high = +95 C, hyst = +60 C)
CPU Temp: +24.0 C (high = +95.0 C, hyst = +45.0 C)
coretemp-isa-0000
Adapter: ISA adapter
Core0 Temp:
+32 C (high = +85 C)
coretemp-isa-0001
Adapter: ISA adapter
Core1 Temp:
+32 C (high = +85 C)
Natürlich macht das die Box nicht leiser als zuvor, aber man kann sich jetzt die Werte ansehen. Die Geräuschkulisse der Lüfter lässt sich über die PWM Steuerung beherrschen. Der Winbond Chip untertützt für jeden Lüfter auch einen PWM eingang. Allerdings lässt das ASUS Board nur die getrennte Regelung für den CPU Lüfter zu. Alle anderen Lüfter laufen über die gleiche PWM Ansteuerung (Chassis Lüfter definitiv, gerüchteweise auch der Powersupply Lüfter). Über die PWM Regelung kann man die Pulsbreite der Lüfterspannung in 256 Schritten einstellen und somit die Drehzahl des Lüftermotors beeinflussen.
Über die (Pseudo)Dateien in /sys/devices/platform/i2c-9191/9191-0290/ lässt sich die Lüfterdrehzahl beeinflussen. Der Chip unterstützt 4 PWM Kanäle (pwm1 bis pwm4). Jeder Kanal hat mehrere Dateien zugeordnet, wovon im Moment nur pwm[1-4] und pwm[1-4]_enable von Intresse sind. Die Bedeutung der anderen Dateien habe ich noch nicht recherchiert, und ob diese überhaupt bei diesem Board einen Einfluss haben ist unbekannt. Die Lüfter sind wie folgt verteilt:
- pwm1: unbenutzt
- pwm2: CPU Lüfter
- pwm3: unbenutzt
- pwm4: Chassis (und evtl. Powersupply) Lüfter
Über die Datei pwm[1-4]_enable lässt sich die PWM Steuerung durch das Betriebssystem aktivieren. Schreibt man hier den Wert '1' hinein übernimmt der Kernel Treiber die Kontrolle des Lüfters und deaktiviert dabei natürlich auch zb. das QFan Feature aus den BIOS Einstellungen. Ist der Modus einmal aktiviert, kann nur durch einen Powercycle QFan wieder aktiviert werden (zumindest glaube ich, dass das so ist).
Ist PWM eingeschaltet kann durch schreiben von Werten zwischen 0 und 255 in die Datei pwm[1-4] die Pulsbreite gesteuert werden. Dies lässt sich durch den Sensors Befehl leicht prüfen. Ein Beispiel für den CPU Lüfter:
# verzeichnis wechseln
cd /sys/devices/platform/i2c-9191/9191-0290/
# pwm für cpu lüfter einschalten
echo '1' >pwm2_enable
# lüfter auf volle drehzahl
echo '255' >pwm2
# drehzahl anzeigen
cat fan2_input
2721
# lüfter auf halbe pwm
echo '128' >pwm2
# drehzahl anzeigen
cat fan2_input
1917
# lüfter ausschalten
echo '0' >pwm2
# drehzahl anzeigen
cat fan2_input
0
Kombiniert man dies nun noch mit dem Auslesen der Temperatur, dann lässt sich über ein einfaches Skript (z.B. in Perl) eine Lüftersteuerung basteln, die hochgradig anpassbar ist. Sie könnte etwa den Lüfter komplett deaktivieren, wenn die Temperatur das zulässt.