Contribute
Register

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

You might want to update the OP.
In Catalina the list of support SMBIOS'es has been moved to IOUSBHostFamily/Contents/Info.plist no longer contains supported boardIDs.

@RehabMan
Annotation 2019-11-23 175524.jpg
 
RIP RehabMan.

Looks like AppleBusPowerController no longer attaches to EC anymore, so I guess this guide simply does not apply to 10.15+!
 
Looks like AppleBusPowerController no longer attaches to EC anymore, so I guess this guide simply does not apply to 10.15+!
Thanks for pointing that !

It seems with Catalina ApplebusPowerController is loaded under IOResources :
1575727394766.png


Capture d’écran 2019-12-07 à 11.57.33.png


However it is not clear the guide do not apply to 10.15 :
Using USBX SSDT I still can get extra power when a iPhone is connected to my laptop
The sleep current value (2100mA) shown up in system information is the one provided with USBX - it looks like USBX is found :

Capture d’écran 2019-12-07 à 11.45.56.png
i
Capture d’écran 2019-12-07 à 12.14.05.png


this is confirmed when I remove the USBX SSDT -> i have no more extra power when connecting iPhone :
Capture d’écran 2019-12-07 à 13.09.15.png


So it looks like some parts of the guide can apply to Catalina - USBX is still needed - ApplebusPowerController is now attached to IORessources instead of EC - The injection of a fake EC or rename to EC are maybe just no more needed for making the USB power property injection
 
Last edited:
Hi, I have Mojave 14.6 with iMac15,1 SMBIOS. I read about Proper USB Power Settings. I have a desktop and I don't get any errors like USB need more power etc when USB devices plugged in but, when I plug in my iPhone or iPad, iPhone starts charging, iPad says not charging. Checking Sys Def. / USB I see only 3 lines not 4. So, do I need this injection? If I do that, both iPhone and iPad will get higher current, probably 2.1 Amps. If I don't iPhone will get standard USB power, 0.5 Amps and iPad gets nothing.

What do you suggest?

iPhone:
Current Available (mA): 500
Current Required (mA): 500
Extra Operating Current (mA): 0

Edit: I did it with SSDTTime and it's working fine now.
 
Last edited:
EDIT2: I have decided to use SSDT-USBX instead of adding "AppleBusPowerControler" to SSDT-UIAC. I'm only choosing this method since it is consistent with the newer USBMap documentation (even though operationally, the two solutions appear to yield the same result).

----------------------------------------------------------------

EDIT: The Attached debug_20882.zip represents my Latitude E6410 (Nvidia Graphics) running Catalina 10.15.3 with USB power properties injected via SSDT-UIAC. The attached debug_2078.zip represents the same laptop/macOS but with USB power injected via SSDT-USBX. Note that in both cases, AppleBusPowerController (As viewed in IORegistryExplorer) shows injection of the USB power properties. When injecting power properties via SSDT-UIAC, USBMap reports that device USBX is not properly installed. When injecting power properties via SSDT-USBX, USBMap reports that USB Power is properly configured. My questions below remain. Thanks for any help/advice!

----------------------------------------------------------------

I'm running Catalina 10.15.3 on my Latitude E6410 (Nvidia Graphics). I triple-boot High Sierra 10.13.6, Mojave 10.14.6 and Catalina 10.15.3 with the same EFI (kexts unique to each macOS are in /L/E - don't hate me if you prefer E/C/k). After reading Rehabman's first Post in this thread, I modified SSDT-UIAC to inject the USB power properties for AppleBusPowerController. However, when I run USBMap tool, it reports that Device (USBX) is missing.

Do I need to include both the SSDT-UIAC "AppleBusPowerControler" AND SSDT-USBX if I want to multi-boot? If not both, can I continue to use only SSDT-UIAC for Catalina 10.15.3?

Also, for the USB power properties, I found them in High Sierra's IOUSBHostFamily.kext/Contents/Info.plist. They do not appear in Mojave or Catalina. Did I pull the properties from the correct location?

My problem reporting files are attached and my Latitude E6410 Catalina installation can be found if you Google "Catalina Latitude E6410" (my other user name is tonyx86).

Thank you for the help/advice.
 

Attachments

  • debug_20882.zip
    1.3 MB · Views: 226
  • debug_2078.zip
    1.3 MB · Views: 255
Last edited:
Thank you for the findings and for writing this guide RehabMan, I could make it work on my build! :clap:

I wrote a shorter guide for beginners not familiar with Hackintosh topics and the common inspector tools we use:
  • 1.) You can read "ioreg" several places but I cannot find a link or description at post #1 what ioreg actually is... So if you're wondering how you can view ioreg, there is an application called IORegistryExplorer (version 2.1 !), which you can download from here: https://www.tonymacx86.com/threads/guide-how-to-make-a-copy-of-ioreg.58368/ If you open it up it will show you a list in alphabetical order.. Look for the name "EC" (Embedded Controller), it will be before the FAN labels... If you can find the element called "EC" in there, continue with step 5.)
  • 2.) If the "EC" element is not there in the IORegistryExplorer, you need to check if you have EC0 or the H_EC name (or neither) under the hood in so called ACPI. There is another application to check that: MaciASL. It's also not mentioned in post #1, you can download it from here: RehabMan / OS-X-MaciASL-patchmatic / Downloads — Bitbucket. Open it up, press Command + F, and search for these terms: "Device (H_EC)" and "Device (EC0)". You will hopefully find the H_EC or the EC0 code block (not both). Don't bother with the meaning of the code you see, you don't have to understand it. There will be a code block in a few lines down, starting with "Method (_STA, ....". If you see a "Return (Zero)" in this {} block, then it means it's ignored as per post #1.
    So what we done in this step: You have to check if you have EC0 or H_EC device or neither in MaciASL. If you find EC0 or H_EC you need to check if it's ignored: "Return (Zero)" or not. Remember your findings...
  • 3.) Now you know what you have under the hood...
    • If you didn't have EC0 or H_EC device or it's returning Zero in method _STA, then you need to copy the file SSDT-EC.aml (attached to this post) to your main macOS drive's EFI partition, under EFI/CLOVER/ACPI/patched.
    • If you have found the EC0 or H_EC device in IORegistryExplorer and it's not returning Zero in method _STA, then you need to add a Clover config patch in EFI/CLOVER/config.plist to rename "EC0 to EC" or "H_EC to EC". Choose which one you have. The patch can be seen in post #1, under the title: "Insuring AppleBusPowerControllerUSB loads". In the picture, the config.plist file was opened in an application called Xcode, available free from the Mac App Store.
  • 4.) Restart you PC. Once macOS is loaded, open IORegistryExplorer again and check weather you see EC in the list. If "EC" shows up, everything is fine, continue with step 5.) If the name "EC" is still not there in IORegistryExplorer, start it over from 1.), more carefully.
  • 5.) Check your system definition in a built in macOS app called "System Information". Under the "Hardware Overview" section, you can find your system definition at "Model identifier", for example: iMac 18,3
    • If you have newer system definition than Macbook8,1 or MacBookAir7,2 or MacBookPro12,1 or MacPro6,1 or MacMini7,1 or iMac15,2 THEN copy the file SSDT-USBX.aml (attached to this post) to your main macOS drive's EFI partition, under EFI/CLOVER/ACPI/patched.
    • If you use one of the system def listed above or older, then you have nothing to do, continue with step 6.)
  • 6.) Restart your PC. Once macOS is loaded, plug in an iPhone or iPad to your Hackintosh with a USB cable. Open System Information app and choose the "USB" section from the left sidebar. Click on the iPhone or iPad in the list. If you can see all 4 lines you're won! ;)
    • Current Available (mA):
    • Current Required (mA):
    • Extra Operating Current (mA):
    • Sleep current (mA):
If all 4 lines are there, it's the obvious indicator of working USB power under macOS.​
Hope this post will help others to understand the process described in post #1.
What if you see only 3 lines under usbpower? I only have 3 lines sleep is missing.
 
What if you see only 3 lines under usbpower? I only have 3 lines sleep is missing.
Same here, I just followed balazs' guide, which was very understandable for a beginner like me (thanks for that!). Everything went fine and after I placed the two SSDT files inside my clover/acpi/patched folder, the EC entry appeared in my IOReg (containing the AppleBusPowerController).

But I'm also missing the Sleep line and I still can't charge my iPad (and my Bluetooth still performs poorly). Any ideas?

High Sierra 10.13.6 (including latest security patch)
MSI Z370m Mortar
i7 8700k
1080 TI
16 GB Ram

I hope it's okay to pop in with a desktop hackintosh here.
 
Hi guys!

I'm really not an expert of usb power management on a Hackintosh, just followed the original guide and wrote my findings in a post which helped many of you since then. ;) Tested again: I plugged in my iPhone on my Hackintosh running macOS 10.15.4, and it shows up correctly in System Information > USB > iPhone 7:

Current Available (mA): 500
Current Required (mA): 500
Extra Operating Current (mA): 1600
Sleep current (mA): 2100

Basically I didn't change anything around USB power management in the last 2 years, it survived all macOS updates.
 
Last edited:
Thank you for the findings and for writing this guide RehabMan, I could make it work on my build! :clap:

I wrote a shorter guide for beginners not familiar with Hackintosh topics and the common inspector tools we use:
  • 1.) You can read "ioreg" several places but I cannot find a link or description at post #1 what ioreg actually is... So if you're wondering how you can view ioreg, there is an application called IORegistryExplorer (version 2.1 !), which you can download from here: https://www.tonymacx86.com/threads/guide-how-to-make-a-copy-of-ioreg.58368/ If you open it up it will show you a list in alphabetical order.. Look for the name "EC" (Embedded Controller), it will be before the FAN labels... If you can find the element called "EC" in there, continue with step 5.)
  • 2.) If the "EC" element is not there in the IORegistryExplorer, you need to check if you have EC0 or the H_EC name (or neither) under the hood in so called ACPI. There is another application to check that: MaciASL. It's also not mentioned in post #1, you can download it from here: RehabMan / OS-X-MaciASL-patchmatic / Downloads — Bitbucket. Open it up, press Command + F, and search for these terms: "Device (H_EC)" and "Device (EC0)". You will hopefully find the H_EC or the EC0 code block (not both). Don't bother with the meaning of the code you see, you don't have to understand it. There will be a code block in a few lines down, starting with "Method (_STA, ....". If you see a "Return (Zero)" in this {} block, then it means it's ignored as per post #1.
    So what we done in this step: You have to check if you have EC0 or H_EC device or neither in MaciASL. If you find EC0 or H_EC you need to check if it's ignored: "Return (Zero)" or not. Remember your findings...
  • 3.) Now you know what you have under the hood...
    • If you didn't have EC0 or H_EC device or it's returning Zero in method _STA, then you need to copy the file SSDT-EC.aml (attached to this post) to your main macOS drive's EFI partition, under EFI/CLOVER/ACPI/patched.
    • If you have found the EC0 or H_EC device in IORegistryExplorer and it's not returning Zero in method _STA, then you need to add a Clover config patch in EFI/CLOVER/config.plist to rename "EC0 to EC" or "H_EC to EC". Choose which one you have. The patch can be seen in post #1, under the title: "Insuring AppleBusPowerControllerUSB loads". In the picture, the config.plist file was opened in an application called Xcode, available free from the Mac App Store.
  • 4.) Restart you PC. Once macOS is loaded, open IORegistryExplorer again and check weather you see EC in the list. If "EC" shows up, everything is fine, continue with step 5.) If the name "EC" is still not there in IORegistryExplorer, start it over from 1.), more carefully.
  • 5.) Check your system definition in a built in macOS app called "System Information". Under the "Hardware Overview" section, you can find your system definition at "Model identifier", for example: iMac 18,3
    • If you have newer system definition than Macbook8,1 or MacBookAir7,2 or MacBookPro12,1 or MacPro6,1 or MacMini7,1 or iMac15,2 THEN copy the file SSDT-USBX.aml (attached to this post) to your main macOS drive's EFI partition, under EFI/CLOVER/ACPI/patched.
    • If you use one of the system def listed above or older, then you have nothing to do, continue with step 6.)
  • 6.) Restart your PC. Once macOS is loaded, plug in an iPhone or iPad to your Hackintosh with a USB cable. Open System Information app and choose the "USB" section from the left sidebar. Click on the iPhone or iPad in the list. If you can see all 4 lines you're won! ;)
    • Current Available (mA):
    • Current Required (mA):
    • Extra Operating Current (mA):
    • Sleep current (mA):
If all 4 lines are there, it's the obvious indicator of working USB power under macOS.​
Hope this post will help others to understand the process described in post #1.

Apologies as I know it's not a laptop, but working Hackintosh on 10.13.4 with no problems for 2 years.

Dual booted windows to a different SSD and now USB devices aren't getting power on the hackintosh side. I would like to point out that i didn't unplug my OSX NVME SSD and the Windows EFI portion got installed in the same EFI folder. I may re-install Windows 10 with nothing else attached to rectify this. (Not sure if this is affecting the OSX side, but I wanted to note that).

I'm running clover config patch change EC0 to EC.

EC shows up in ioRegistryExplorer. AppleBusPowerController is there.

Model Identifier is iMac 18,3 so i copied the attached SSDT-USBX.aml to the EFI Partition to EFI/CLOVER/ACPI/patched and restarted.

Plugging in an iPhone says "USB Accessory Needs Power" Connect "iPhone" to a USB port on this Mac." and only showing Current Available (mA) and Extra Operating Current (mA).
 

Attachments

  • config.plist
    9 KB · Views: 185
  • Screen Shot 2020-05-07 at 12.09.48 PM.png
    Screen Shot 2020-05-07 at 12.09.48 PM.png
    138.1 KB · Views: 177
  • Screen Shot 2020-05-07 at 12.12.48 PM.png
    Screen Shot 2020-05-07 at 12.12.48 PM.png
    116.1 KB · Views: 193
  • Screen Shot 2020-05-07 at 12.13.17 PM.png
    Screen Shot 2020-05-07 at 12.13.17 PM.png
    31.2 KB · Views: 182
  • Screen Shot 2020-05-07 at 12.13.28 PM.png
    Screen Shot 2020-05-07 at 12.13.28 PM.png
    28.8 KB · Views: 193
  • Screen Shot 2020-05-07 at 12.17.51 PM.png
    Screen Shot 2020-05-07 at 12.17.51 PM.png
    28 KB · Views: 197
Last edited:
Apologies as I know it's not a laptop, but working Hackintosh on 10.13.4 with no problems for 2 years.

Dual booted windows to a different SSD and now USB devices aren't getting power on the hackintosh side. I would like to point out that i didn't unplug my OSX NVME SSD and the Windows EFI portion got installed in the same EFI folder. I may re-install Windows 10 with nothing else attached to rectify this. (Not sure if this is affecting the OSX side, but I wanted to note that).

I'm running clover config patch change EC0 to EC.

EC shows up in ioRegistryExplorer. AppleBusPowerController is there.

Model Identifier is iMac 18,3 so i copied the attached SSDT-USBX.aml to the EFI Partition to EFI/CLOVER/ACPI/patched and restarted.

Plugging in an iPhone says "USB Accessory Needs Power" Connect "iPhone" to a USB port on this Mac." and only showing Current Available (mA) and Extra Operating Current (mA).

Don't know how to delete my post but I was able to map the USB ports manually with rehabman's guides, and tools from another thread. Created an SSDT-UIAC-ALL.dsl & SSDT-USBX.aml according to my mappings, and that worked.
 
Back
Top