Contribute
Register

[Guide] Creating a Custom SSDT for USBInjectAll.kext

I have attached IOreg file and my EFI folder.

Your attachment is too large.
EFI not requested.
Please attach only EFI/Clover (without themes).
Also, please attach other output requested.

Looking at your ioreg:
- it appears USBInjectAll.kext is not installed
- also guessing you neglected to use the port limit patch (looks like you're hitting the 15-port limit due to ACPI enabling all ports)
 
Sorry about that. I've been trying to figure out the guide so have been adding/taking things out to figure this stuff out. Here are all the files.

I went through all the ports and have made a chart of the values it came up under IOReg. I used a USB 2.0 drive and a USB 3.0 drive on all the ports.

In EH02, there's only HP22 being used. I'm guessing that is an internal USB port.

I was looking at the SSDT template and I see there are ports labeled PR11, PR21 and in the IOReg, under EH01, all the HPXX values I found were under PR11 and in EH02, HPXX is under PR21. So are PR11 and PR22 ports that I have to include in the SSDT?
 

Attachments

  • CLOVER.zip
    2.2 MB · Views: 61
  • CyCLoBoTsiMac.ioreg
    5.3 MB · Views: 88
  • RehabMan.zip
    36 KB · Views: 82
  • TerminalOutput.txt
    520 bytes · Views: 104
  • USBPorts.png
    USBPorts.png
    40.7 KB · Views: 135
Last edited:
Hi, I followed the guide and completed the SSDT. However, I got the same results with and without installing USBInjectAll kext. My port config follows:

HS01/SSP1 USB3 Right
HS02 USB2 Left 1
HS03 USB2 Left 2
HS04 WiFi+BT
HS05 WebCam
HS07 HID Touch Controller

I have 3 USB, 2 USB2 on the left side and 1 USB3 on the right side. I did the discovery without USBInjectAll and with it, results are the same. I also couldn't find EHC controllers in IOReg again, with/without USBInjectAll. I think I don't need FakePCIID_XHCIMux.kext, I tried to install it but when rebuilding the cache I got error, dependency stuff and it's omitted then I removed it.

Since I have not so many ports I thought I don't need port limit patch too but I added it anyway. With USBInjectAll I saw the ports that are not appear in IOReg XHC like HS06, SSP2-4. But again, they weren't in IOReg without USBInjectAll.

I also tried Sleep/Wake but it's still not working. When clicked Apple/Sleep screen goes black and it takes 20-25 secs to stop the lights and fans. However, fans are not stopping completely, it's like they keep working in a really slow speed. When I press a button, say space bar or power, screen backlight turns on and fans turn off completely. And the only way to run the laptop again is force shutdown (pressing power button) for a few secs).

Did I implement custom SSDT for USBInjectAll correctly?
Why can't I see EHC on IOReg? Should I?
And sleep, still not working. One guy similar laptop told me he disabled touch screen in order to make sleep/wake work with SSDT-UIAC file. My Touch controller is on HS07, omitting it from SSDT file disables it?

Thanks in advanced.
 

Attachments

  • AE's MBP PR Custom SSDT USBI.zip
    5 MB · Views: 73
I think I have gotten it work. I have attached my final SSDT and the IOReg file. Could you please check for me if it has been implemented correctly? If so, are there any kexts or Clover patches that I need remove besides the port limit patch? Do I still need the FakeCIID and MUX kext files?
 

Attachments

  • CyCLoBoTsiMac.ioreg
    4.9 MB · Views: 87
  • SSDT-UIAC.dsl
    5.1 KB · Views: 78
Last edited:
MacBookPro14,2 is a poor choice. Try MacBookPro14,1 instead.
Make sure you disabled hibernation.

You have a very complex ACPI hotpatch and several questionable/unknown kexts installed. I'm not going to get into debugging that here.

Your USB configuration is wrong. USB3 (HSxx and SSxx) should be marked UsbConnector=3. I don't know why you're using UsbConnector=2. According to the ACPI spec, it means "ExpressCard".

Hi @RehabMan, I appreciate you looking at my files.
I followed your suggestions and reinstalled the OS and went back to vanilla while using the MacPro14.1 smbios instead. I've removed most of the unnecessary hotpatches and "questionable" kexts. I used the hotpatches from your repo and their unchanged from their original configuration apart from the hdef one. Most of my clover kexts are installed to S/L/E through lilufriend as I've found AppleALC to be more reliable that way as it's incomplete for my audio profile.
I disabled hibernation and reconfigured the UIAC ssdt with the HS03 suggestion. But the laptop still reboots for some reason. I reattached the new files including a bdmesg result. Thank you!
 

Attachments

  • Archive.zip
    2.1 MB · Views: 62
Overview
Compress all files as ZIP
. Do not use external links. Attach all files using site attachments only.
I use the USB mouse to test the port, only in the HP11 HP12 HP13 changes (HP11 HP12 is USB3.0 HP13 is USB2.0), in the XHC attribute did not change? PCI8086 9c24 is USB EHC1 #!!
 

Attachments

  • MacBook Air.ioreg
    6.9 MB · Views: 78
  • extract.zip
    51.8 KB · Views: 77
In EH02, there's only HP22 being used. I'm guessing that is an internal USB port.

Your ioreg shows it is attached to the internal bluetooth controller.

I was looking at the SSDT template and I see there are ports labeled PR11, PR21 and in the IOReg, under EH01, all the HPXX values I found were under PR11 and in EH02, HPXX is under PR21. So are PR11 and PR22 ports that I have to include in the SSDT?

Your ioreg shows PR11 is attached to an internal hub (as expected... it is typical).
It shows PR21 is also attached to an internal hub (as expected).
According to ioreg, PR22 is not used, so not sure why you're asking about it.
 
Hi, I followed the guide and completed the SSDT. However, I got the same results with and without installing USBInjectAll kext. My port config follows:

HS01/SSP1 USB3 Right
HS02 USB2 Left 1
HS03 USB2 Left 2
HS04 WiFi+BT
HS05 WebCam
HS07 HID Touch Controller

I have 3 USB, 2 USB2 on the left side and 1 USB3 on the right side. I did the discovery without USBInjectAll and with it, results are the same. I also couldn't find EHC controllers in IOReg again, with/without USBInjectAll. I think I don't need FakePCIID_XHCIMux.kext, I tried to install it but when rebuilding the cache I got error, dependency stuff and it's omitted then I removed it.

Since I have not so many ports I thought I don't need port limit patch too but I added it anyway. With USBInjectAll I saw the ports that are not appear in IOReg XHC like HS06, SSP2-4. But again, they weren't in IOReg without USBInjectAll.

I also tried Sleep/Wake but it's still not working. When clicked Apple/Sleep screen goes black and it takes 20-25 secs to stop the lights and fans. However, fans are not stopping completely, it's like they keep working in a really slow speed. When I press a button, say space bar or power, screen backlight turns on and fans turn off completely. And the only way to run the laptop again is force shutdown (pressing power button) for a few secs).

Did I implement custom SSDT for USBInjectAll correctly?
Why can't I see EHC on IOReg? Should I?
And sleep, still not working. One guy similar laptop told me he disabled touch screen in order to make sleep/wake work with SSDT-UIAC file. My Touch controller is on HS07, omitting it from SSDT file disables it?

Thanks in advanced.

Your SSDT for the USB ports you mention looks correct (from ioreg).
Your BIOS likely disables the EHCI controllers, so FakePCIID_XHCIMux would be nonsense (you would not want to route to disabled EHCI).
Your sleep issues are likely something else. Open a separate thread.
You can disable any port by omitting the port from the SSDT or by using uia_exclude kernel flag.
 
I think I have gotten it work. I have attached my final SSDT and the IOReg file. Could you please check for me if it has been implemented correctly? If so, are there any kexts or Clover patches that I need remove besides the port limit patch? Do I still need the FakeCIID and MUX kext files?

UsbConnector is not used on hub ports (it uses portType instead). portType is known to be zero for normal ports, and portType=2 for internal ports.
FakePCIID_XHCIMux.kext is still needed if you intend to route HSxx ports to EHCI (as you are).
The alternate configuration is to leave everything on XHC. Your choice.
 
Hi @RehabMan, I appreciate you looking at my files.
I followed your suggestions and reinstalled the OS and went back to vanilla while using the MacPro14.1 smbios instead. I've removed most of the unnecessary hotpatches and "questionable" kexts. I used the hotpatches from your repo and their unchanged from their original configuration apart from the hdef one. Most of my clover kexts are installed to S/L/E through lilufriend as I've found AppleALC to be more reliable that way as it's incomplete for my audio profile.
I disabled hibernation and reconfigured the UIAC ssdt with the HS03 suggestion. But the laptop still reboots for some reason. I reattached the new files including a bdmesg result. Thank you!

You still have a complex hotpatch scenario. You should static patch first, then transition to hotpatch (carefully).
Correct hotpatch is not a matter of throwing random solutions at a wall.
Your sleep issues should be addressed in a separate thread.

--

Your USB configuration is still wrong. I still see UsbConnector=2, which is nonsense.
 
Back
Top