mandag 29. september 2008

Patching the DSDT table

How to reduce fan noise on your HP notebook


Warning: This procedure has the potential to damage your computer!


This procedure involves patching your DSDT table and altering the fan speeds specified in the DSDT table. (You may read more about DSDT in Wikipedia). This procedure has to be repeated every time you update your BIOS.

Download equus.exe (right upper corner) to extract the DSDT table from registry (raw binary).

You need the following software to compile:
 Microsoft ASL Compiler (Latest version)
You may download it from http://www.microsoft.com/.

For monitoring purposes you may use:
 HWMonitor (Recommended)
You may download it from http://www.cpuid.com/.


Follow the instructions beneath:
1. Install Microsoft ASL Compiler and copy asl.exe from the install directory to C:\ACPI. (Create the C:\ACPI if necessary)


2. Copy equus.exe to C:\ACPI


3. Run equus.exe. You will be prompted to enter the subkey path. This is the directory where your DSDT table is loaded in the registry. Easiest way to find it is to do the following:
a. Run -> regedit
b. It is usually located approximately on the same directory. E.g:
i. HKEY_LOCAL_MACHINE\HARDWARE\ACPI\DSDT\HP____\nc8430\00010000
c. Once you find the subkey, right click to "copy key name" (or something).
d. Paste the directory into equus command window


4. Now you are prompted to enter the key name. This is the actual key we are looking for where the fan speed information is loaded. The key we are looking for is located within the subkey you found above. It is a REG_BINARY and usually named "00000000". Thus, just enter 00000000


5. If everything worked, a file named dsdt.aml should show up in C:\ACPI. If the file is not there, the directory or the key name you entered is not valid. (The software just skips on error)
6. Run command prompt using "Run as Administrator" and type the following:
a. cd C:\ACPI
b. copy dsdt.aml dsdtorig.aml (Creates a backup)
c. asl /u dsdt.aml


7. If everything went fine, a new file named dsdt.ASL should be created in C:\ACPI


8. Open dsdt.ASL in notebook. It should look like a software code. Now is the tricky part. You need to find the fan speeds. However, numbers are written in something like hexadecimals. (You may read about hexadecimal numbers in Wikipedia).


9. From now on you need a converter to convert decimal numbers to and from hexadecimal. You may use this webpage:
a. http://netzreport.googlepages.com/online_converter_for_dec_hex.html



10. You know that at some point your fan hits 100% of its speed. The fan speeds are given as percentage in the DSDT table. In hexadecimals 100 is 64. Thus, in the dsdt.ASL file 100
should look like 0x64. Moreover, you know that at some point the fan stops. In hexadecimal 0 is 0. Thus, in the dsdt.ASL file 0 should look like 0x0


11. In the dsdt.ASL file, simply search for 0x64. You are looking for a "list" of numbers that starts with 100 and ends with 0. The "list" should contain around 5 numbers, all in 0x(hexadecimal) and ranging between 100 and 0 in descending order.
a. E.g. ( The text above and under may be different in different systems)




12. Change the fanspeed as desired using the hexadecimal converter
a. E.g:
i. 100% -> 0x64
ii. 80% -> 0x50
iii. 45% -> 0x2d
iv. 35% -> 0x23
v. 0% -> 0x0
b. You need to be sure that you are actually changing fan speeds and nothing else!


13. Save dsdt.ASL


14. Enter the following in the command prompt window
a. asl dsdt.asl
i. You may get some warnings, but if you haven’t touched anyting beside the fan speeds, just ignore them!
b. asl /loadtable dsdt.aml


15. Now reboot and enjoy the silence


Remarks: Do not change the top two fan speeds as they will act as "buffers" given by the manufacturer. This will prevent you from burning your system if you overdo the "silencing".
Your system will now run slightly hotter. For a notebook with discrete graphic accelerator 60 C is an acceptable idling temptratur.


If you want to recover back to your original DSDT table, just type this on the command prompt:
cd C:\ACPI
asl /loadtable dsdtorig.aml


This method was tested on Vista 32-Bits and HP Compaq nc8430. This method may work on non-HP systems, however the author has no experinece with non-HP system.

Please try the method and give me your feedback.