Samsung P35 XVM 1500 - SuSE Linux 10.1 - ACPI
Durch das anpassen der Temperatur Schwellwerte in der DSDT Tabelle kann man das Lüfterverhalten des Samsung P35 optimieren.
Die nötigen Tools heissen bei SuSE pmtools (ACPI-Debugging-Programme) und lassen sich mit YaST nachinstallieren. Eine Aktuelle Version findet man ausserdem bei Intel .
Zum späteren Kompilieren verwende ich allerdings eine ältere Version ohne Optimierungen. Auf verschiedenen Seiten und Foren wurde dieser Weg empfohlen. Ich habe die DSDT.dsl mit der alten und der neuen Version kompiliert und konnte bei einem Vergleich beider Dateien Binär keinen Unterschied finden.
Zuerst speichern man die DSDT Tabelle direkt aus dem BIOS in eine Datei und wandelt diese in lesbareren Code um.
tuxBook:~/dsdt # cat /proc/acpi/dsdt > dsdt.aml tuxBook:~/dsdt # iasl -d dsdt.aml Intel ACPI Component Architecture AML Disassembler version 20060127 [Apr 23 2006] Copyright (C) 2000 - 2006 Intel Corporation Supports ACPI Specification Revision 3.0a Loading Acpi table from file dsdt.aml Acpi table [DSDT] successfully installed and loaded Pass 1 parse of [DSDT] Pass 2 parse of [DSDT] Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions) ...................................................................... ...................................................................... ...................................................................... ...................................................................... ....................................................... Parsing completed Disassembly completed, written to "dsdt.dsl" tuxBook:~/dsdt #
In der Datei dsdt.dsl kann man nun die Temperatur schwellwerte Patchen. Bei meiner Gepatchten Tabelle habe ich die Ein- und Ausschaltwerte jeder Lüfterstufe um 10C erhöht.
Scope (\_TZ) { Name (FANI, 0x00) Name (FAN3, Buffer (0x07) { 0x00, 0x00, 0x00, 0xB8, 0xE5, 0xF6, 0xFF }) Name (FANT, Buffer (0x07) { 0xFF, 0xFF, 0xFF, 0x25, 0x14, 0x09, 0x09 }) Name (CMP0, Package (0x02) { Package (0x02) { Package (0x0A) { 0x00, 0x00, 0x2D, 0x48, 0x55, 0x63, 0x69, 0x00, 0x09, 0x32 }, Package (0x07) { 0x00, 0x00, 0x00, 0x23, 0x41, 0x4B, 0x5E } }, Package (0x02) { Package (0x0A) { 0x00, 0x00, 0x2D, // An: Stufe 1 (2Dh = 45C) 0x41, // An: Stufe 2 (41h = 65C) 0x55, 0x63, 0x69, // critical (S5): (69h = 105C) 0x00, 0x09, 0x32 }, Package (0x07) { 0x00, 0x00, 0x00, 0x23, // Aus: Stufe 1 (23h = 35C) 0x37, // Aus: Stufe 2 (37h = 55C) 0x4B, 0x5E } } })
Auszug aus der Originaltabelle.
Nach dem Patchen muss das gute Stück wieder kompiliert und nach /etc/ kopiert werden
tuxBook:~/dsdt # ./iasl -oa dsdt.dsl bash: ./iasl: Datei oder Verzeichnis nicht gefunden tuxBook:~/dsdt # iasl -oa dsdt.dsl Intel ACPI Component Architecture ASL Optimizing Compiler version 20060127 [Apr 23 2006] Copyright (C) 2000 - 2006 Intel Corporation Supports ACPI Specification Revision 3.0a ASL Input: dsdt.dsl - 5534 lines, 200895 bytes, 2348 keywords AML Output: DSDT.aml - 20738 bytes 598 named objects 1750 executable opcodes Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 0 Optimizations tuxBook:~/dsdt # cp DSDT.aml /etc/DSDT.aml tuxBook:~/dsdt #
Die DSDT Tabelle ist soweit fertig und muss dem System noch bekannt gemacht werden. Hierzu wird der in der Datei
/etc/sysconfig/kernel
die Zeile ACPI_DSDT="" in
ACPI_DSDT="/etc/DSDT.aml"
Jetzt muss noch die "Initial RAM Disk" geändert werden, damit die fertige DSDT.aml da hinein kopiert wird.
tuxBook:~/dsdt # mkinitrd Root device: /dev/hda3 (mounted on / as reiserfs) Module list: piix processor thermal fan reiserfs msr (xennet xenblk) Kernel image: /boot/vmlinuz-2.6.16.27-0.6-default Initrd image: /boot/initrd-2.6.16.27-0.6-default Shared libs: lib/ld-2.4.so lib/libacl.so.1.1.0 lib/libattr.so.1.1.0 lib/libc-2.4.so lib/libdl-2.4.so lib/libhistory.so.5.1 lib/libncurses.so.5.5 lib/libpthread-2.4.so lib/libreadline.so.5.1 lib/librt-2.4.so lib/libuuid.so.1.2 Driver modules: ide-core ide-disk piix processor thermal fan msr Filesystem modules: reiserfs Including: initramfs fsck.reiserfs Bootsplash: SuSE (1400x1050) ACPI DSDT: /etc/DSDT.aml 10628 blocks tuxBook:~/dsdt #
Nach einem Neustart wird die DTSD Tabelle duch den Kernel geladen
tuxBook:~ # cat /var/log/boot.msg | grep "DSDT" <7gt;ACPI: DSDT (v001 INTEL ODEM 0x06040000 MSFT 0x0100000e) @ 0x00000000 <6gt;ACPI: Looking for DSDT in initramfs... found /DSDT.aml ... successfully read 20738 bytes from /DSDT.aml <6gt;ACPI: Using customized DSDT <4gt;ACPI (tbget-0282): Table [DSDT] replaced by host OS [20060127] tuxBook:~ #
Hier noch der vorher/nachher trip_points Vergleich
Vorher:
tuxBook:~ # cat /proc/acpi/thermal_zone/THRM/trip_points critical (S5): 105 C passive: 99 C: tc1=0 tc2=9 tsp=50 devices=0xdff6ec80 active[0]: 45 C: devices=0xc14d7ae0
Nachher:
tuxBook:~ # cat /proc/acpi/thermal_zone/THRM/trip_points critical (S5): 105 C passive: 99 C: tc1=0 tc2=9 tsp=50 devices=0xdfd03c20 active[0]: 56 C: devices=0xdfd039a0 tuxBook:~ #
Durch die VCore Anpassung und der erhöhen Lüfterschwellwerte läuft das Notebook jetzt im "Office"-Betrieb statt mit 45C Dauerlüfter, absolut lautlos bei 45C - 50C.