Contribute
Register

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

Hello RehabMan!
I have a problem with USB 3.0 ports; When I connect a pendriver on port 3.0 the message: USB accessory needs power. When I boot Leptop with the pemdrive plugged into the USB 3.0 port, it appears on the desktop.
View the requested images and files.
 

Attachments

  • Image_1.jpg
    Image_1.jpg
    109.3 KB · Views: 92
  • Image_2.jpg
    Image_2.jpg
    112 KB · Views: 88
  • Files.zip
    3 MB · Views: 105
Hello RehabMan!
I have a problem with USB 3.0 ports; When I connect a pendriver on port 3.0 the message: USB accessory needs power. When I boot Leptop with the pemdrive plugged into the USB 3.0 port, it appears on the desktop.
View the requested images and files.


I'm having the same problems as you friend, USB 3.0 does not work right. Could you help me understand how you managed to make the HD 4600 work perfectly?

Thank you very much in advance
 
Hello RehabMan!
I have a problem with USB 3.0 ports; When I connect a pendriver on port 3.0 the message: USB accessory needs power. When I boot Leptop with the pemdrive plugged into the USB 3.0 port, it appears on the desktop.
View the requested images and files.

The ioreg you attached shows no such device plugged in.
 
Sorry Adm.

My english is Terrible.

Ts
 
Follow IORegistryEntry with device connected.
 

Attachments

  • Files.zip
    3 MB · Views: 105
Hello, please help me, i have Dell Inspirion i7378 with one USB type-c port, after loading system, not working this port, but my phone is charging.
 

Attachments

  • MacBook Pro.ioreg
    21.3 MB · Views: 125
Hi RehabMan,

AppleBusPowerControllerUSB can be assumed to also refer to AppleUSBPowerController when referring to 10.13.x or later

It seems it has changed in Mojave... I was reading your guides for both USB port limiting and also USB power injector to tune my installation of Mojave.
Thanks to your great tutorials that help to understand the all the logic, I checked there: cat /System/Library/Extensions/AppleBusPowerController.kext/Contents/Info.plist

Code:
<key>IOKitPersonalities</key>
    <dict>
        <key>AppleBusPowerController</key>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.AppleBusPowerController</string>
            <key>IOClass</key>
            <string>AppleBusPowerController</string>
            <key>IOMatchCategory</key>
            <string>AppleBusPowerController</string>
            <key>IONameMatch</key>
            <string>EC</string>
            <key>IOProviderClass</key>
            <string>IOACPIPlatformDevice</string>
        </dict>
    </dict>
    <key>LSMinimumSystemVersion</key>
    <string>10.14</string>

And so I found out it is now named AppleBusPowerController in Mojave.

So I've added EC0->EC to my config.plist and made a SSDT hotpatch as below, and it does work:

Code:
DefinitionBlock ("", "SSDT", 2, "hack", "UIAC", 0x00000000)
// Port trimmed with port comments SSDT-UIAC.dsl for THINKPAD YOGA12
DefinitionBlock ("", "SSDT", 2, "hack", "UIAC", 0)
{
    Device(UIAC)
    {
        Name(_HID, "UIA00000")
        Name(RMCF, Package()
        {
     
            "AppleBusPowerController", Package()
            {
                // values from MacBookAir7,1 in /System/Library/Extensions/IOUSBHostFamily.kext/Contents/Info.plist
                "kUSBSleepPortCurrentLimit", 1600, // changed from 2100 to 1600
                "kUSBSleepPowerSupply", 1600, // changed from 2600 to 1600
                "kUSBWakePortCurrentLimit", 2100,
                "kUSBWakePowerSupply", 3200,
            },
     
            "8086_9cb1", Package()
            {

No more instant wake from USB and no more need to make static patch to the DSDT file to fix that problem.
I still have to check if I need to increase power on USB ports for wake, or not.

Thanks again.
 
Last edited:
Back
Top