Contribute
Register

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

This thread is not for random questions.
Expectation is that users posting here have followed post #1.
You call the question "If the mVolts handed to USB devices are too high or not" in a post called "[Guide] USB power property injection for Sierra (and later)" "random questions"? ‍♂️ OMFG...
I read Post 1. If you have no EC then oughta make one fake then some sort of USB power property will be handed over.
 
You call the question "If the mVolts handed to USB devices are too high or not" in a post called "[Guide] USB power property injection for Sierra (and later)" "random questions"? ‍♂️ OMFG...
I read Post 1. If you have no EC then oughta make one fake then some sort of USB power property will be handed over.

If you haven't followed the guide, there is no sense in me looking at your files or paying any attention to your questions.
 
The basic question is: Do I need to...
"[Guide] USB power property injection for Sierra (and later)"
So I first do the mod learn and implement, THEN I discover I didn't have to...
Strategically effective...
 
I've implemented the other guide and do implement it for each hack I do as I got to understand why it is important and what are the benefits to implementing it.
So I must implement this one too. OK you win...:banghead::mad:
 
I've recently created a proper SSDT for UIAC and it was successful, but for some reason the power property injections haven't worked. I can see AppleBusPowerController under EC in IOReg, and it should be enough since I'm using iMac 14,2 as SMBIOS. But when charging my iPhone I don't get any Extra Operating Current under System Information.

I'm attaching the zip from gen_debug.sh -sysprofile.

I think my build is described on the signature, but it's a Gigabyte Z270X Gaming 7 with an i7-7700K and a GTX 970, on High Sierra 10.13.6.
 

Attachments

  • debug_25214.zip
    2.6 MB · Views: 97
Ok, so I'm implementing your compulsory USB Power Management Guide for High Sierra.
After IOReg scrutiny I've found that in my case I'm in the same situation as your NUC:

"Note: You may find you have an EC in your DSDT: Device with "Name (_HID, EisaId ("PNP0C09"))", even if it is not active."
"Scope (_SB.PCI0.LPCB)
{
Device (H_EC)
{
Name (_HID, EisaId ("PNP0C09")) // _HID: Hardware ID
Name (_UID, One) // _UID: Unique ID
Method (_STA, 0, NotSerialized) // _STA: Status
}"

In my case:
"
Scope (_SB)
{
Device (PCI0)
{
Name (_HID, EisaId ("PNP0A08")) // _HID: Hardware ID
Name (_CID, EisaId ("PNP0A03")) // _CID: Compatible ID
Name (_ADR, Zero) // _ADR: Address
Method (^BN00, 0, NotSerialized)
..."

So I've added a "fake" one with the following SSDT-EC.dsl.
Created the file, compiled in aml, dropped the file into the Patched folder.
Now I can see in IOReg EC-->AppleBusPowerController

Having on this system a SMBIOS 18,1 I had to add a USBX SSDT and so I did copying the code from the iMac 17,1 you shared, then compiled in aml, dropped the file into the Patched folder.
Now I can see under EC-->AppleBusPowerController the properties I just injected.

So far so good I think.

Though I cannot see a "standalone" USBX@0" entry in IOReg as per the iMac 17,1 screenshot you shared before....If I understand I have instead a "fake" EC entry.

Now I should complete the whole process by overriding the IOUSBHostFamily.kext/Contents/Info.plist adding the code you share into USBInjectAll.kext/Contents/Info.plist modifying the value of my USB configuration, which for this system is "8086_a2af", BUT there are probably other parts I should be modifying. Also should I copy that code at the beginning of the IOUSBHostFamily.kext/Contents/Info.plist?

Thanks for your help.
 

Attachments

  • ZZMac.ioreg.zip
    641 KB · Views: 90
  • SSDTs.zip
    3 KB · Views: 124
I've recently created a proper SSDT for UIAC and it was successful, but for some reason the power property injections haven't worked. I can see AppleBusPowerController under EC in IOReg, and it should be enough since I'm using iMac 14,2 as SMBIOS. But when charging my iPhone I don't get any Extra Operating Current under System Information.

I'm attaching the zip from gen_debug.sh -sysprofile.

I think my build is described on the signature, but it's a Gigabyte Z270X Gaming 7 with an i7-7700K and a GTX 970, on High Sierra 10.13.6.

Your ioreg shows missing legacy power injections.
You need to set config.plist/Devices/USB/Inject=true.
 
Ok, so I'm implementing your compulsory USB Power Management Guide for High Sierra.
After IOReg scrutiny I've found that in my case I'm in the same situation as your NUC:

"Note: You may find you have an EC in your DSDT: Device with "Name (_HID, EisaId ("PNP0C09"))", even if it is not active."
"Scope (_SB.PCI0.LPCB)
{
Device (H_EC)
{
Name (_HID, EisaId ("PNP0C09")) // _HID: Hardware ID
Name (_UID, One) // _UID: Unique ID
Method (_STA, 0, NotSerialized) // _STA: Status
}"

In my case:
"
Scope (_SB)
{
Device (PCI0)
{
Name (_HID, EisaId ("PNP0A08")) // _HID: Hardware ID
Name (_CID, EisaId ("PNP0A03")) // _CID: Compatible ID
Name (_ADR, Zero) // _ADR: Address
Method (^BN00, 0, NotSerialized)
..."

So I've added a "fake" one with the following SSDT-EC.dsl.
Created the file, compiled in aml, dropped the file into the Patched folder.
Now I can see in IOReg EC-->AppleBusPowerController

Having on this system a SMBIOS 18,1 I had to add a USBX SSDT and so I did copying the code from the iMac 17,1 you shared, then compiled in aml, dropped the file into the Patched folder.
Now I can see under EC-->AppleBusPowerController the properties I just injected.

So far so good I think.

Though I cannot see a "standalone" USBX@0" entry in IOReg as per the iMac 17,1 screenshot you shared before....If I understand I have instead a "fake" EC entry.

Your ioreg shows USB power properties working just fine.
And USBX@0 is clearly visible in IOACPIPlane as expected.

Now I should complete the whole process by overriding the IOUSBHostFamily.kext/Contents/Info.plist adding the code you share into USBInjectAll.kext/Contents/Info.plist modifying the value of my USB configuration, which for this system is "8086_a2af", BUT there are probably other parts I should be modifying. Also should I copy that code at the beginning of the IOUSBHostFamily.kext/Contents/Info.plist?

Thanks for your help.

No need to modify any plist for USB port injection.
It is done via ACPI.
See guide:
https://www.tonymacx86.com/threads/guide-creating-a-custom-ssdt-for-usbinjectall-kext.211311/
(further discussion here regarding port injection is off-topic)
 
Back
Top