Contribute
Register

[Guide] USB power property injection for Sierra (and later)

RehabMan

Moderator
Joined
May 3, 2012
Messages
186,497
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Hello @RehabMan, Thanks as always. Is the attached the right way to add it to the top of the port injection ssdt-uiac.aml? I had the modify the size of the initiation list to get rid of the compilation error: from 0x02 to 0x04 "Name (RMCF, Package (0x04)". Do I also need to do the EC rename?

Looks fine. It is best to edit in DSL source so you don't have to supply the package/buffer sizes.
eg.
Code:
        Name (RMCF, Package()
        {

But your hardware does not necessarily require a "AppleBusPowerControllerUSB" override.
Assuming you're using iMac17,1, power properties are specified with USBX.
 

Sniki

Moderator
Joined
Jan 5, 2016
Messages
2,316
Motherboard
HP Elite 8300 SFF
CPU
i7-3770
Graphics
HD 3000 | GTX 1650 LP
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
This is over my head, I'll just have to live with no usb power..I have everything working (but that). Will there be an easier method to fix this issue in the future?
From my 2 year experience & learning on hackintosh this one was the easiest.
You can do it just read patiently and don`t skip a single sentence.You have the same flaw that i have and still haven`t fully resolved (Rushing and not reading everything).
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
186,497
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
From my 2 year experience & learning on hackintosh this one was the easiest.
You can do it just read patiently and don`t skip a single sentence.You have the same flaw that i have and still haven`t fully resolved (Rushing and not reading everything).

Yeah, I don't include too many extra sentences... :)

Thanks RehabMan, got 2.1a charging back on my ASUS Z97M-PLUS that I lost ever since upgrading to 10.12

Glad it helped...
 
Joined
Sep 24, 2012
Messages
79
Motherboard
Dell M4800
CPU
I7-4810MQ
Graphics
HD 4600/AMD
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
great post.

I am using MBP13,1 for my SkyLake laptop. Since I use UsbInjectAll.kext (now 0.6.0) with UIAC, it was simply a matter of updating SSDT-XHC file to add these new properties. I chose the same values as MBP12,1 as listed in the IOUSBHostFamily.kext
Note: I did a test and added USBX device but it did not seem to make a difference once these properties were in UIAC .
Code:
    Device(UIAC)
    {
        Name(_HID, "UIA00000")
        Name(RMCF, Package()
        {
            // USB Power Properties for Sierra (using USBInjectAll injection)
            "AppleBusPowerControllerUSB", Package()
            {
                "kUSBSleepPortCurrentLimit", 2100,
                "kUSBSleepPowerSupply", 2600,
                "kUSBWakePortCurrentLimit", 2100,
                "kUSBWakePowerSupply", 3200,
            },
            // XHC overrides
            "8086_9d2f", Package()
            {
...
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
186,497
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
great post.

I am using MBP13,1 for my SkyLake laptop. Since I use UsbInjectAll.kext (now 0.6.0) with UIAC, it was simply a matter of updating SSDT-XHC file to add these new properties. I chose the same values as MBP12,1 as listed in the IOUSBHostFamily.kext
Note: I did a test and added USBX device but it did not seem to make a difference once these properties were in UIAC .
Code:
    Device(UIAC)
    {
        Name(_HID, "UIA00000")
        Name(RMCF, Package()
        {
            // USB Power Properties for Sierra (using USBInjectAll injection)
            "AppleBusPowerControllerUSB", Package()
            {
                "kUSBSleepPortCurrentLimit", 2100,
                "kUSBSleepPowerSupply", 2600,
                "kUSBWakePortCurrentLimit", 2100,
                "kUSBWakePowerSupply", 3200,
            },
            // XHC overrides
            "8086_9d2f", Package()
            {
...

I would use USBX with MacBookPro13,1... it is the native "Apple way".

Both work though.
And yes..., as you discovered (and is documented in post #1), USBInjectAll.kext will override properties from USBX. It must be that USBInjectAll ::probe runs after the init code for AppleBusPowerControllerUSB (which is the class that imports from USBX).
 
Joined
Sep 27, 2012
Messages
339
Motherboard
Asrock Z270X ITX Fatality
CPU
I7-7700K
Graphics
HD 630 + RX 560
Mac
  1. MacBook Air
Mobile Phone
  1. Android
Looks fine. It is best to edit in DSL source so you don't have to supply the package/buffer sizes.
eg.
Code:
        Name (RMCF, Package()
        {

But your hardware does not necessarily require a "AppleBusPowerControllerUSB" override.
Assuming you're using iMac17,1, power properties are specified with USBX.

Looks like my ssdt patch did not do anything, or at least I cannot find it in the ioreg attached. You were saying I don't have to have the override, do you mean I don't need anything or that I only need the usbx injection instead of the last code block?
 

Attachments

  • pinktankUSBPOWER.zip
    713 KB · Views: 58

RehabMan

Moderator
Joined
May 3, 2012
Messages
186,497
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Looks like my ssdt patch did not do anything, or at least I cannot find it in the ioreg attached. You were saying I don't have to have the override, do you mean I don't need anything or that I only need the usbx injection instead of the last code block?

As per post #1, you need to add SSDT-EC.aml when you don't have an EC.
No EC shown in ioreg.
And your Clover bootlog shows SSDT-EC.aml is not installed to ACPI/patched.
 
Joined
Sep 24, 2012
Messages
79
Motherboard
Dell M4800
CPU
I7-4810MQ
Graphics
HD 4600/AMD
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
I would use USBX with MacBookPro13,1... it is the native "Apple way".

Both work though.
And yes..., as you discovered (and is documented in post #1), USBInjectAll.kext will override properties from USBX. It must be that USBInjectAll ::probe runs after the init code for AppleBusPowerControllerUSB (which is the class that imports from USBX).

ok. thanks. I am going with both "methods" then.
 
Joined
Sep 27, 2012
Messages
339
Motherboard
Asrock Z270X ITX Fatality
CPU
I7-7700K
Graphics
HD 630 + RX 560
Mac
  1. MacBook Air
Mobile Phone
  1. Android
As per post #1, you need to add SSDT-EC.aml when you don't have an EC.
No EC shown in ioreg.
And your Clover bootlog shows SSDT-EC.aml is not installed to ACPI/patched.

I realized that I am in the laptop support (came through the front page). Any use of this for a desktop?
 
Top