Contribute
Register

A Beginner's Guide to Creating a Custom USB SSDT

Hi there.

Okay, I would suggest you remove FakePCIID_XHCIMux.kext, FakePCIID.kext and USBInjectAll.kext from L/E and rebuild your kext caches with the Terminal command:

Code:
sudo kextcache -i /

Once done put only USBInjectAll.kext in the EFI partition EFI/CLOVER/kexts/Other folder. If you need FakePCIID.kext for any other reason put it there also, otherwise don't bother. Do not re-install FakePCIID_XHCIMux.kext.

That should straighten up the XHCI controller.

The only reason to use the "-uia_ignore_rmcf" boot-command with USBInjectAll.kext is if you want to disable an already installed SSDT-UIAC.aml patch.

Come back to us once those steps have been taken :thumbup:

Yeah, now we're talking!

1585521984260.png

Just few questions left:

- My USB 3.0 Western Digital HD (My Book 1230) is on a USB3 port, but looks like is still on USB 2.0 bandwith cap. Proceeding with mapping SSDT, should I be able to "unlock" the full USB 3.0 speed?
Reboot and plug it in again worked, now is correctly seen as 5Gbps! Tomorrow I'll test all the ports.

- Why bother with FakePCIID.kext and FakePCIID_XHCIMux.kext at all? What's the advantage to move all the USB 2.0 control to EHCI if XHCI is capable of handling it? Is the 15 USB port cap determined by EHCI+XHCI ports?
 
Last edited:
Yeah, now we're talking!

View attachment 458245

Just few questions left:

- My USB 3.0 Western Digital HD (My Book 1230) is on a USB3 port, but looks like is still on USB 2.0 bandwith cap. Proceeding with mapping SSDT, should I be able to "unlock" the full USB 3.0 speed?
Reboot and plug it in again worked, now is correctly seen as 5Gbps! Tomorrow I'll test all the ports.

- Why bother with FakePCIID.kext and FakePCIID_XHCIMux.kext at all? What's the advantage to move all the USB 2.0 control to EHCI if XHCI is capable of handling it? Is the 15 USB port cap determined by EHCI+XHCI ports?


Good news! :thumbup:

Well FakePCIID.kext allows usually non-recognised devices to appear in the configuration profile. It has a plug-in system and the FakePCIID_XHCIMux.kext is one of them. I agree, it isn't needed these days with modern desktop chipsets. Good question about the 15-port limit. Some will argue that 2x ECHI and 1x XHCI controllers means a possible 45-ports is permissable. I disagree and don't believe Apple thought of it that way. Their pro machines were the only expandable ones with PCI-e slots where external controllers could add as many extra ports as required.

:)
 
@UtterDisbelief Looks like all USB ports work good, but I've completely lost the bluetooth Broadcom card: it's not even recognised by the System Information at all now.

BrcmPatchRAM3.kext, BrcmFirmwareRepo.kext, BrcmBluetoothInjector.kext and AirportBrcmFixup.kext are installed under L/E, right now only Wi-Fi works. Something happened when all my ports switched to XHCI controller.
 
@UtterDisbelief Looks like all USB ports work good, but I've completely lost the bluetooth Broadcom card: it's not even recognised by the System Information at all now.

BrcmPatchRAM3.kext, BrcmFirmwareRepo.kext, BrcmBluetoothInjector.kext and AirportBrcmFixup.kext are installed under L/E, right now only Wi-Fi works. Something happened when all my ports switched to XHCI controller.


Hmmm,

Well looking at your Hackintool screengrab above, Bluetooth is alive and kicking on USB port HS11.

Which Broadcom wireless card are you using and how is it connected? In a PCI-e adapter? The reason I ask because depending on the model you have, you may not need all those Brcm* patches.

:)
 
Hmmm,

Well looking at your Hackintool screengrab above, Bluetooth is alive and kicking on USB port HS11.

Which Broadcom wireless card are you using and how is it connected? In a PCI-e adapter? The reason I ask because depending on the model you have, you may not need all those Brcm* patches.

:)

I've got a Broadcom BCM94352HMB (Mini PCIe).

When I made the screen grab you're referencing, XHCI was active but USB 3.0 being kept at low-speed. After reboot I totally lost the bluetooth card.

1585607836120.png
 
Yes, that's great. Thanks :thumbup:

Where you put the necessary kexts depends on which version of macOS you are using.

You don't need FakePCIID_XHCIMux.kext. That particular kext moves Intel USB2 ports off an XHCI controller. As you don't have Intel USB3/XHCI that will only confuse the set-up. Try removing it, rebuilding your kext-caches with Terminal command:

sudo kextcache -i /

... and reboot. Check IORegistryExplorer again :thumbup:

Yes, those renames are correct.

:)
UtterDisbelief i think i managed to get all the usb ports injected however most of them are labeled HP and LP not HS. Cant these simply be renamed in hackintool? see screenshots of ioreg and hackintool.
 

Attachments

  • hackintool 2.jpeg
    hackintool 2.jpeg
    247.7 KB · Views: 57
  • ioreg2.jpeg
    ioreg2.jpeg
    226.9 KB · Views: 57
UtterDisbelief i think i managed to get all the usb ports injected however most of them are labeled HP and LP not HS. Cant these simply be renamed in hackintool? see screenshots of ioreg and hackintool.

Hi there.

A bit of background may help (sorry if you know all this) ...

Well the way it usually works is that EHCI controllers come in pairs - USBE and EUSB, or EHC1 and EHC2. We rename them to something macOS understands - EH01 and EH02.

Form here things can vary but generally a hub is attached to each controller - PR11 on EH01 and PR21 on EH02. On each of PR11 and PR21 there are HP** ports. Usually 8x on one and 6x on the other. These numbers depend on the chipset being used.

In your case because you don't have a native Intel USB3/XHCI controller, the motherboard manufacturer has added a third-party one - Etron - to give you this functionality. Because these are not a part of the Intel set they are attached elsewhere on the PCI device tree, usually PX** (RP in the case of XHC). They don't count in the 15-port limit.

So no, you can't do much renaming except the initial controller type. Well you can with ACPI patching but there is really no need and it is unlikely to help.

Hope that helps.

:)
 
Hi there.

A bit of background may help (sorry if you know all this) ...

Well the way it usually works is that EHCI controllers come in pairs - USBE and EUSB, or EHC1 and EHC2. We rename them to something macOS understands - EH01 and EH02.

Form here things can vary but generally a hub is attached to each controller - PR11 on EH01 and PR21 on EH02. On each of PR11 and PR21 there are HP** ports. Usually 8x on one and 6x on the other. These numbers depend on the chipset being used.

In your case because you don't have a native Intel USB3/XHCI controller, the motherboard manufacturer has added a third-party one - Etron - to give you this functionality. Because these are not a part of the Intel set they are attached elsewhere on the PCI device tree, usually PX** (RP in the case of XHC). They don't count in the 15-port limit.

So no, you can't do much renaming except the initial controller type. Well you can with ACPI patching but there is really no need and it is unlikely to help.

Hope that helps.

:)
no worries thank you for explanation. so i am ok to discover ports no matter what they are called and remove everything else?
 
Hello, I tried few more tests:
- I’ve put FakePCIID_XHCIMux.kext and FakePCIID.kext again into L/E.
My USB 3.0 drive is at first recognised as a USB 2.0 drive into EH01, BUT if i unplug and plug it again in the same port... voilà, now is a USB 3.0 under SS03! It looks like I need to do that everytime I boot into the system.

- Bluetooth still doesn’t work
At first it worked good with FakePCIID installed. But now It’s not working at all even if I reapplied the kext under L/E. One thing I’ve noticed is that right now It isn’t recognised even by Windows 10 - I think it is off-topic
 
Hello, I tried few more tests:
- I’ve put FakePCIID_XHCIMux.kext and FakePCIID.kext again into L/E.
My USB 3.0 drive is at first recognised as a USB 2.0 drive into EH01, BUT if i unplug and plug it again in the same port... voilà, now is a USB 3.0 under SS03! It looks like I need to do that everytime I boot into the system.

- Bluetooth still doesn’t work
At first it worked good with FakePCIID installed. But now It’s not working at all even if I reapplied the kext under L/E. One thing I’ve noticed is that right now It isn’t recognised even by Windows 10 - I think it is off-topic

Hi there.

Okay, but I can't offer support if you install the FakePCIID/XHCIMux kexts in L/E with Catalina ... It is something that will surely break in future.

To stop the USB2/3 port strangeness you need to use USBInjectAll.kext and a properly configured SSDT-UIAC.aml in the EFI/CLOVER/kexts/Other and EFI/CLOVER/ACPI/patched folders respectively.

:)
 
Last edited:
Back
Top