Contribute
Register

[Guide] 10.11+ USB changes and solutions

Status
Not open for further replies.
Which part?
Config.plist?
DSDT/SSDT?
Kexts?

Any clue for this? Thanks

Not possible to tell you everything that is wrong as you didn't attach complete "Problem Reporting" files as per FAQ.
https://www.tonymacx86.com/threads/faq-read-first-laptop-frequent-questions.164990/

But clearly Clover/kexts is wrong as BrcmPatchRAM kexts are not "essential" and should not be in EFI/Clover/kexts.
See post #2 of the guide for a discussion of proper kext installation and use of EFI/Clover/kexts:
https://www.tonymacx86.com/threads/guide-booting-the-os-x-installer-on-laptops-with-clover.148093/

Also, your posts in this thread are off-topic.
 
hi sir can we boot clover bootloader from usb 3.0 port? any suggestion
 
I'm having trouble getting USB3 to work on a new install. All ports function as USB2. Most USB3 devices aren't recognized (except for my Netgear a7000, which seems to work fine as USB2 -- "Up to 480 Mb/sec" according to system report). I read through the USBInjectAll.kext readme, as well as this thread, to get a better understanding of things, but still no dice.

Here's a screenshot that I noticed doesn't seem to pick up any of the working USB devices on the computer, nor does it reference any USB3ports. Not sure if it helps, but still...

Screen_Shot_2017-11-04_at_11.18.39_PM.png


I've applied the EHC1/2 to EH01/2 patches, as well as the port limit increase patch. I have both the USBInjectAll and XHCI-200-series-Injector kexts loading from Clover.

Any thoughts?
 
I've applied the EHC1/2 to EH01/2 patches, as well as the port limit increase patch. I have both the USBInjectAll and XHCI-200-series-Injector kexts loading from Clover.
Any thoughts?
EHC1/2 and EH01/2 are probably not required for your system because it is a 100 series or 200 series mother (as it says in Post #1 - did you read that?)

You say the kexts are loading from Clover, but you don't provide any evidence that they are working. A screenshot is not enough. A save from IORegistryExplorer2.1.app would be more useful. kextstat can also tell you if the kexts are loaded. In the IORegistry, there should be a org_rehabman_USBInjectAll_config under IOResources.

Did you try using the 200 series port limit patch? I think it's different than the 100 series. Your IORegistry shows that you are at the 15 port limit, which means you're not using the port limit patch. Anyway, you don't need it to discover which ports you should exclude.

If you implement an SSDT for USBInjectAll to use (SSDT of type UIAC/RMCF), then that information would be copied to the Configuration.Override property under org_rehabman_USBInjectAll_config. The SSDT method is the preferred way to exclude ports since you can also specify UsbConnector type, but you can also use the -uia_exclude boot argument(s) to exclude specific ports or types of ports.
 
EHC1/2 and EH01/2 are probably not required for your system because it is a 100 series or 200 series mother (as it says in Post #1 - did you read that?)

I don't see where it says those patches aren't required, but I apologize if I missed something. The closest I see is "There is no EHCI controller in 100-series, so several of the solutions (and problems) for 7/8/9-series don't apply to 100-series." And then it completely fails to mention which solutions and problems are excluded. I could *assume* it means the EHC patches aren't needed, but I didn't know for sure. As a result, I chose to use the patch just in case.


You say the kexts are loading from Clover, but you don't provide any evidence that they are working. A screenshot is not enough. A save from IORegistryExplorer2.1.app would be more useful. kextstat can also tell you if the kexts are loaded. In the IORegistry, there should be a org_rehabman_USBInjectAll_config under IOResources.

Does this help?

Screen_Shot_2017-11-05_at_12.16.58_AM.png




Did you try using the 200 series port limit patch? I think it's different than the 100 series. Your IORegistry shows that you are at the 15 port limit, which means you're not using the port limit patch. Anyway, you don't need it to discover which ports you should exclude.

I never found any references to a 200-series port limit patch. There's also this thread that claims it's the same as 100. The port limit patch I'm using (in case I have something wrong) is here...

Screen_Shot_2017-11-05_at_12.25.09_AM.png



If you implement an SSDT for USBInjectAll to use (SSDT of type UIAC/RMCF), then that information would be copied to the Configuration.Override property under org_rehabman_USBInjectAll_config. The SSDT method is the preferred way to exclude ports since you can also specify UsbConnector type, but you can also use the -uia_exclude boot argument(s) to exclude specific ports or types of ports.

Do you have a resource for me to look at in regards to an SSDT? Honestly, I've been hunting through threads here all day and many end up in a cyclical pattern of linking back to each other so maybe I just missed the right section.
 
I don't see where it says those patches aren't required, but I apologize if I missed something. The closest I see is "There is no EHCI controller in 100-series, so several of the solutions (and problems) for 7/8/9-series don't apply to 100-series." And then it completely fails to mention which solutions and problems are excluded. I could *assume* it means the EHC patches aren't needed, but I didn't know for sure. As a result, I chose to use the patch just in case.
Follow the recommendations for your motherboard (200 and 100 series). Most problems that the recommendations do not address can be ignored because they do not apply.
Does this help?
The screenshot shows you have USBInjectAll installed with no Configuration.Override as expected. Adding the SSDT method will fix that.
I never found any references to a 200-series port limit patch. There's also this thread that claims it's the same as 100. The port limit patch I'm using (in case I have something wrong) is here...
I misremembered. The different patch is for a different OS, not a different motherboard. I think your patch matches that thread (a text copy/paste is better than a screenshot for posting text output). You are using High Sierra? The Clover log doesn't show success or fail of kext patches. You can turn on debugging for KextsToPatch which will output progress to the display and pause 5 seconds after each patch or something like that, which is why I don't keep that debug option enabled. One day I'll try to get that to output to a log...

Anyway, you should just disable that patch. Instead, you will take that list of 15 ports in the IORegistry, connect a mouse to every port on your computer, add the ports that never got a mouse connection to the "uia_exclude=" boot argument, restart and try connecting the mouse to the ports that didn't get a mouse connection during the previous boots. Repeat until you've matched every physical port to a XHC port.

Do you have a resource for me to look at in regards to an SSDT? Honestly, I've been hunting through threads here all day and many end up in a cyclical pattern of linking back to each other so maybe I just missed the right section.
The readme at https://github.com/RehabMan/OS-X-USB-Inject-All describes the SSDT. After you discover what ports you want to keep using the boot arguments method, you will create a UIAC SSDT containing that list. First you take the SSDT-UIAC-ALL.dsl file, change the name, remove all the stuff that doesn't apply to your motherboard, remove the ports that aren't useable, and remove other ports if necessary so that the number of ports is 15 or less. Then you compile the SSDT, and install it into Clover, remove the USBInjectAll exclude boot arguments, and reboot.
 
Anyway, you should just disable that patch. Instead, you will take that list of 15 ports in the IORegistry, connect a mouse to every port on your computer, add the ports that never got a mouse connection to the "uia_exclude=" boot argument, restart and try connecting the mouse to the ports that didn't get a mouse connection during the previous boots. Repeat until you've matched every physical port to a XHC port.

The problem is that the ports don't ever update in the IORegistry. That first screenshot, for example, was taken while a mouse, keyboard, a wifi adapter, and two USB drivers were plugged in and working. My understanding is that something should be showing up there, as per the RehabMan guide. Aside from the IORegistry not actually displaying what's connected, the big issue is lack of USB3 functionality (USB3 devices don't work at all unless plugged into a USB2 port). I'd like to think the two issues are related, but honestly have no idea where to go from here after spending the day working through things.
 
I'm having trouble getting USB3 to work on a new install. All ports function as USB2. Most USB3 devices aren't recognized (except for my Netgear a7000, which seems to work fine as USB2 -- "Up to 480 Mb/sec" according to system report). I read through the USBInjectAll.kext readme, as well as this thread, to get a better understanding of things, but still no dice.

Here's a screenshot that I noticed doesn't seem to pick up any of the working USB devices on the computer, nor does it reference any USB3ports. Not sure if it helps, but still...

Screen_Shot_2017-11-04_at_11.18.39_PM.png


I've applied the EHC1/2 to EH01/2 patches, as well as the port limit increase patch. I have both the USBInjectAll and XHCI-200-series-Injector kexts loading from Clover.

Any thoughts?

This guide is linked from post #1.
It is important:
https://www.tonymacx86.com/threads/guide-creating-a-custom-ssdt-for-usbinjectall-kext.211311/
 

I've read through that, but I can't actually use it because -- as I mentioned above -- my ports in IORegistryExplorer don't actually show anything being connected to. Here's another few screenshots to maybe illustrate what I'm talking about:

Here's a USB section from the system report showing devices connected and running:

Screen_Shot_2017-11-05_at_10.31.20_AM.png


And here's the IORegistryExplorer section that you reference in the linked guide:

Screen_Shot_2017-11-05_at_10.32.51_AM.png


Notice that none of my HSxx ports seem to have anything listed, which means I can't use that the check what ports are in use. There's something more fundamental missing or wrong, as far as I can tell, but I'm unable to figure out what that is. Hence my post.
 
Status
Not open for further replies.
Back
Top