Contribute
Register

Fan speed control on High Sierra

Status
Not open for further replies.
Joined
Nov 14, 2017
Messages
20
Motherboard
Asus K501LX-Clover
CPU
i7 5500U
Graphics
HD 5500
Hello Tonymacx86 forum users!

I have a problem: the fan on my laptop is always ON. Is it possible to control fan speed depending on cpu temperature?
On Windows I used "NoteBook Fan Control" to set different speed for different temperature like:
0rpm if temp is less than 60
20% fan power when temp is 60-70
50% fan power when temp is 70-90
etc...
My CPU rarely heats up to more then 60 degrees, which means no noise from fan most of the time. I want to do the same in Hackintosh.

I use the latest RehabMan's FakeSMC + Patches and HWMonitor, but I can't control fans from it. Why?
And FYI it's impossible to control fan speed from BIOS in my laptop.

full


As requested I attach RehabMan_patchmatic; ioreg, "kextstat", and AppleIntelInfo are in second zip, and my Clover zip (without themes folder)

First post, hope I did everything right...
 

Attachments

  • RehabMan_patchmatic.zip
    59 KB · Views: 432
  • ioreg-kext-etc.zip
    611.6 KB · Views: 341
  • CLOVER.zip
    2.6 MB · Views: 323

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,935
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Hello Tonymacx86 forum users!

I have a problem: the fan on my laptop is always ON. Is it possible to control fan speed depending on cpu temperature?
On Windows I used "NoteBook Fan Control" to set different speed for different temperature like:

My CPU rarely heats up to more then 60 degrees, which means no noise from fan most of the time. I want to do the same in Hackintosh.

I use the latest RehabMan's FakeSMC + Patches and HWMonitor, but I can't control fans from it. Why?
And FYI it's impossible to control fan speed from BIOS in my laptop.

full


As requested I attach RehabMan_patchmatic; ioreg, "kextstat", and AppleIntelInfo are in second zip, and my Clover zip (without themes folder)

First post, hope I did everything right...

Refer to the ProBook repo for ideas on how you might implement fan control.
It is on my github (refer to my Projects link in my signature).
 
Joined
Nov 14, 2017
Messages
20
Motherboard
Asus K501LX-Clover
CPU
i7 5500U
Graphics
HD 5500
RehabMan, thank you. You have 2 ProBook-related repositories: HP-ProBook-4x30s-Fan-Reset and HP-ProBook-4x30s-DSDT-Patch.
In the second repo->patches I've found 04c_FanSpeed.txt:
#Maintained by: RehabMan for: HP Probook 4x30s/4x40s
# 04c_FanSpeed.txt

# This fan patch simply reports CPU Heatsink, Ambient, and Fan Speed.
# No manipulation of fan speed is done. You get default BIOS behavior.
# add fan readings only
into device label SMCD remove_entry;
into definitionblock code_regex . insert
begin
Device (SMCD)\n
{\n
Name (_HID, "FAN00000") // _HID: Hardware ID\n
// ACPISensors.kext configuration\n
Name (TACH, Package()\n
{\n
"System Fan", "FAN0",\n
})\n
Name (TEMP, Package()\n
{\n
"CPU Heatsink", "TCPU",\n
"Ambient", "TAMB",\n
//"Mainboard", "TSYS",\n
//"CPU Proximity", "TCPP",\n
})\n
// Actual methods to implement fan/temp readings/control\n
Method (FAN0, 0, Serialized)\n
{\n
Store (\_SB.PCI0.LPCB.EC0.FRDC, Local0)\n
If (Local0) { Divide (Add(0x3C000, ShiftRight(Local0,1)), Local0,, Local0) }\n
If (LEqual (0x03C4, Local0)) { Return (Zero) }\n
Return (Local0)\n
}\n
Method (TCPU, 0, Serialized)\n
{\n
Acquire (\_SB.PCI0.LPCB.EC0.ECMX, 0xFFFF)\n
Store (1, \_SB.PCI0.LPCB.EC0.CRZN)\n
Store (\_SB.PCI0.LPCB.EC0.DTMP, Local0)\n
Release (\_SB.PCI0.LPCB.EC0.ECMX)\n
Return (Local0)\n
}\n
Method (TAMB, 0, Serialized)\n
{\n
Acquire (\_SB.PCI0.LPCB.EC0.ECMX, 0xFFFF)\n
Store (4, \_SB.PCI0.LPCB.EC0.CRZN)\n
Store (\_SB.PCI0.LPCB.EC0.TEMP, Local0)\n
Release (\_SB.PCI0.LPCB.EC0.ECMX)\n
Return (Local0)\n
}\n
}\n
end;

But obviously a patch from one laptop won't work on a different one. And I think values like:
\_SB.PCI0.LPCB.EC0.ECMX;
\_SB.PCI0.LPCB.EC0.CRZN;
etc, should be different on my laptop. But how do I find them? I'm pretty new to hackintosh world. Right now my goal is to grab fan values from hardware and control them with istat Menus.

Also, I must say I don't have a rare-hardware laptop, It's just Asus K-series. Maybe there are ready-made fixes somewhere on the net I don't know about?
 
Joined
Jul 11, 2014
Messages
436
Motherboard
Asus A555LAB
CPU
i3-4005U
Graphics
HD 4400
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
There you go. Place this in EFI/CLOVER/ACPI/patched. If you use sorted order make sure you add SSDT-FAN.aml to it.

Regards
 

Attachments

  • SSDT-FAN.aml
    452 bytes · Views: 2,002
Joined
Jul 11, 2014
Messages
436
Motherboard
Asus A555LAB
CPU
i3-4005U
Graphics
HD 4400
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
RehabMan, thank you. You have 2 ProBook-related repositories: HP-ProBook-4x30s-Fan-Reset and HP-ProBook-4x30s-DSDT-Patch.
In the second repo->patches I've found 04c_FanSpeed.txt:
#Maintained by: RehabMan for: HP Probook 4x30s/4x40s
# 04c_FanSpeed.txt

# This fan patch simply reports CPU Heatsink, Ambient, and Fan Speed.
# No manipulation of fan speed is done. You get default BIOS behavior.
# add fan readings only
into device label SMCD remove_entry;
into definitionblock code_regex . insert
begin
Device (SMCD)\n
{\n
Name (_HID, "FAN00000") // _HID: Hardware ID\n
// ACPISensors.kext configuration\n
Name (TACH, Package()\n
{\n
"System Fan", "FAN0",\n
})\n
Name (TEMP, Package()\n
{\n
"CPU Heatsink", "TCPU",\n
"Ambient", "TAMB",\n
//"Mainboard", "TSYS",\n
//"CPU Proximity", "TCPP",\n
})\n
// Actual methods to implement fan/temp readings/control\n
Method (FAN0, 0, Serialized)\n
{\n
Store (\_SB.PCI0.LPCB.EC0.FRDC, Local0)\n
If (Local0) { Divide (Add(0x3C000, ShiftRight(Local0,1)), Local0,, Local0) }\n
If (LEqual (0x03C4, Local0)) { Return (Zero) }\n
Return (Local0)\n
}\n
Method (TCPU, 0, Serialized)\n
{\n
Acquire (\_SB.PCI0.LPCB.EC0.ECMX, 0xFFFF)\n
Store (1, \_SB.PCI0.LPCB.EC0.CRZN)\n
Store (\_SB.PCI0.LPCB.EC0.DTMP, Local0)\n
Release (\_SB.PCI0.LPCB.EC0.ECMX)\n
Return (Local0)\n
}\n
Method (TAMB, 0, Serialized)\n
{\n
Acquire (\_SB.PCI0.LPCB.EC0.ECMX, 0xFFFF)\n
Store (4, \_SB.PCI0.LPCB.EC0.CRZN)\n
Store (\_SB.PCI0.LPCB.EC0.TEMP, Local0)\n
Release (\_SB.PCI0.LPCB.EC0.ECMX)\n
Return (Local0)\n
}\n
}\n
end;

But obviously a patch from one laptop won't work on a different one. And I think values like:
\_SB.PCI0.LPCB.EC0.ECMX;
\_SB.PCI0.LPCB.EC0.CRZN;
etc, should be different on my laptop. But how do I find them? I'm pretty new to hackintosh world. Right now my goal is to grab fan values from hardware and control them with istat Menus.

Also, I must say I don't have a rare-hardware laptop, It's just Asus K-series. Maybe there are ready-made fixes somewhere on the net I don't know about?
Also, in my test i have found out that on ASUS laptops, temperature to fan speed ratio on macOS is similar to that on Windows.

My findings:- (Note: Max and Min values are not constant. YMMV. I was able to stress the CPU up to 46˚C)
Screen Shot 2017-11-21 at 2.13.39 AM.png

Maximum fan RPM(2814) in macOS while running Geekbench 4 (In my case, YMMV)
Screen Shot 2017-11-21 at 2.31.11 AM.png

Regards
 
Last edited:
Joined
Nov 14, 2017
Messages
20
Motherboard
Asus K501LX-Clover
CPU
i7 5500U
Graphics
HD 5500
black.dragon74, thank you! Your SSDT-FAN.aml made an interesting result - I still don't see Fan RPM in HWMonitor nor istat Menus, but I'm able to see it in HWMonitorSMC for some reason...

img2.jpeg


Update: your SSDT-FAN.aml does inject "CPU Heatsink" parameter everywhere, including HWMonitor and istat Menus. Still investigating...
 
Last edited:
Joined
Nov 14, 2017
Messages
20
Motherboard
Asus K501LX-Clover
CPU
i7 5500U
Graphics
HD 5500
Of course:
 

Attachments

  • debug_19196.zip
    3 MB · Views: 272
Joined
Jul 11, 2014
Messages
436
Motherboard
Asus A555LAB
CPU
i3-4005U
Graphics
HD 4400
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Meanwhile, try this :-
 

Attachments

  • SSDT-FAN.aml
    499 bytes · Views: 1,117
Joined
Jul 11, 2014
Messages
436
Motherboard
Asus A555LAB
CPU
i3-4005U
Graphics
HD 4400
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Looking at your report, some general suggestions :-

Set "PluginType" to NO in config.plist>ACPI>SSDT>Generate (Not related to "fans" issue, just to prevent table load failure, "plugin-type=1" is already present in SSDT.aml)
There is no need of SSDT-DiscreteSpoof as you already have those values in config.plist
You are booting without caches (Unless debugging something specific, not recommended)
Missing Firmware Features from config.plist under SMBIOS, set these to (For MacBook Pro 12,1) :-

Screen Shot 2017-11-21 at 3.19.25 AM.png


You are using USBInjectAll.kext but a custom SSDT for your USB configuration is not present.

According to your IOREG, Fan and Thermal Sensors are loading up fine. Update your entire FakeSMC package and boot by rebuilding caches (make sure you remove -f boot flag)

Link for FakeSMC: https://bitbucket.org/RehabMan/os-x-fakesmc-kozlek/downloads/

Also, there is no need of AsusACPIBackLightPanel.kext as you are using AppleBacklightInjector along with SSDT and patches.

Regards
 
Status
Not open for further replies.
Top