Contribute
Register

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

Status
Not open for further replies.
Are there technical reasons for this lazyness? I imagine some users might be, even subconscously, annoyed by frequent changes in environment noise, but from a purely technical pov?

By design. I'm one of the users you speak of. I don't like unnecessary changes in fan speed, thus I wrote the code to work that way...
 
By design. I'm one of the users you speak of. I don't like unnecessary changes in fan speed, thus I wrote the code to work that way...

I see. I'll try another approach: keeping the steps in fan speed so small that I won't notice changes. And then they can more closely follow temperature, I halved the delay before fan speed changes. Will try some days what the smooth curve feels like to work with.

Code:
// Fan Control Table (pairs of temp, fan control byte)\n
Name (FTAB, Buffer()\n
{\n
35, 255, \n
42, 128,\n
43, 127,\n
44, 126,\n
45, 125,\n
46, 124,\n
47, 123,\n
48, 122,\n
49, 121,\n
50, 120,\n
51, 119,\n
52, 118,\n
53, 117,\n
54, 116,\n
55, 115,\n
56, 114,\n
57, 113,\n
58, 112,\n
59, 111,\n
60, 110,\n
61, 109,\n
62, 108,\n
63, 107,\n
64, 106,\n
65, 105,\n
66, 104,\n
67, 103,\n
68, 102,\n
69, 101,\n
70, 100,\n
71, 99,\n
72, 98,\n
73, 97,\n
74, 96,\n
75, 95,\n
76, 94,\n
77, 93,\n
78, 92,\n
79, 91,\n
80, 90,\n
81, 89,\n
82, 88,\n
83, 87,\n
84, 86,\n
85, 85,\n
86, 84,\n
87, 83,\n
88, 82,\n
0xFF, 0\n
})\n

[..]

Name (FCTU, 10) // timeout for changes (fan rpm going up)\n
Name (FCTD, 20) // timeout for changes (fan rpm going down)\n

And a BIG thanks! for the explanations of fan control you have given in several places. Without this I would never have begun to understand it!


dg
 
I see. I'll try another approach: keeping the steps in fan speed so small that I won't notice changes. And then they can more closely follow temperature, I halved the delay before fan speed changes. Will try some days what the smooth curve feels like to work with.

Code:
// Fan Control Table (pairs of temp, fan control byte)\n
Name (FTAB, Buffer()\n
{\n
35, 255, \n
42, 128,\n
43, 127,\n
44, 126,\n
45, 125,\n
46, 124,\n
47, 123,\n
48, 122,\n
49, 121,\n
50, 120,\n
51, 119,\n
52, 118,\n
53, 117,\n
54, 116,\n
55, 115,\n
56, 114,\n
57, 113,\n
58, 112,\n
59, 111,\n
60, 110,\n
61, 109,\n
62, 108,\n
63, 107,\n
64, 106,\n
65, 105,\n
66, 104,\n
67, 103,\n
68, 102,\n
69, 101,\n
70, 100,\n
71, 99,\n
72, 98,\n
73, 97,\n
74, 96,\n
75, 95,\n
76, 94,\n
77, 93,\n
78, 92,\n
79, 91,\n
80, 90,\n
81, 89,\n
82, 88,\n
83, 87,\n
84, 86,\n
85, 85,\n
86, 84,\n
87, 83,\n
88, 82,\n
0xFF, 0\n
})\n

[..]

Name (FCTU, 10) // timeout for changes (fan rpm going up)\n
Name (FCTD, 20) // timeout for changes (fan rpm going down)\n

And a BIG thanks! for the explanations of fan control you have given in several places. Without this I would never have begun to understand it!


dg

I actually do this in my 04b_FanQuietMod.txt (which is what I'm using now):
Code:
	Name (FTAB, Buffer()\n
	{\n
        //35, 255,  // commented out so always on\n
        57, 128,\n
        58, 122,\n
        59, 115,\n
        60, 109,\n
        61, 103,\n
        62, 96,\n
        63, 90,\n
        64, 87,\n
        65, 85,\n
        66, 82,\n
        67, 80,\n
        68, 77,\n
        69, 73,\n
        70, 68,\n
        71, 64,\n
        72, 59,\n
        73, 56,\n
        74, 52,\n
        75, 49,\n
        0xFF, 0\n
	})\n

The code is still reluctant to change the speed due to rolling average temperature tracking and delays before committing a change. But those are also things you can play with in the code (rolling average window, timeouts).

Be careful in your effort to use slower fan speeds at the top end of temperatures... There might not be enough fan action to adequately cool the CPU...
 
Not sure where to post...

Bizarre reading of mainboard proximity, sawtooth between 0 and 8°C.

HWMonitor 5.2.804.

mbprox.png
 
I actually do this in my 04b_FanQuietMod.txt (which is what I'm using now):

[...]

The code is still reluctant to change the speed due to rolling average temperature tracking and delays before committing a change. But those are also things you can play with in the code (rolling average window, timeouts).

Be careful in your effort to use slower fan speeds at the top end of temperatures... There might not be enough fan action to adequately cool the CPU...

Yeah, it was 4b that got me thinking along this line. :)

That's a good idea to ramp up faster in the higher degrees. Almost all of my work stays <60°C, so that would not hurt much.

EDIT: Just looked it up. Measuring showed that no die temperature at 100% cpu load went higher than 63°C. That was with the original quiet fan mod.
 
Obviously bogus. I'm not even sure what plugin that sensor comes from...


Maybe I did something wrong when pasting the 4b with my alterations into MacIasl... never mind.
 
I am now testing a fan control that with frequent but small changes in rpm that is steeper in the higher temps. So far, the changing speed was not noticeable. The fan bytes for a modified 4b patch are now:
Code:
 35, 255, // not commented out so off \n
42, 128,\n
43, 127,\n
44, 126,\n
45, 125,\n
46, 124,\n
47, 123,\n
48, 122,\n
49, 121,\n
50, 120,\n
51, 119,\n
52, 118,\n
53, 117,\n
54, 116,\n
55, 114,\n
56, 112,\n
57, 110,\n
58, 108,\n
59, 105,\n
60, 102,\n
61, 98,\n
62, 94,\n
63, 90,\n
64, 86,\n
0xFF, 0\n

I compared them to the other fan patches.

Fanbytes.png

Apparently the 4x30s have a fan that goes up to the roaring 5015 rpm, whereas the 4x40s max out at 3034 rpm. At least I could never get my i5 higher than that. EDIT: now I can, maybe I had not enough cpu load.


4x40s users: Does your machine run cooler than the 4x30s and would generally profit from a FTAB for lower fan speeds?

Does a fan behaviour with frequent but small changes in speed annoy you (please try)?
 
I only changing few low temp settings and leave the rest alone:
43, 128,
48, 122,
53, 115,

BTW, I never really notice the fan noise when everything works. If fan is noisy - you may have defective heat sink and nothing will help you until you corect it. If you have 4x40s - it is piece of cake, if it is 4530s or 4730s - that is a big work.
 
Not sure where to post...

Bizarre reading of mainboard proximity, sawtooth between 0 and 8°C.

HWMonitor 5.2.804.

View attachment 61443

I just remembered what this is. It is from ACPISensors.kext, method TSYS. 04b_FanQuietMod.txt has debugging still enabled, since it is still a work in progress (see comment at top). You will see these two methods in the patch:

Code:
	Method (TCPP, 0, Serialized)  // Average temp\n
	{\n
		Store (FNUM, Local0)\n
		if (LNotEqual (Local0, 0))\n
		{\n
			Store (FSUM, Local1)\n
			Divide (Local1, Local0,, Local0)\n
		}\n
		Return (Local0)\n
	}\n
	Method (TSYS, 0, Serialized)  // fan counter\n
	{\n
		Return (FCNT)\n
	}\n

TSYS: Returns the FCNT (fan counter)
TCPP: Returns average CPU temperature (FSUM/FNUM)

On my machine I have a special version of HwMonitor that displays these with better labels. It uses the localization facilities in Cocoa framework to simply map the english strings normally displayed to different string. You can see those files in the HwMonitor.app/Contents/Resources folder.
 
Status
Not open for further replies.
Back
Top