Contribute
Register

New Fan Control DSDT - for silent fan at higher temps!

Status
Not open for further replies.
I'm still trying to figure out what is the best "sweet spot"

It seems that 50°C should work for the most laptops with first setting no more than 55°C
I experimented with three settings: 50°, 55° and 60°. For the first 2-3 hours 50° seemed like the right choice, then fan turns on more frequently. I changed the setting to 55° and I was OK for 10-15 minutes. Same situation when I updated initial temperature to 60°. Good for the first 15 minutes only laptop got much warmer.

Our laptop was designed with fan being ON at much lower temperatures. If we move temperature too high all the extra heat is absorbed by the computer case and we are taking the ability to dissipate the heat for the rest of electronics components on the motherboard.

What is your experience?

Much above 50 the returns diminish. So far I'm thinking 50-52 is the sweet spot. You can't expect the laptop to run all the time without the fan (unless you live in a refrigerator), but it is way better than the fan being always on.

Ideally, I'd like to find a way to make the fan spin slower. Then the ability to control fan speeds starts to become really interesting. But that will certainly require some rework of the fan wiring (inline resistor).

I always wonder if some HP engineer in California is thinking to himself "These guys are crazy!?!"
 
Tried to apply the patches one by one using dsdt patcher, but got about 200 errors. Any good guide to patch my dsdt with the following patches and not get/fix errors??
 

Attachments

  • Kuvankaappaus 2012-9-16 kello 19.39.08.jpg
    Kuvankaappaus 2012-9-16 kello 19.39.08.jpg
    201.9 KB · Views: 505
Tried to apply the patches one by one using dsdt patcher, but got about 200 errors. Any good guide to patch my dsdt with the following patches and not get/fix errors??

I had exactly the same error with DSDT-patcher.
Used auto patcher together with RehabMan's guide and, boom 0 errors.

Cheers.
 
Ok, here's some feedback from me. I'm running the new solution with ML for already two days and a half. I've tried different fan configurations, this is my current:

Code:
// Fan Control Table (pairs of temp, fan control byte)\n
    Name (FTAB, Buffer ()\n
    {\n
        45, 255,     // 255 is off (really auto, but at low temp it is off)\n
        53, 128,     // 128 is slowest speed\n
        58, 82,\n
        64, 74,\n
        69, 59,\n
        72, 49,\n
        0xFF, 0     // last entry must be 0xFF, 0 is max fan speed\n
    })\n

I have issues with step three (82). It seems there is no step three for me. When the temperature for step three (82) is reached, the fan starts spinning with 42xx rpm, which should be happening at step four (74) and all next steps are shifted downwards according to this "anomaly" . And backward - when the temperature is dropping and step three is reached, the fan starts spinning with 29xx rpm, which should be happening at step two (128). This is happening on all fan configurations I've tried.
 
Ok, here's some feedback from me. I'm running the new solution with ML for already two days and a half. I've tried different fan configurations, this is my current:

Code:
// Fan Control Table (pairs of temp, fan control byte)\n
    Name (FTAB, Buffer ()\n
    {\n
        45, 255,     // 255 is off (really auto, but at low temp it is off)\n
        53, 128,     // 128 is slowest speed\n
        58, 82,\n
        64, 74,\n
        69, 59,\n
        72, 49,\n
        0xFF, 0     // last entry must be 0xFF, 0 is max fan speed\n
    })\n

I have issues with step three (82). It seems there is no step three for me. When the temperature for step three (82) is reached, the fan starts spinning with 42xx rpm, which should be happening at step four (74) and all next steps are shifted downwards according to this "anomaly" . And backward - when the temperature is dropping and step three is reached, the fan starts spinning with 29xx rpm, which should be happening at step two (128). This is happening on all fan configurations I've tried.

Make sure you are looking at average temperature and not actual heat sink temperature. And remember that on a change from one step to a step just one away, you will have to hold that temperature for 20 seconds before the change is effected. You can display the "Fan Counter" and "CPU Average" in HwMonitor (on the system menu bar) to make it easy to track. And then the EC itself delays actual fan change by 1 or 2 seconds after the new fan speed is selected.

What kind of software are you using to hold these temperatures steady?

It could also be that your EC responds to different steps, but I really don't think so. You could spend some time in RW-Everything under Windows to test how your EC responds.
 
Make sure you are looking at average temperature and not actual heat sink temperature. And remember that on a change from one step to a step just one away, you will have to hold that temperature for 20 seconds before the change is effected. You can display the "Fan Counter" and "CPU Average" in HwMonitor (on the system menu bar) to make it easy to track. And then the EC itself delays actual fan change by 1 or 2 seconds after the new fan speed is selected.

I'm aware with all this. I'm talking about average temperature in my previous post, I know about the 20 seconds delay and the HWMonitor app is displaying the average temperature and the counter from the very beginning.

What kind of software are you using to hold these temperatures steady?

I'll tell you, buy please, don't laugh at me :D - Firefox with 9 or 10 YouTube clips, opened in different tabs. When I want to achieve some temperature, all I have to do is to start or stop some of them. And the temperature is rising and dropping really slow, which is just what I need for these tests. IMHO Adobe Flash is pretty heavy enough to be used like this. If you know any other method, I'll be glad to know it.

Edit: Oh, I've just found a program called Prime95. Silly me!

It could also be that your EC responds to different steps, but I really don't think so. You could spend some time in RW-Everything under Windows to test how your EC responds.

Can you tell me how to do this, but with little more details?
 
I'm aware with all this. I'm talking about average temperature in my previous post, I know about the 20 seconds delay and the HWMonitor app is displaying the average temperature and the counter from the very beginning.



I'll tell you, buy please, don't laugh at me :D - Firefox with 9 or 10 YouTube clips, opened in different tabs. When I want to achieve some temperature, all I have to do is to start or stop some of them. And the temperature is rising and dropping really slow, which is just what I need for these tests. IMHO Adobe Flash is pretty heavy enough to be used like this. If you know any other method, I'll be glad to know it.

Edit: Oh, I've just found a program called Prime95. Silly me!



Can you tell me how to do this, but with little more details?

For RW-Everything, this is what you do:

- First you need hex values for all the fan control values in that table. They are FF, 80, 52, 4A, 3B, 31, 00.
- Download RW-Everything @http://rweverything.com/download/
- After installing it, run it and choose from the Menu "Access.Embedded Controller." This opens a window on your EC bytes.
- First you have to write a fake temperature to byte 0x26, so double click on it and type '1F', then click Done. This writes a fake temperature of 31 degrees C and tricks the EC into thinking temp is low. The fan should turn off now. If that doesn't work, try writing a 1 to byte 0x22 before writing the 1F to byte 0x26 (this is what my DSDT code does).
- Now the fan should be stopped, so you can start experimenting with fan control. Fan control byte is at 0x2F. So, double click on that byte and write 80. The fan should turn on at the lowest speed. You can now try all the other values and note differences in the fan noise pitch. In addition, the byte read at 0x2E is where the fan speed is read (0x2F is requested fan speed, 0x2E is granted fan speed).
- If you want to return the fan control to automatic, write 00 to 0x26, then write 0xFF to byte 0x2F. That puts everything back into automatic mode (exactly what Fanreset.dylib does).

BTW, here are my fan RPM speeds for each of the levels:
Code:
255 - off
128 - 2671
82  - 2997/3034
74  - 3321/3367
59  - 4165/4237
49  - ??? (unknown yet, I have to hold temp between 70-72 and haven't been able to do it)
0   - 5461/5585
 
I should add that you will want to make sure the BIOS option "Fan Always on with AC power" is turned off. Otherwise your fan will only turn off when running on battery.
 
is it safe to apply the experiment_fan when the original fan000 is already patched?
 
Status
Not open for further replies.
Back
Top