Contribute
Register

Fan speed control on High Sierra

Status
Not open for further replies.
I'm looking for a guide online or some tips how to start to control the Fan Speed of my Laptop Asus Vivobook S510UA.
On Windows 10 the fan speed control handle well the high temps and spin fast while on High Sierra it spins too slowly and the CPU (Kaby Lake Refresh i5) is thermal throttling.
I'm using FakeSMC and I can read the values with HWMonitor but I just don't know how to control the fan speeds on Mac OS...
Any ideas ? where to start?
 
Hello! I have an Acer Spin 5 laptop, the Notebook fancontrol program works very well!
But in hackintosh I don't understand how control fan... In attachment screenshot with right settings Notebook fancontrol, EC (embedded controller) in Readwriteeverything programm, debug_8829.zip - https://raw.githubusercontent.com/black-dragon74/OSX-Debug/master/gen_debug.sh.
I don't understand, how I can access 147 register to set it to 20 for manual fan control, and then set to write register 148 fan speed. I check SSDT-FAN.aml:

C:
DefinitionBlock ("", "SSDT", 2, "Nick", "AsusFan", 0x00000000)
{
    External (_SB_.PCI0.LPCB.EC0_.ECAV, MethodObj)    // 0 Arguments
    External (_SB_.PCI0.LPCB.EC0_.ECPU, FieldUnitObj)
    External (_SB_.PCI0.LPCB.EC0_.TH00, FieldUnitObj)
    External (_SB_.PCI0.LPCB.EC0_.TH01, FieldUnitObj)
    External (_TZ_.LTMP, UnknownObj)
    External (B1B2, MethodObj)    // 2 Arguments

    Device (SMCD)
    {
        Name (_HID, "FAN0000")  // _HID: Hardware ID
        Name (TACH, Package (0x02)
        {
            "System Fan",
            "FAN0"
        })
        Name (TEMP, Package (0x02)
        {
            "CPU Heatsink",
            "TCPU"
        })
        Method (FAN0, 0, Serialized)
        {
            Local0 = B1B2 (\_SB.PCI0.LPCB.EC0.TH00, \_SB.PCI0.LPCB.EC0.TH01)
            If ((Local0 == 0xFF))
            {
                Local0 = Zero
            }

            If (Local0)
            {
                Local0 *= 0x02
                Divide (0x0041CDB4, Local0, Local1, Local0)
            }

            Return (Local0)
        }

        Method (TCPU, 0, Serialized)
        {
            If (\_SB.PCI0.LPCB.EC0.ECAV ())
            {
                Local0 = \_SB.PCI0.LPCB.EC0.ECPU /* External reference */
                If ((Local0 < 0x80))
                {
                    \_TZ.LTMP = Local0
                }
            }

            Return (\_TZ.LTMP) /* External reference */
        }
    }

    Debug = "CPU Fan SSDT by black.dragon74"
}
But don't understand how I can correct it to my laptop.
Can anyone help me?
 

Attachments

  • rw.png
    rw.png
    234 KB · Views: 90
  • notebook fancontrol.png
    notebook fancontrol.png
    67.7 KB · Views: 95
  • debug_8829.zip
    9.4 MB · Views: 60
Last edited:
Status
Not open for further replies.
Back
Top