Ok, here it is... sorry if it's a bit complicated, but I hope it helps someone - and perhaps someone will come up with some smarter and more useful adjustments and post them as well. At least I'll remember what to do if I have to repeat this at some point.

The basic principles might apply to most other laptops too.
If something isn't working or there's an error, tell me so I can fix it. Ask if there's a part you fail to follow.
Patching the HP 8710w DSDT tables
First of all, anything you do is completely at your own responsibility. This is certainly not something that is intended to be done by end users, so there's a real chance of killing your computer if something goes wrong and I'm sure HP won't be very symphatetic. These instructions are what worked for me, but I can't guarantee that they work in case of other units or versions.
Also don't expect this to magically solve all problems - I think that fundamentally the problems are about too hot hardware. For example, switching the thermal pads may be a much better solution because it actually addresses the heat generation issues. However, tweaking the DSDT tables can provide some help for certain specific problems. I urge you to track down your specific problems using tools like Notebook Hardware Control (which shows not only temperatures and fan speeds, but also the thresholds where the fan speeds are changed). The problems seem to be related to the thermal zone TZ2, aka the GPU. Discussion about the specifics can be found earlier in this thread.
This is largely based on Eddie Tse's write-up on a similar hack for 8510p, which can be found at
http://eddietse.blogspot.com/2008/03...to-reduce.html . So thanks Eddie.
So, let's begin:
1. Get the MS ASL Compiler at
http://download.microsoft.com/downlo...iler_3.0.1.msi and install it.
2. Create some working directory, say, C:\dsdtpatch\
3. Copy asl.exe to C:\dsdtpatch\ from the installed compiler program files.
4. Open a command line window. You may need to run it with admin privileges (right-click it on vista and choose "Run as administrator")
5. You need to extract the AML data from the Windows registry as raw binary. This is somewhat difficult, because regedit doesn't offer a feature to export keys as binary, only hex. The key is 00000000 in HKEY_LOCAL_MACHINE\HARDWARE\ACPI\DSDT\HP____\nc65xx\00010000 . Tse has provided a simple .Net program for this purpose, but unfortunately it only works with 8510p. I can't help you much with this - here's a really clumsy way that also requires an unix shell. Who knows, perhaps there's some improved version of regedit or something that would do this automatically, but this is the way I did it because I was too lazy to look for one. Anyway:
- export the key to C:\dsdtpatch\dsdt.reg
- make a backup copy, just in case
- move to unix shell (sorry

)
- here's a simple and understandable command that converts it to binary:
cat dsdt.reg | perl -pe 's/\n//g' | perl -pe 's/^.*://;s/[^a-f0-9]//g;s/(..)/pack("C",hex($1))/ge' > nc65xx.aml
- whew, if it worked, nc65xx.aml should now contain the registry key as raw binary (you may want to check that it seems reasonable - for me it is about 82kB and starts with letters "DSDT")
- get the file back to windows and make a backup copy
6. Disassemble the file we just created in command line: asl /u nc65xx.aml
7. You should end up with a file called nc65xx.ASL which is the ACPI source code. Make a backup copy.
8. Finally, we have the file we actually need to modify. Somewhere in the file you should find a few lines looking like this:
Name(C364, Package(0x6)
{
0x64,
0x55,
0x46,
0x32,
0x1e,
0x0
}
The name might vary but I guess the hex numbers should be the same for others. These are the fan speeds in the range of 0 to 100 (0x64). This is a great chance to use the fancy calculator touch button on the top right corner of your 8710w - it's useful for the hex conversions and calculations. The above numbers correspond to the values TZ5 (fan speed) gets.
Above these numbers there should be a similar long list of other numbers. These are the fan temperature thresholds for various temperature zones. You should find a set of numbers that look as follows (there are other similar sets of numbers, but we are looking for these specific ones):
Package(0x8)
{
0x5ac,
0xc3c,
0xc6e,
0xcd2,
0xd36,
0xda4,
0xe1c,
0xe6c
},
Package(0x8)
{
0xc6e,
0xcd2,
0xd36,
0xda4,
0xe1c,
0xe80,
0xec6,
0xfa3
}
These are the GPU fan thresholds. They aren't plain numbers though - they're expressed in tenths of degrees celcius, added with 0xAAC. So for example, 0xD36 there is 0xD36 - 0xAAC = 0x28A = 650 = 65 degrees. For convinience, here are the above numbers converted to degrees in this way: the first set is [some negative number (don't know what this means)], 40, 45, 55, 65, 76, 88 and 96. The second set is 45, 55, 65, 75, 88, 98, 105 and 127.1. If you compare these numbers to what you see in Notebook Hardware Control or other program that shows this extra data, you can see the similarity with the TZ2 thresholds (and this is what I base my observations on, too - I have no idea why things are done in whatever way they are). I think the first set is the thresholds "below" current temperature and the second set is the ones "above". So if the current temp is 57C and the fan is spinning at 30%, the combined list of thresholds will be something like 40, 55, 65, 75, 88, 98 (notice that 45 is skipped) - i.e. this is what makes it move the threshold when one is crossed. Not sure about that one though.
Now, what to do with these numbers? You can use your own imagination and make tweaks based on your own observations - just don't get too adventurous so you won't break anything. I think there may be several different problems people are having, so what I'm about to describe may not apply for you. Especially if your problems are with external monitor, this is probably not very optimal.
Personally I found the biggest problem with my 8710w to be the GPU temps. After the GPU crosses 65C, it fires the fan up to 70% and keeps it there until the temps get down all the way to 55C. This takes really long or doesn't happen at all. So I decided to change the 55C threshold to 60C. This makes the fan stop within reasonable time. On the other hand, it might cause a pulsating cycle where the fan goes on and of repeatedly, swinging the temperature between 60 and 65C. But I guess that would be less annoying than the constant vacuum cleaning.
So what I did now was to change the numbers corresponding to 55C to numbers corresponding to 60C. The 55C number in the above list is 0xcd2 (55 degrees = 550 = 0x226 and 0x226 + 0xAAC = 0xCD2). I changed this to 0xd04 (60 degrees = 600 = 0x258 and 0x258+0xAAC = 0xD04). Note that there are two instances of it, replace them both. And that's it, save the file.
I haven't experimented with this much yet. Other tweaks might be much better. Some ideas could be:
- Just lowering the fan speeds, like people often do with these DSDT hacks. This would make the noise more tolerable, but could risk overheating.
- Making the transition more gradual. Right now, the fan often goes straight from 30% to 70%. There is a 50% entry in the speed table and it's activated at times, but for some reason it is also often skipped. Going through this intermediate stage could prevent the temps from getting to the 70% range that often.
8. Time to compile the modified source code. In your command line window: asl nc65xx.ASL
9. You'll likely get some warnings and errors. It appears that the warnings can be ignored, but the errors do prevent it from compiling. If you didn't break anything else, the errors you get are a few syntax errors which can be fixed as follows:
- Go to the line of the error. For example if you get "nc65xx.ASL(14084): error: expecting Symbol '('" then go to line 14084 in your editor and you may find something like this:
If(LEqual(Arg0, 0x0))
{
C381
} <------- (note: this is the line 14084)
- Add () to the function call in the previous line, so that you get something like this:
If(LEqual(Arg0, 0x0))
{
C381()
}
- Try to recompile. When you get a new error, repeat this procedure. You may need to repeat this for a few times.
10. After the errors are fixed, the file should compile and overwrite the nc65xx.aml. Check that the file timestamp has updated.
11. Install the thing. Make sure you have admin privileges, otherwise it will fail. Installation is done in console: asl /loadtable nc65xx.aml
12. That's it. Reboot your computer and hope that everything worked. If it boots up with no problems, verify that your changes have taken effect using some program that shows the fan speeds and thresholds. Be sure to test it thoroughly if you have made any risky modifications (e.g. significantly dropping fan speeds which could cause excessive heating). If your machine fails to boot, apparently pressing F8 at boot and choosing "use last known good" option should boot it with the old settings. In that case you should perhaps load the original backuped aml file back to registry.