Contribute
Register

Fan speed control on High Sierra

Status
Not open for further replies.
It means even more may be wrong.
USB type-C uses UsbConnector=9 or UsbConnector=10 and may use 1x or 2x SSxx ports.
Any suggestions on how I can determine the SSxx ports? My phone only showed up on the HS port when I plugged it in. Its a non-charging USB C port if that matters.
 
Probably you didn't have all ports enabled when you tested...
See guide:
https://www.tonymacx86.com/threads/guide-creating-a-custom-ssdt-for-usbinjectall-kext.211311/

Requirements:
- EHC1->EH01 and EHC2->EH02 rename (in config.plist), if applicable (your chipset may not have EHCI, or it may be disabled)
- XHCI controller must be named XHC (for most PCs it is default)
- port limit patch (in config.plist)
- install USBInjectAll.kext (install to the system volume)

- if you plan to use it, install FakePCIID.kext + FakePCIID_XHCIMux.kext
- if you have an existing SSDT for USBInjectAll, use -uia_ignore_rmcf
- XHCI injector kext, if required (200-series need XHCI-200-series-injector.kext)

I followed the steps above in bold when going through discovery. I don't have EHCI. I used -uia_ignore_rmcf after creating my initial SSDT when I realized I forgot to test the card reader.
 
Requirements:
- EHC1->EH01 and EHC2->EH02 rename (in config.plist), if applicable (your chipset may not have EHCI, or it may be disabled)
- XHCI controller must be named XHC (for most PCs it is default)
- port limit patch (in config.plist)
- install USBInjectAll.kext (install to the system volume)

- if you plan to use it, install FakePCIID.kext + FakePCIID_XHCIMux.kext
- if you have an existing SSDT for USBInjectAll, use -uia_ignore_rmcf
- XHCI injector kext, if required (200-series need XHCI-200-series-injector.kext)

I followed the steps above in bold when going through discovery. I don't have EHCI. I used -uia_ignore_rmcf after creating my initial SSDT when I realized I forgot to test the card reader.

You have two laptops in your signature, one can be expected to have EHCI, the other not.
If you have an issue, you must specify which computer it happens with and attach "problem reporting" files as per FAQ.
 
Well, apparently my \_SB.PCI0.LPCB.EC0 doesn't have an ECAV (just by looking at my DSDT), and the following in console log.
I have no clue what FCPU is.

Code:
default    13:09:51.798497 -1000    kernel    ACPI Error:
default    13:09:51.798512 -1000    kernel    ACPI Error:
default    13:09:51.798519 -1000    kernel    [\_SB_.PCI0.LPCB.EC0_.ECAV]
default    13:09:51.798520 -1000    kernel    [\_SB_.PCI0.LPCB.EC0_.ECAV]
default    13:09:51.798523 -1000    kernel     Namespace lookup failure, AE_NOT_FOUND
default    13:09:51.798525 -1000    kernel     Namespace lookup failure, AE_NOT_FOUND
default    13:09:51.798529 -1000    kernel     (20140828/psargs-1d1)
default    13:09:51.798531 -1000    kernel     (20140828/psargs-1d1)
default    13:09:51.798534 -1000    kernel    ACPI Error:
default    13:09:51.798536 -1000    kernel    ACPI Error:
default    13:09:51.798540 -1000    kernel    Method parse/execution failed
default    13:09:51.798541 -1000    kernel    Method parse/execution failed
default    13:09:51.798545 -1000    kernel    [\SMCD.FCPU] (Node ffffff80484bc890)
default    13:09:51.798547 -1000    kernel    [\SMCD.FCPU] (Node ffffff80484bc890)

Same debug files as my previous post; attaching them here as well.
 

Attachments

  • debug_7251.zip
    5.2 MB · Views: 97
Last edited:
Well, apparently my \_SB.PCI0.LPCB.EC0 doesn't have an ECAV (just by looking at my DSDT),

Not sure why you have that impression... this is from your DSDT.aml:
Code:
            Method (ECAV, 0, NotSerialized)
            {
                If (LGreaterEqual (SLPT, 0x04))
                {
                    Return (Zero)
                }

                If (LEqual (NVLK, One))
                {
                    Return (Zero)
                }

                If (LEqual (ECFL, Ones))
                {
                    If (LGreaterEqual (_REV, 0x02))
                    {
                        Return (One)
                    }
                    Else
                    {
                        Return (Zero)
                    }

                    Return (Zero)
                }

                Return (ECFL)
            }

and the following in console log.
I have no clue what FCPU is.

Code:
default    13:09:51.798497 -1000    kernel    ACPI Error:
default    13:09:51.798512 -1000    kernel    ACPI Error:
default    13:09:51.798519 -1000    kernel    [\_SB_.PCI0.LPCB.EC0_.ECAV]
default    13:09:51.798520 -1000    kernel    [\_SB_.PCI0.LPCB.EC0_.ECAV]
default    13:09:51.798523 -1000    kernel     Namespace lookup failure, AE_NOT_FOUND
default    13:09:51.798525 -1000    kernel     Namespace lookup failure, AE_NOT_FOUND
default    13:09:51.798529 -1000    kernel     (20140828/psargs-1d1)
default    13:09:51.798531 -1000    kernel     (20140828/psargs-1d1)
default    13:09:51.798534 -1000    kernel    ACPI Error:
default    13:09:51.798536 -1000    kernel    ACPI Error:
default    13:09:51.798540 -1000    kernel    Method parse/execution failed
default    13:09:51.798541 -1000    kernel    Method parse/execution failed
default    13:09:51.798545 -1000    kernel    [\SMCD.FCPU] (Node ffffff80484bc890)
default    13:09:51.798547 -1000    kernel    [\SMCD.FCPU] (Node ffffff80484bc890)

Same debug files as my previous post; attaching them here as well.

The error is your mistake. You are renaming EC0 to EC via config.plist/ACPI/DSDT/Patches, but SSDT-FAN.aml still refers to EC0 instead of EC.

Please note that renaming EC0->EC is completely invalid/wrong as you have an ECDT that refers to the path...
 
Not sure why you have that impression... this is from your DSDT.aml:
Code:
            Method (ECAV, 0, NotSerialized)
            {
                If (LGreaterEqual (SLPT, 0x04))
                {
                    Return (Zero)
                }

                If (LEqual (NVLK, One))
                {
                    Return (Zero)
                }

                If (LEqual (ECFL, Ones))
                {
                    If (LGreaterEqual (_REV, 0x02))
                    {
                        Return (One)
                    }
                    Else
                    {
                        Return (Zero)
                    }

                    Return (Zero)
                }

                Return (ECFL)
            }



The error is your mistake. You are renaming EC0 to EC via config.plist/ACPI/DSDT/Patches, but SSDT-FAN.aml still refers to EC0 instead of EC.

Please note that renaming EC0->EC is completely invalid/wrong as you have an ECDT that refers to the path...
And I thought that I didn't have ECDT, for some reason :/
Added fake EC (removed rename), and I can now see my fan RPM in HWMonitor, Thanks!
EDIT
It works fine - I think my fan is simply put not very quiet.. unless it is turned off.
I am unsure on how to add a FAN1 for my secondary fan, though - adding "1" to where it is recommended in the SSDT changes the HWMonitor to that second fan, replacing the first one. I assume that adding a FAN1 Method and "System Fan 2", "FAN1" to the TACH would do the trick? I assume that I'd need to modify the RPM handling as well..
 
Last edited:
Status
Not open for further replies.
Back
Top