Contribute
Register

[Guide] Creating a Custom SSDT for USBInjectAll.kext

Hi all. I have tried lots of guides to make my USB work on Mojave. I tried this guide twice with no success. I am currently on 10.14.1 and I cannot get my machine to recognize 3.0 speeds (no SSXX shown on IORegistryExplorer after excluding HS). I can't even get that include flag to work. I have installed the last USBInjectAll kext (at least I think it is, as November 9th).
I attach the files generated by the useful script by black.dragon74. I hope someone can help me.

Just guessing that you might have a USB keyboard/mouse at HS03/HS14, respectively.

Boot with: -uia_exclude_hs uia_include=HS03,HS14

That will exclude the HSxx ports that are not SSxx so you'll be able to test the SSxx ports.

Be careful to spell the kernel flags correctly.
 
Sorry, here you go.

It seems like you are booting with -uia_ignore_rmcf. Why?
Also, your files in ACPI/patched are not up-to-date with respect to github.
Neither is your config.plist.

Please update everything, then boot without -uia_ignore_rmcf.
I want to insure that everything is correct regarding the ProBook github project.
 
Just guessing that you might have a USB keyboard/mouse at HS03/HS14, respectively.

Boot with: -uia_exclude_hs uia_include=HS03,HS14

That will exclude the HSxx ports that are not SSxx so you'll be able to test the SSxx ports.

Be careful to spell the kernel flags correctly.

It seems I was not spelling the flags correctly. I could boot with HS excluded and test my SS ports. However, after making the SSDT only half of them are working at full USB 3 speeds. How is that possible?

I have 2 front, 6 rear USB 3 ports and 1 type C port (plus 2 internal). Since I have my keyboard and a charging cable connected I excluded their respective SSXX in the SSDT. The result was only both front and 2 rear full speed working, leaving other 2 and the type C at 2.0 speeds.

In addition, only 3.0 external drives work at full speed. My little 3.1 samsung flash drive only works at 2.0 speeds even if connected to one SS working port.

Is this something related to the port limit? I attach debug files again, using the freshly generated SSDT.
 

Attachments

  • debug_26195.zip
    3 MB · Views: 72
Is this something related to the port limit?

I reccomend to start from scratch! Remove everything that might affect your USB, use latest USBInjectAll.kext with port limit patch. Remove all USB devices you can, except mouse and keyboard if you don't have Bluetooth accessories. Reboot. Also make sure that you have valid BIOS settings for your board.

Create an image or drawing of all mapped ports (an example below) by using IORegistryExplorer 2.1. Inject USB device (use USB3 device) into port and see what port is used for that item. Finally you should have proper map. Then start testing desired port for speed etc by using various USB devices to see how devices on this port will perform.

port-mapping-01.jpg
 
I'm having a little dificulty making my SSDT work. Let me explain.
I followed the instructions, to the letter, from post one.
I used the method where I firstly disabled SS0x & USR1 & 2 and found and logged all the HS ports / UsbConnector values with comments.
Secondly I excluded the HS and logged all the SS ports / UsbConnector values.
So far so good, this is the end product:
DefinitionBlock ("", "SSDT", 2, "hack", "_UIAC", 0)
{
Device(UIAC)
{
Name(_HID, "UIA00000")

Name(RMCF, Package()
{
"8086_a12f", Package()
{
"port-count", Buffer() { 26, 0, 0, 0 },
"ports", Package()
{
"HS01", Package() // Front & Rear riser 1 & 2 (hub)
{
"UsbConnector", 3,
"port", Buffer() { 1, 0, 0, 0 },
},
"HS02", Package() // 3rd Row Right
{
"UsbConnector", 3,
"port", Buffer() { 2, 0, 0, 0 },
},
"HS03", Package() // Rear Top Left
{
"UsbConnector", 3,
"port", Buffer() { 3, 0, 0, 0 },
},
"HS04", Package() // Rear Top Right
{
"UsbConnector", 3,
"port", Buffer() { 4, 0, 0, 0 },
},
"HS05", Package() // 2nd Row Left
{
"UsbConnector", 3,
"port", Buffer() { 5, 0, 0, 0 },
},
"HS06", Package() // 2nd Row Right
{
"UsbConnector", 3,
"port", Buffer() { 6, 0, 0, 0 },
},
"HS07", Package() // USB2 Riser Rear Right
{
"UsbConnector", 3,
"port", Buffer() { 7, 0, 0, 0 },
},
"HS08", Package() // USB2 Riser Rear Left
{
"UsbConnector", 3,
"port", Buffer() { 8, 0, 0, 0 },
},
"SS01", Package() // Front -rear riser - USB 01
{
"UsbConnector", 3,
"port", Buffer() { 11, 0, 0, 0 },
},
"SS02", Package() // 3rd Row Right
{
"UsbConnector", 3,
"port", Buffer() { 12, 0, 0, 0 },
},
"SS03", Package() // Rear Top Left
{
"UsbConnector", 3,
"port", Buffer() { 13, 0, 0, 0 },
},
"SS04", Package() // Rear Top Right
{
"UsbConnector", 3,
"port", Buffer() { 14, 0, 0, 0 },
},
"SS05", Package() // 2nd Row Left
{
"UsbConnector", 3,
"port", Buffer() { 15, 0, 0, 0 },
},
"SS06", Package() // 2nd Row Right
{
"UsbConnector", 3,
"port", Buffer() { 16, 0, 0, 0 },
},
},
},
})
}
}
//EOF

I then proceeded to create the AML file, copying it into the /clover/ACPI/patched folder as directed.
I then rebooted.
In the IORegistryExplorer all the ports were listed as expected but none of the USB3 ports were functioning at all. The HS ports were exactly as they should have been.
I then tried re-installing the XHCI-unsupported.kext, then rebooting.... same thing USB2 fine, USB3 no-show. The SS0 ports were all listed, but dorment.

Long story short I have now been battling this for a total of about eight hours, I'm in my seventies and really don't have enough hours of my life left to continue!!! :D
Been through the whole procedure three times in total, trying all variations (with port patch, without port patch, with XHCI-unsupported.kext, then without etc)
I must be going wrong somewhere, but I really have no idea where, suggestions would be so useful.
Thank you in advance.

One question I forgot to ask, when using the method I mentioned first (splitting HS then SS) am I supposed to leave the kexts USBInjectAll.kext and XHCI-unsupported.kext in place or remove them?
 
Last edited:
It seems I was not spelling the flags correctly. I could boot with HS excluded and test my SS ports. However, after making the SSDT only half of them are working at full USB 3 speeds. How is that possible?

I have 2 front, 6 rear USB 3 ports and 1 type C port (plus 2 internal). Since I have my keyboard and a charging cable connected I excluded their respective SSXX in the SSDT. The result was only both front and 2 rear full speed working, leaving other 2 and the type C at 2.0 speeds.

In addition, only 3.0 external drives work at full speed. My little 3.1 samsung flash drive only works at 2.0 speeds even if connected to one SS working port.

Is this something related to the port limit? I attach debug files again, using the freshly generated SSDT.

Your SSDT-UIAC.aml is wrong. It is injecting more than 15 ports. Please read post #1.
 
I'm having a little dificulty making my SSDT work. Let me explain.
I followed the instructions, to the letter, from post one.
I used the method where I firstly disabled SS0x & USR1 & 2 and found and logged all the HS ports / UsbConnector values with comments.
Secondly I excluded the HS and logged all the SS ports / UsbConnector values.
So far so good, this is the end product:


I then proceeded to create the AML file, copying it into the /clover/ACPI/patched folder as directed.
I then rebooted.
In the IORegistryExplorer all the ports were listed as expected but none of the USB3 ports were functioning at all. The HS ports were exactly as they should have been.
I then tried re-installing the XHCI-unsupported.kext, then rebooting.... same thing USB2 fine, USB3 no-show. The SS0 ports were all listed, but dorment.

Long story short I have now been battling this for a total of about eight hours, I'm in my seventies and really don't have enough hours of my life left to continue!!! :D
Been through the whole procedure three times in total, trying all variations (with port patch, without port patch, with XHCI-unsupported.kext, then without etc)
I must be going wrong somewhere, but I really have no idea where, suggestions would be so useful.
Thank you in advance.

One question I forgot to ask, when using the method I mentioned first (splitting HS then SS) am I supposed to leave the kexts USBInjectAll.kext and XHCI-unsupported.kext in place or remove them?
No "Problem Reporting" files attached.
Read FAQ, "Problem Reporting" again. Carefully. Attach all requested files/output.
https://www.tonymacx86.com/threads/faq-read-first-laptop-frequent-questions.164990/
Use the gen_debug.sh tool mentioned in the FAQ, that way it is less likely you'll omit something.
 
Hello all, I have tried to read the original post by @RehabMan and since I am on a Hackintosh for a week or so, I must say that I am totally lost. Although I am quite experienced with Mac OS (I am a Mac OS user since 1988), I am intimated by the hardware I am dealing with. Mac users -usually- never had to deal with this.

I have been given a PDF that shows the mapping of the USB ports for my mobo. Would that save me the original procedure? Would anyone with the same motherboard would be able to provide me with the desired entries for the config.plist? Or is this procedure a must for everyone? I am not lazy or anything, just lost. The terminology is completely unknown to me.
 
It seems like you are booting with -uia_ignore_rmcf. Why?

Because I thought maybe you wanted to see how many USB ports are possible on this system.

Also, your files in ACPI/patched are not up-to-date with respect to github.
Neither is your config.plist.
I want to insure that everything is correct regarding the ProBook github project.

Done, everything should now be up to date, and the port limit removal stuff is gone. Report attached.
 

Attachments

  • debug_9736.zip
    3 MB · Views: 71
Back
Top