Contribute
Register

[Guide] Creating a Custom SSDT for USBInjectAll.kext

Thanks RehabMan!

I reduced the ports to 18:
Code:
                <string>change 15 port limit to 18 in XHCI kext (credit FredWst)</string>

removing all the port limitation from <key>KernelAndKextPatches</key> will break the configuration since I do have more than 15 ports (default).

Just curious, what will be the consequence of keeping 26 port limitation? consuming extra power which I don't need? will it cause system instability?

Thanks!

Wrong.
The entire goal is to inject only up to 15 ports, then remove any port limit patch.
Using the port limit patch results in instability (it causes a fixed size array to be written beyond its bounds).

You must sacrifice ports to be within the 15-port limit.
 
Wrong.
The entire goal is to inject only up to 15 ports, then remove any port limit patch.
Using the port limit patch results in instability (it causes a fixed size array to be written beyond its bounds).

You must sacrifice ports to be within the 15-port limit.

Understood! Thanks again RehabMan!

1) updated the SSDT to have 15 ports only -- removed some SSxx ports since they are occuppied by USB receivers already
2) removed the patch limitation from config.plist

upload_2018-4-26_10-34-20.png
 
Last edited:
Hi,

What am I missing if SS** doesn't show in my IORegistryExplorer? I only have HS01 - HS14 under XHC.
I have USBInjectAll.kext and the port limit patch in my config.plist.

Screen Shot 2018-04-25 at 8.00.33 PM.png Screen Shot 2018-04-25 at 8.00.48 PM.png Screen Shot 2018-04-25 at 8.21.48 PM.png

Update 1:
So I was using the old patch that's why I wasn't able to see all ports. Updated the patch and all 26 ports are now available.
Then I mapped and created my SSDT according to this guide. Placed my SSDT in ACPI/patched folder, disabled usb patch in config.plist, rebooted, still having the default Apple 15 port limit. Where did I went wrong?

Update 2:
Solved, I missed the device-id for XHC. Now SSDT works perfectly.
 
Last edited:
Hi,

What I am missing if SS** doesn't show in my IORegistryExplorer? I only have HS01 - HS14 under XHC.
I have USBInjectAll.kext and the port limit patch in my config.plist.

View attachment 327887 View attachment 327888 View attachment 327889

Update 1:
So I was using the old patch that's why I wasn't able to see all ports. Updated the patch and all 26 ports are now available.
Then I mapped and created my SSDT according to this guide. Placed my SSDT in ACPI/patched folder, disabled usb patch in config.plist, rebooted, still having the default Apple 15 port limit. Where did I went wrong?

Update 2:
Solved, I missed the device-id for XHC. Now SSDT works perfectly.

Congratulations...
 
So here's this thing that I noticed about the Card Reader that I have been struggling to retain after sleep. If I wake the computer up within a few seconds of sleep, the card reader is powered up and brought back to life every time, no matter how many times I try. However, if I leave the system sleeping for maybe a minute, and then try to wake it up, the card reader will not get powered up again. I wonder what i causing that to happen. Any leads will be welcome.

@RehabMan I tried to use the FakePCIID_XHCIMux.kext, but all it does is that it stops powering the USB2 component of the USB3 ports - plugging a USB2 pen drive into one starts popping up messages saying "Port needs power...," so I removed it.
 

Attachments

  • before-sleep-fresh-boot.zip
    3.2 MB · Views: 60
  • after-sleep.zip
    3.2 MB · Views: 68
So here's this thing that I noticed about the Card Reader that I have been struggling to retain after sleep. If I wake the computer up within a few seconds of sleep, the card reader is powered up and brought back to life every time, no matter how many times I try. However, if I leave the system sleeping for maybe a minute, and then try to wake it up, the card reader will not get powered up again. I wonder what i causing that to happen. Any leads will be welcome.

Keep in mind that sleep is delayed by at least 15 seconds.
In your "short sleep" scenario, the computer may not be entering sleep at all (only "display sleep").

I tried to use the FakePCIID_XHCIMux.kext, but all it does is that it stops powering the USB2 component of the USB3 ports - plugging a USB2 pen drive into one starts popping up messages saying "Port needs power...," so I removed it.

Keep in mind that using FakePCIID_XHCIMux.kext requires a completely different SSDT-UIAC.aml (need to go through the whole process/port discovery/etc).
 
Keep in mind that sleep is delayed by at least 15 seconds.
In your "short sleep" scenario, the computer may not be entering sleep at all (only "display sleep").

I can see that the computer is entering sleep. It does this about 30 seconds after the display turns off. The fans turn off, as do all the lights on the motherboard and system leds. Only a small led on the graphics chip remains lit.

Keep in mind that using FakePCIID_XHCIMux.kext requires a completely different SSDT-UIAC.aml (need to go through the whole process/port discovery/etc).

Yes, I have not created another SSDT-UIAC.aml. I just enabled the port limit patches and the "-uia_ignore_rmcf" clover switch.

What really bugs me about the whole thing is that the computer will turn on the card reader once after the first sleep/wake, and sometimes it won't. It's a binary machine. How can it exhibit this arbitrary behaviour?
 
Yes, I have not created another SSDT-UIAC.aml.

Read post #1.

Hint: Attempting to fix what might be a USB configuration issue by not fixing it is not a good strategy.
 
Read post #1.
Hint: Attempting to fix what might be a USB configuration issue by not fixing it is not a good strategy.

Ok, so I installed FakePCIID_XHCIMux.kext, and wet through the process of port discovery once again. Now the card reader does not get powered up when macos starts booting up, neither with the "port-limit pactches + -uia_ignore_rmcf" option, nor with the ssdt-uiac.aml file present in the efi/clover/acpi/patched/ folder. The USB 3 port on the card reader works just fine and shows up in ioregistry explorer, but not the card reader, even when i unplug it and plug it in while the computer is running (without fakepciid_xhcimux.kext, that's a surefire way of getting it to power up and get detected).

Attaching problem reporting files and ssdt-uiac-aml
 

Attachments

  • with-port-limit-pactches-and-ignore-rmcf.zip
    3.1 MB · Views: 54
  • with-ssdt-uiac-and-fakepciid_xhcimux.zip
    3.1 MB · Views: 48
  • SSDT-UIAC.aml
    1.4 KB · Views: 69
Ok, so I installed FakePCIID_XHCIMux.kext, and wet through the process of port discovery once again. Now the card reader does not get powered up when macos starts booting up, neither with the "port-limit pactches + -uia_ignore_rmcf" option, nor with the ssdt-uiac.aml file present in the efi/clover/acpi/patched/ folder. The USB 3 port on the card reader works just fine and shows up in ioregistry explorer, but not the card reader, even when i unplug it and plug it in while the computer is running (without fakepciid_xhcimux.kext, that's a surefire way of getting it to power up and get detected).

Attaching problem reporting files and ssdt-uiac-aml

Make sure your BIOS settings are appropriate for XHCIMux. xHCI mode should be "Auto" or "Smart Auto". Also, make sure "fast boot" is disabled.
 
Back
Top