Contribute
Register

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

Status
Not open for further replies.
Hi, RehabMan
First Id like to thank you for all you've done for the hackintosh community, i use some of your software to run my hackintosh PCs and it's great.
I have one question regarding FANs. Couldnt find anything about my current build so this topic is the closest so i thought to give it a shot.
HP EliteDesk 800 G1 (detail in signature) has some weird SuperIO which fails to load with fakesmc plugins so no go in that direction, unless there is a way to adopt it. Your approach is very interesting and it seems to fit a lot of manufacturers notebooks, not only HP. So I was wandering were to start looking if I want to monitor and control CPU fan in my desktop.
If you need any more info like DSDT or something i can post this later when I'm home.

It is reverse engineering... It is unlikely your fan control is anything like laptop fan control.
 
Hello RehabMan.

We can use this method with Clover?
 
Hello Rehabman,

I was wondering about the formula you are using in ProBook fan patches to calculate the fan speed using fan control byte value in FAN0 method:

Code:
Method (FAN0, 0, Serialized)
{
    Store (\_SB.PCI0.LPCB.EC0.FRDC, Local0)
    If (Local0) { Divide (Add(0x3C000, ShiftRight(Local0,1)), Local0,, Local0) }
    If (LEqual (0x03C4, Local0)) { Return (Zero) }
    Return (Local0)
}

Where did this formula initially came from?

On my attempts for Lenovo Y510p the fan control byte return values different than the ones you put in Fan Control Table (of course) and the formula you use not work correctly. I made different formula that work but still don't know whether there are some guidelines that should be followed. Is it just that we need to map the fan control byte value to a suitable speed? What are the max an min speed if I rely on values returned by BIOS control? I don't have registers to store high and low speeds in my tables.

Thanks.
 
Hello Rehabman,

I was wondering about the formula you are using in ProBook fan patches to calculate the fan speed using fan control byte value in FAN0 method:

Code:
Method (FAN0, 0, Serialized)
{
    Store (\_SB.PCI0.LPCB.EC0.FRDC, Local0)
    If (Local0) { Divide (Add(0x3C000, ShiftRight(Local0,1)), Local0,, Local0) }
    If (LEqual (0x03C4, Local0)) { Return (Zero) }
    Return (Local0)
}

Where did this formula initially came from?

It comes from existing code in the native ACPI files...

On my attempts for Lenovo Y510p the fan control byte return values different than the ones you put in Fan Control Table (of course) and the formula you use not work correctly. I made different formula that work but still don't know whether there are some guidelines that should be followed. Is it just that we need to map the fan control byte value to a suitable speed? What are the max an min speed if I rely on values returned by BIOS control? I don't have registers to store high and low speeds in my tables.

My code maps temperatures to fan speeds...
 
It comes from existing code in the native ACPI files...
I see. So I should just make note of it and modify or totally replace it to suit my laptop, right?

My code maps temperatures to fan speeds...
I understand. My concern is the scale of the resulting fan speeds. Your code uses fan control table FTAB to do the mapping but how the numbers for fan control byte were calculated? monitored someway in Windows for example?

For what I'm doing (only allowing HWMonitor to read fan speed, no control for now) I can re-scale these numbers in the table which will only reflect how RPM is calculated in FAN0 and consequently what will appear in HWMonitor. I can't make much sense on how these numbers are defined.
 
I see. So I should just make note of it and modify or totally replace it to suit my laptop, right?

You might look here to further your understanding of how your fan controls might work in the EC.
Saw this posted elsewhere just yesterday...
(hopefully you're familiar with C#)
https://github.com/hirschmann/nbfc

There is a lot of data (in XML) for various laptops that the code uses to determine how to manipulate the fan...
Careful reading of the code and analysis/experimentation may help you reverse engineer your fan controls in ACPI.

I understand. My concern is the scale of the resulting fan speeds. Your code uses fan control table FTAB to do the mapping but how the numbers for fan control byte were calculated? monitored someway in Windows for example?

Through experimentation, I found that larger numbers, up to 128 (fan off or very slow) were for slower fan speeds, 255 was "off/BIOS control". And 0 was fan full speed.

I did a lot of experimentation in RW-Everything to determine how it worked...
 
You might look here to further your understanding of how your fan controls might work in the EC.
Saw this posted elsewhere just yesterday...
(hopefully you're familiar with C#)
https://github.com/hirschmann/nbfc

There is a lot of data (in XML) for various laptops that the code uses to determine how to manipulate the fan...
Careful reading of the code and analysis/experimentation may help you reverse engineer your fan controls in ACPI.
I have used this software on Windows but I didn't think of looking into its source. I'm good with C# so I will go ahead, thanks!

Through experimentation, I found that larger numbers, up to 128 (fan off or very slow) were for slower fan speeds, 255 was "off/BIOS control". And 0 was fan full speed.

I did a lot of experimentation in RW-Everything to determine how it worked...
Then this is what I need to do ...


Thanks for the information and your time ...
 
Status
Not open for further replies.
Back
Top