Contribute
Register

[Guide] 10.11+ USB changes and solutions

Status
Not open for further replies.
My original injector I made from your guide and your help seem to work fine but after running your USBInjectAll I realized that I did not have the right number of ports, I had four for EH01 and three for EH02. USBInjectALL shows 8 for EH01 and 6 for EH02. I made the changes to my injector and everything seems fine.

8-ports on EHCI#1 and 6 on EHCI#2 is what is supported by the chipset. But typically they are not all used. Most systems use a rate matching hub (RMH) on port #1 of each and all devices connect there.

The idea to use USBInjectAll to determine which ports are actually used (monitor in ioreg while you connect things to all ports). Ports that are not used, can be eliminated in your port injector.

If I leave Connector type 2 all seems fine. If I change everything to 255 all USB ports still work but Built in Webcam and BT no longer are available. I changed everything back to connector type 2. I don't know which ones should be 2, 0 or 255. Obviously 3 is not a choice since there are no USB3 ports. Would I find that out in Ioreg?

The connector type can be determined by looking at _UHC (second item in the return package) in DSDT. Since port #1 is typically RMH, it will almost always be 255 (proprietary).

I am a bit confused with IOACPIplane view. Your example shows your Webcam under one of the ports. Neither my Webcam nor BT show under them at all with your kext or mine.

That part is system specific.. It all depends on what the DSDT author decided to do.

Also I see USB under IOACPIPlane and not sure if any information can be used from them?

It is useful to know which ports return non-zero from _STA.

Was I correct in using the same number of ports that USBInjectAll showed in IOreg or was I support to physically make connections to see which number of total ports are needed. Maybe I Have too many now? I will go over your readme again,I think I have misread something.

USBInjectAll will always inject the same for a given chipset. But from there you determine which ones are actually needed.

You posted a couple threads up regarding sleep/wake issues have to go over that because It starts to sleep and just never will sleep and monitor stays black.

Sounds like "instant wake". It is covered in the ACPI patching guide.

Ok so I only need for EH01 four ports. There are 4 physical ports and each shows up in ioreg, with different numbering but they are 1 through 4. I removed ports 5 through 8. For EH02 this is used only for BT and Internal WebCam both USB2. So I only have port 1 and 2 for them.

Your result is fairly typical. There are many more ports available from the chipset than are actually used.

USB connector shows 0xff for port 1 both for EH01 and EH01 and the rest shows 0. So I changed the first port to 255 and the rest 0 for EH01 but for EH02. I had to insert 2 for EH02 ports 1 and 2 because internal USB2 BT and Webcam do not show up if I use either 0 or 255 even though that is what Ioreg shows with your kext for EH02.

Interesting... According to spec, built-in devices would normally be 255. According to ACPI spec, 2 means "Express Card".
 
I'm sure other users will appreciate details on exactly what the specific problems were with this board and what solutions you used to to fix it.

I have a pretty good idea as to what's required (having written post #1), but practical examples as it relates to specific hardware are always useful to those trying to implement it on their own hardware.

I used PJALM's 9 series injector kext, patched it for my ports and it simply started working for me. Though my board seems to have a limit as to how much power it can provide to USB so if too many devices are plugged in, it will only provide up to 1.a.
 
I used PJALM's 9 series injector kext, patched it for my ports and it simply started working for me.

Keep in mind that kext has code not needed/wrong for 10.11.1.

But yes... it is the same technique that I originally described here and in nguyenmac's original thread.
 
Keep in mind that kext has code not needed/wrong for 10.11.1.

But yes... it is the same technique that I originally described here and in nguyenmac's original thread.

Does it? I found it to be the easiest way to get my ports working again. Map ports with IOReg, modify kext as needed, done. Oddly enough, my USB 2.0/3.0 worked just fine on 10.11 but the 10.11.1 update killed my USB 3.0 entirely.
 
Does it? I found it to be the easiest way to get my ports working again. Map ports with IOReg, modify kext as needed, done. Oddly enough, my USB 2.0/3.0 worked just fine on 10.11 but the 10.11.1 update killed my USB 3.0 entirely.

10.11.1 has native support for 8086:8cb1, so the IOKitPersonality for 8086:8cb1 in the injector can be removed. A specialized class is used for that device.
 
All you need to do is open the plists and navigate to ACPI/DSDT/Patches. Simple copy paste from there...

Thought I'd give you a few days break from the uber noob!

OK, I've now figured out what you meant. I copied and pasted the patches from your config.plist file to mine using Xcode. (I thought I had to copy and paste the code text hence my confusion). After copying the patch in Xcode, if I open my config.plist in Clover, it now looks like this:

Screen Shot 2015-10-29 at 16.36.43.png

I haven't copied this part though:

Screen Shot 2015-10-29 at 16.31.55.png

Do I need this also? If so, I already have an "item 0" in Kexts to patch. Do I need to renumber? And finally, what next Obi Wan?

BTW, now on 10.11.1
 
Thought I'd give you a few days break from the uber noob!

OK, I've now figured out what you meant. I copied and pasted the patches from your config.plist file to mine using Xcode. (I thought I had to copy and paste the code text hence my confusion). After copying the patch in Xcode, if I open my config.plist in Clover, it now looks like this:

View attachment 159558

Don't forget about SSDT-HACK.aml...

I haven't copied this part though:

View attachment 159564

Do I need this also? If so, I already have an "item 0" in Kexts to patch. Do I need to renumber? And finally, what next Obi Wan?

BTW, now on 10.11.1

You need that patch in order to inject all ports if your XHC controller device-id starts with 8 (eg. 0x8xxx).
 
Don't forget about SSDT-HACK.aml...

I keep rereading page 1, but due to my limited knowledge, hard for me. I copied this part, is that what you mean?

Screen Shot 2015-10-29 at 17.14.45.png

If not, can you explain the steps for SSDT_HACK.aml assuming I am a retard :oops:


need that patch in order to inject all ports if your XHC controller device-id starts with 8 (eg. 0x8xxx).

I put the patch in after looking here, is this the XHC controller ID to which you refer?

Screen Shot 2015-10-29 at 17.20.48.png

If not, how/where do I find? I've attached IOreg in case useful. Your help and patience is appreciated.
 

Attachments

  • ioreg.zip
    589.6 KB · Views: 70
I keep rereading page 1, but due to my limited knowledge, hard for me. I copied this part, is that what you mean?

View attachment 159571

If not, can you explain the steps for SSDT_HACK.aml assuming I am a retard :oops:

If you use that patch, you must include the SSDT that defines XOSI. The SSDT-HACK.dsl is available at USBInjectAll repo.

I put the patch in after looking here, is this the XHC controller ID to which you refer?

View attachment 159573

If not, how/where do I find? I've attached IOreg in case useful. Your help and patience is appreciated.

Looking at your ioreg, your XHC device-id is 0x8c31 (it is not visible in the image you posted... wrong node selected). You will need the port limit patch in order for USBInjectAll to work.
 
If you use that patch, you must include the SSDT that defines XOSI. The SSDT-HACK.dsl is available at USBInjectAll repo.
The patch is now entered under DSDT/Patches/item 0.

OK so, opening SSDT-HACK.dsl in Xcode shows me this:

Screen Shot 2015-10-29 at 17.59.57.png

q1. "To use this SSDT... compile as AML" - never done this before, how to do?
q2. "place in ACPI/patched" - is that EFI/CLOVER/ACPI/patched?
q3. "add to config.plist/ACPI/SortedOrder" - am I adding the same AML file to this location also? Where/how do I do that?

I'm hoping that my basic questions will help other beginners like me by the way.
 
Status
Not open for further replies.
Back
Top