drasbeck / macos-thinkpad-t430

macOS on a Thinkpad T430. An almost perfect Hackbook Pro
67 stars 12 forks source link

System Fan Control #5

Closed 123marvin123 closed 5 years ago

123marvin123 commented 5 years ago

Hello,

I want to thank everybody that contributed to this project. This guide was a huge help to get my T430 working. I want to contribute something, so after being annoyed of the loud fan noise of my T430 even when there is no load on the system, I wanted to modify the fan curve.

I added a patch for the DSDT which enables fan speed readouts and also modifies the fan curve. You will also need the ACPIPoller.kext for this to work properly.

bildschirmfoto 2019-02-23 um 23 48 06

Information about the FAN-Curve:

Method (TCPU, 0, NotSerialized)
{
    Store (^^EC.TMP0, Local0)
    Store (^^EC.TMP0, Local0)

    If (LLessEqual (Local0, 0x32)) // CPU Temp is <= 50C
    {
        Store (Zero, ^^EC.HFSP) // Set FAN Off
    }
    If (LGreaterEqual (Local0, 0x55)) // CPU Temp is >= 85C
    {
        Store (0x40, ^^EC.HFSP) // Set Fan Speed to ABSOLUTE MAXIMUM
    }
    ElseIf (LGreaterEqual (Local0, 0x4B)) // CPU Temp is >= 75C
    {
        Store (0x07, ^^EC.HFSP) // Set Fan Speed to Maximum
    }
    ElseIf (LGreaterEqual (Local0, 0x46)) // CPU Temp is >= 70C
    {
        Store (0x04, ^^EC.HFSP) //Set Fan Speed to Medium
    }
    ElseIf (LGreaterEqual (Local0, 0x41)) // CPU Temp is >= 65C
    {
        Store (0x02, ^^EC.HFSP) // Set Fan Mode 2
    }
    ElseIf (LGreaterEqual (Local0, 0x3D)) // // CPU Temp is >= 61C
    {
        Store (One, ^^EC.HFSP) // Set Fan Mode 1 - Lowest speed
    }
    Return (Local0)
}
123marvin123 commented 5 years ago

Thanks for the merge. macOS apparently does not let you control the RPM yourself, you can only set specific modes for the speed of the fan. When the temperature of the CPU is lower than 50 degrees celsius, the fan will be turned off (and for me, this is most of the time :)). When the fan reaches a temperature of 61 degrees, the fan will turn on on the lowest setting possible. When reaching 65 degrees, it will speed up to Fan Mode 2. Reaching 70 degrees will turn the fan to speed mode medium. Reaching 75 degrees will turn the fan to a very high setting and when reaching temperatures of 85 degrees, the fan will turn with absolute maximum speed.

For me, my fan will be off for the majority of the time. Even web browsing does not trigger the fan to turn on. I had no problem so far with this fan curve, even on 100% load, temperature does not go over 80 degrees.

123marvin123 commented 5 years ago

By the way: this only works with FakeSMC, not with VirtualSMC.

drasbeck commented 5 years ago

BTW: Any chance it will work with VirutalSMC at some point?

drasbeck commented 5 years ago

Also: I'm really loving this patch. My fan used to be completely obnoxious. I have the TOSHIBA brand, not the DELTA. And from deafening experience I can confidently say that all TOSHIBA's are horrible.

Oh and also also: Did you create a PR with the ACPIPoller.kext repo with your changes? I think more people could lead greater lives with this change. 😆 👍

123marvin123 commented 5 years ago

I'm not sure about VirtualSMC, it is not my patch, I found it on a German Hackintosh site. And the patch is specific to the T430 (and some other models), so no need to create a PR in the ACPIPoller repo :)

Legetzu commented 5 years ago

Hello. I have installed mojave for my T430 by following your guide. I found that your ACPIPoller.kext's info.plist was edited wrong. According to your DSDT fan patch it uses MON0000 as Hardware ID but in ACPIPoller.kext's info.plist it has FAN00000 under IONameMatch. I found out there was some issue with ACPIPoller after it didn't change fan speed if I didn't have HWmonitor on and my CPU temps kept rising up. After changing the FAN00000 to MON0000 in info.plist the fan control worked fine.

But in overall your guide is great and it helped me to install mojave for my T430 quick! 👍

drasbeck commented 5 years ago

Great find @Legetzu, we've been wondering what was up with the HWMonitor situation.