Contribute
Register

[Guide] 10.11+ USB changes and solutions

Status
Not open for further replies.
I can see them in IOService, not sure how to identify the ports. I tried by "Port" such as <01 00 00 00> which is under HP11@1d110000 that one of my USB devices is under. Does that translate to this port under 8086_8xxx?



"8086_8xxx",

Package (0x04)

{

"port-count",

Buffer (0x04)

{

0x15, 0x00, 0x00, 0x00

},


"ports",

Package (0x28)

{

"HS01",

Package (0x04)

{

"UsbConnector",

0x03,

"port",

Buffer (0x04)

{

0x01, 0x00, 0x00, 0x00

}

},


I included this and the 7 other ports I identified and deleted everything else from SSDT-UIAC. However it had no effect, everything appears the same in IOREG and USB still randomly fails.

Ports are identified by name in ioreg. For example, your ioreg shows:

- PR11 under EH01
- PR21 under EH02
- HP11, HP16, HP18 with devices active (under the rate matching hub associated with the first port on EH01)
- HP25 (under rate matching hub associated with the first port on EH02)
- No ports on XHC were used (likely because you only have one USB3 port working, and you didn't plug a device into it)

Since you're using the EHCI controller, you will need to provide data in SSDT-UIAC for each EH01, EH02 and HUB1, HUB2.
Also, your XHC is matched via "8086_8cb1" (always use the actual device-id).
 
I'm doing something wrong. I edited SDT-UIAC.aml to include only ports relevant to my device, and I also deleted HP12-HP15. However those ports still show in IOREG after reboot. Do I have to create a custom DSDT for this patch to apply? I have SSDT-UIAC.aml in the clover config.plist under SortedOrder, and the file is in the patched folder. Dumb question but I don't understand how this patch gets applied to USBInjectAll.kext.
 

Attachments

  • Archive.zip
    3.8 MB · Views: 84
I'm doing something wrong. I edited SDT-UIAC.aml to include only ports relevant to my device, and I also deleted HP12-HP15. However those ports still show in IOREG after reboot. Do I have to create a custom DSDT for this patch to apply? I have SSDT-UIAC.aml in the clover config.plist under SortedOrder, and the file is in the patched folder. Dumb question but I don't understand how this patch gets applied to USBInjectAll.kext.

If you look at your Clover bootlog, you will realize the SSDTs in ACPI/patched are not loading.
And that the config.plist you provide here in EFI/Clover is not the one you're booting with.

Note KernelAndKextsPatches/KextsToPatch in the config.plist you provide here does not exist (eg. no KextsToPatch).

But the Clover bootlog says different:
Code:
0:107  0:000  KextsToPatch: 5 requested
0:107  0:000  KextsToPatch 0: AppleHDA (10.9-10.11-AppleHDA/Realtek ALC887) Kext bin patch, data len: 4
0:107  0:000  KextsToPatch 1: AppleHDA (AppleHDA/Resources/xml>zml) Kext bin patch, data len: 6
0:107  0:000  KextsToPatch 2: IOGraphicsFamily (Fix Boot Glitch) Kext bin patch, data len: 5
0:107  0:000  KextsToPatch 3: AppleHDA (10.11-AppleHDA/Realtek ALC...) Kext bin patch, data len: 4
0:107  0:000  KextsToPatch 4: AppleAHCIPort (External icons patch) Kext bin patch, data len: 8

Clearly, you're not booting from the Clover setup you think you are...
 
Ok I've got the right EFI partition now. I checked the clover boot log and it says the DSDT and SSDT patched. However IOREG still shows the ports HP12-HP15 I removed from SSDT-UIAC.aml, so I still must be doing something wrong. I tried a USB 3.0 thumb drive in all USB ports and it only connected to SSP1 and HP12.
 

Attachments

  • Archive.zip
    3.8 MB · Views: 70
Ok I've got the right EFI partition now. I checked the clover boot log and it says the DSDT and SSDT patched. However IOREG still shows the ports HP12-HP15 I removed from SSDT-UIAC.aml, so I still must be doing something wrong. I tried a USB 3.0 thumb drive in all USB ports and it only connected to SSP1 and HP12.

SSDT-UIAC.aml looks wrong.

Attach source SSDT-UIAC.dsl.
 
Ok I remade it and the injector is working now, the only ports in IOREG are the ones in my SSDT-UIAC. I tested all my ports with USB2 & USB3 devices:

USB3 connected on SSP1-SSP6
USB2 connected on HP11-HP18

Some of these overlap the actual plugs, for example HP15 is the same plug as SSP5. Something is still wrong because when I plug in my USB3 thumb drive, my USB2 mouse goes haywire.
 

Attachments

  • Archive.zip
    3.4 MB · Views: 82
Ok I remade it and the injector is working now, the only ports in IOREG are the ones in my SSDT-UIAC. I tested all my ports with USB2 & USB3 devices:

USB3 connected on SSP1-SSP6
USB2 connected on HP11-HP18

Some of these overlap the actual plugs, for example HP15 is the same plug as SSP5. Something is still wrong because when I plug in my USB3 thumb drive, my USB2 mouse goes haywire.

Comments on ioreg:
- power management not implemented
- AppleLPC not loaded (that is bad, very bad)... can be fixed with ACPI patch
- if you can fit all your ports on XHC, you might consider going that route (no FakePCIID_XHCIMux)

I have noticed strange interactions between USB2/USB3 devices, so it is not uncommon. Best to put the USB2 device on a port where it is not interfered with by USB3 devices. But you have plenty of other things to try before you get there...
 
Why does FakePCIID_XHCIMux still show in IOREG after I deleted the kext from S/L/E? It's not in clover either. This shows in kextstat:

46 0 0xffffff7f8105b000 0x3000 0x3000 org.rehabman.driver.FakePCIID.XHCIMux (1.2.4) D0E14B13-055E-3D25-9998-6A5D3589FDE8 <45 12 7 5 4 3 1>
 
Hi RehabMan, Hi Guys,

I need your help. I dont know, what am I doing wrong with my USB injection? Ive tried to capture every detail, therefore quite some long post around! Sorry!!!


Im using an Asrock X99M Extreme4 which is quit rare to what I know at the moment (no other hackintosh around in our community or others so fare?!)


1) DSDT original finds USB2/3 directly under XHCI/RHUB/ - see attached DSDT.aml in zip-File and Screenshot, 14 USB2.0 (4 IO-shield, 10 internal), 6 USB3.0 (4 IO-shield, 2 internal).
conclusion 1)
all Ports under XHCI to my knowledge, no Ports under EHC1 or EHC2. Under EHC1 and EHC2 I find /HUBN/PRO1/PR11-PR18 and PR11-16. quite common for x99 to what is described here and in the different readme files of your usbinjectall.kext etc.
question 1) What is a PR Device?


2) DPCI Manager tells my my Wellsburg USB xHCI Host controller Device-ID which is: 8086, 8D31:
USB2 Host Controller #1 and #2: 8086:8D26 and :8D2D
conclusion 2) also quite common for x99


3) Clover Config DSDT/kext patches
My clover.config where I used the following DSDT and kext patches is attached in the zip-file.

clover config DSDT Patch (code)
Code:
<dict>
                    <key>Comment</key>
                    <string>change EHC1 to EH01</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    RUhDMQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    RUgwMQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>change XHCI to XHC</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    WEhDSQ==
                    </data>
                    <key>Replace</key>
                    <data>
                    WEhDXw==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>change EHC2 to EH02</string>
                    <key>Disabled</key>
                    <false/>
                    <key>Find</key>
                    <data>
                    RUhDMg==
                    </data>
                    <key>Replace</key>
                    <data>
                    RUgwMg==
                    </data>
                </dict>

I've disable the clover config usblimit kext patch as recommended as i would like to route usb2.0 to EHCI.

4) _OSI and Windows version checks
I didnt't patched my DSDT for XOSI so fare, as I hoped to patch as little as possible.

5) XWAK, XSEL, and ESEL
As in 4), all is present in DSDT, no patches so fare. XWAK does include so code, maybe I will use it to find out if that fixes my hibernation problems.

6) USBInjectAll, FakePCIID_XHCIMux and PCIID Kext, X99 Injector kext

in the zip, Ive added my x99 injector kext which does not help me to get my usb3.0 ports work with 3.0 speed. every port is fixed at 2.0 speed. In addition, in the zip I used the USBInjectAll.kext and the FakePCIID_XHCIMux and PCIID Kext to route the usb2.0 part from XHCI to EHCI.

I've used the pjalm injector as the basis and added my ports and my device id for my xhci usb controller. Also I did this with the USBInjectAll.kext as the basis, no difference.
question 6) how to check if usb2.0 ports are routed to EH01 and EH02?

Can someone plz look into the x99_injector and tell me if this is correct what I have done?

I have guessed which ports are internal (3) and external (255) as I dont have yosemite or windows installed to map the ports (I would guess that this is not the problem in the first step).


5) verification:
after clover config patches and USBInjectAll.kext (with fakepciID and fakepciid_xhcimux) my IORegistry Explorer finds the patches for xhci to xhc and ehc1 to eh01 and ehc2 to eh02 (ioreg in attachment)

the ports by itself are correct I guess.


can someone plz help me and tell me what I'm doing wrong????

thank you very much for reading till the end, I know this is a long post.


all the files requested in the zip attached.
 

Attachments

  • Asrock X99m Ext4 tonymacs-help.zip
    3.9 MB · Views: 78
  • X99_Injector.kext.zip
    1.9 KB · Views: 80
Last edited:
Status
Not open for further replies.
Back
Top