Contribute
Register

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

Joined
Dec 31, 2013
Messages
799
Motherboard
Huawei Matebook D
CPU
i5-8250U
Graphics
UHD 620
Mobile Phone
  1. iOS
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.
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
184,466
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
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.
 
Joined
Dec 31, 2013
Messages
799
Motherboard
Huawei Matebook D
CPU
i5-8250U
Graphics
UHD 620
Mobile Phone
  1. iOS
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...
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
184,466
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Joined
Dec 31, 2013
Messages
799
Motherboard
Huawei Matebook D
CPU
i5-8250U
Graphics
UHD 620
Mobile Phone
  1. iOS
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:
 
Joined
Apr 14, 2013
Messages
86
Motherboard
Aorus Z370 Gaming 7
CPU
i7-8700K
Graphics
GTX 970
Mobile Phone
  1. iOS
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: 79
Joined
Dec 31, 2013
Messages
799
Motherboard
Huawei Matebook D
CPU
i5-8250U
Graphics
UHD 620
Mobile Phone
  1. iOS
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: 73
  • SSDTs.zip
    3 KB · Views: 106

RehabMan

Moderator
Joined
May 3, 2012
Messages
184,466
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
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.
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
184,466
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
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)
 
Top