Contribute
Register

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

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.
 
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).
 
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...
 
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()
            {
...
 
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).
 
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: 80
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.
 
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.
 
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?
 
Back
Top