Samsung P35 XVM 1500 - SuSE Linux 9.3 - 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 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 Intel ACPI Component Architecture ASL Optimizing Compiler / AML Disassembler version 20030918 [Sep 18 2003] Copyright (C) 2000 - 2003 Intel Corporation Supports ACPI Specification Revision 2.0b ASL Input: dsdt.dsl - 5042 lines, 173225 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 reiserfs msr Kernel image: /boot/vmlinuz-2.6.11.4-20a-default.old Initrd image: /boot/initrd-2.6.11.4-20a-default.old Shared libs: lib/ld-2.3.4.so lib/libblkid.so.1.0 lib/libc.so.6 lib/libselinux.so.1 lib/libuuid.so.1.2 No modules.pcimap file found Cannot determine dependencies of module piix. Is modules.dep up to date? Cannot determine dependencies of module reiserfs. Is modules.dep up to date? Cannot determine dependencies of module msr. Is modules.dep up to date? Driver modules: none Filesystem modules: Including: klibc initramfs udev fsck.reiserfs Bootsplash: SuSE (1024x768) ACPI DSDT: /etc/DSDT.aml 5294 blocks Kernel image: /boot/vmlinuz-2.6.11.4-21.9-default Initrd image: /boot/initrd-2.6.11.4-21.9-default Shared libs: lib/ld-2.3.4.so lib/libblkid.so.1.0 lib/libc.so.6 lib/libselinux.so.1 lib/libuuid.so.1.2 Driver modules: kernel/drivers/ide/ide-core.ko kernel/drivers/ide/pci/piix.ko kernel/arch/i386/kernel/msr.ko kernel/drivers/ide/ide-disk.ko kernel/drivers/cdrom/cdrom.ko kernel/drivers/ide/ide-cd.ko Filesystem modules: kernel/fs/reiserfs/reiserfs.ko Including: klibc initramfs udev fsck.reiserfs Bootsplash: SuSE (1024x768) ACPI DSDT: /etc/DSDT.aml 6333 blocks tuxBook:~/dsdt #
Nach einem Neustart wird die DTSD Tabelle duch den Kernel geladen
steve@tuxBook:~> cat /var/log/boot.msg | grep "DSDT" <7>ACPI: DSDT (v001 INTEL ODEM 0x06040000 MSFT 0x0100000e) @ 0x00000000 <6>ACPI: Looking for DSDT in initramfs... found /DSDT.aml ... successfully read 20738 bytes from /DSDT.aml <6>ACPI: Using customized DSDT <4> ACPI-0293: *** Info: Table [DSDT] replaced by host OS
Hier noch der vorher/nachher trip_points Vergleich
Vorher:
steve@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:
steve@tuxBook:~> cat /proc/acpi/thermal_zone/THRM/trip_points critical (S5): 105 C passive: 99 C: tc1=0 tc2=9 tsp=50 devices=0xdff6e560 active[0]: 56 C: devices=0xdfdf5ae0
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.