RehabMan
Moderator
- Joined
- May 2, 2012
- Messages
- 181,015
- Motherboard
- Intel DH67BL
- CPU
- i7-2600K
- Graphics
- HD 3000
- Mac
- Mobile Phone
Hi @RehabMan
I agree with your comment. Your kext and @ammulder 's procedure works perfectly.
May I ask how the two procedures differ? Yours and @cnrd 's ? How the two approach the problem?
The reason I ask is partly because of my earlier post on this thread #49. Your kext is about 130k in length. My self-generated aml file using @ammulder 's method is 697 bytes, which I've happily been using with your kext without problem from El Cap to Sierra. @cnrd 's post creates an aml file 11k in length, which surprised me.
Is either a technically better method? Or just two equally valid paths to the same end?
USB ports are defined by the ACPI spec (primarily _UPC and _PLD).
port-count and ports when injected into ioreg are Apple's way to override ACPI definition of active USB ports. Apple uses this mechanism with their own products.
So, you have a choice for fixing USB when your ACPI code is wrong. First choice: fix the incorrect code in ACPI. Second choice: override it by injecting port-count and ports.
Apple uses AppleUSBMergeNub to do the injection. You can use the same mechanism that Apple does... Or you can use USBInjectAll.kext which can be configured through ACPI. The end result is the same... injected ports and port-count to override ACPI _UPC/_PLD.