Contribute
Register

[Guide] 10.11+ USB changes and solutions

Status
Not open for further replies.
Heh :)

Ok. I finally added the remove-usb3-port-limit-kext-patch, and HP15/HP16 are now discovered as SSP5/SSP6.

So next step for me would be to nuke away most of the other USB3 ports, e.g. HS07-HS15, is that correct? And afterwards remove the remove-limit...?

Do I have to add the SSDT-UIAC to clovers "sortedOrder" section, and if so, do I have to add all other SSDTs there, too?

Since my edits in SSDT-UIAC do not seem to be activated, though I can see it via MaciASL...

Your ioreg here still shows SSxx port truncation (15-port port limit in effect).
Your Clover bootlog (extracted from ioreg), shows the port limit patch is disabled:
Code:
1:540  0:000  KextsToPatch: 5 requested
1:540  0:000   - [00]: com.apple.driver.usb.AppleUSBXHCIPCI (change 15 port limit to 20 in XHCI kext (9-series)) :: MatchOS: 10.12.x :: BinPatch :: data len: 7
1:540  0:000   - patch disabled at config
1:540  0:000   - [01]: com.apple.driver.usb.AppleUSBXHCIPCI (change 15 port limit to 26 in XHCI kext (100-series)) :: MatchOS: 10.12.x :: BinPatch :: data len: 7
1:540  0:000   - patch disabled at config
1:540  0:000   - [02]: IOAHCIBlockStorage (TRIM Enabler) :: BinPatch :: data len: 10
1:540  0:000   - patch disabled at config
1:540  0:000   - [03]: AppleTyMCEDriver (Boot smbios w/o ECC) :: BinPatch :: data len: 24
1:540  0:000   - [04]: IOAHCIBlockStorage (TRIM Enabler2) :: BinPatch :: data len: 11
1:540  0:000   - patch disabled at config

After you fix that...
Next step is to trim ports... unused HPxx, PRxx, and HSxx, and SSxx.

If you're using SortedOrder, then yes... you would have to add the SSDT to the list. When using SortedOrder, only the SSDTs listed there are loaded by Clover. If you're not using SortedOrder, then Clover loads all SSDTs in ACPI/patched in random order.

Your Clover bootlog shows unsorted loading:
Code:
6:559  0:000  === [ ACPIPatchedAML ] ====================================
6:559  0:000  Unsorted
6:559  0:000  Inserting SSDT-XOSI.aml from EFI\CLOVER\OEM\B85M-G\ACPI\patched ... Success
6:560  0:001  Inserting SSDT-UIAC.aml from EFI\CLOVER\OEM\B85M-G\ACPI\patched ... Success
6:563  0:002  Inserting SSDT-SMBUS.aml from EFI\CLOVER\OEM\B85M-G\ACPI\patched ... Success
6:565  0:001  Inserting SSDT-7.aml from EFI\CLOVER\OEM\B85M-G\ACPI\patched ... Success
6:567  0:002  Inserting SSDT-5.aml from EFI\CLOVER\OEM\B85M-G\ACPI\patched ... Success
6:569  0:002  Inserting SSDT-1.aml from EFI\CLOVER\OEM\B85M-G\ACPI\patched ... Success

Which, of course, is not a good idea, especially if SSDT-7.aml, SSDT-5.aml and SSDT-1.aml are patched OEM SSDTs.
In the case of patched OEM SSDTs, you should include all static OEM SSDTs in ACPI/patched, DropOem=true, and SortedOrder to specify correct order.

I have no idea why you have those patched SSDTs in ACPI/patched... they are being ignored by the system due to DropOem=false (duplicate symbols in SSDTs are ignored).

Note also that dropping individual OEM tables so you can replace them with content in ACPI/patched is also a mistake as it changes the effective order of the SSDTs.
 
Last edited:
After you fix that...
Next step is to trim ports... unused HPxx, PRxx, and HSxx, and SSxx.

I already did, usb3 was discovered, and then I disabled port-patch again and nuked out those ports a bit - as you can see in the SSDT-IAUC. My dump was made after that. So you want a dump now with patch enabled??

Which, of course, is not a good idea, especially if SSDT-7.aml, SSDT-5.aml and SSDT-1.aml are patched OEM SSDTs.
In the case of patched OEM SSDTs, you should include all static OEM SSDTs in ACPI/patched, DropOem=true, and SortedOrder to specify correct order.
Ok, so what order should I use then? the SSDT1,5,7 are original ssdts.

I have no idea why you have those patched SSDTs in ACPI/patched... they are being ignored by the system due to DropOem=false (duplicate symbols in SSDTs are ignored).
But why then MaciASL shows me all those SSDTs under "New from ACPI"?
 
Your ioreg here still shows SSxx port truncation (15-port port limit in effect).
Yes, but I already nuked out ports in SSDT-IAUC, why are still all ports listed? ACPI is there, SSDT was loaded.
 
I already did, usb3 was discovered, and then I disabled port-patch again and nuked out those ports a bit - as you can see in the SSDT-IAUC. My dump was made after that. So you want a dump now with patch enabled??

Your ioreg shows all ports being injected.

Ok, so what order should I use then? the SSDT1,5,7 are original ssdts.

Use original order.

But why then MaciASL shows me all those SSDTs under "New from ACPI"?

The SSDTs will be injected, but ignored by the system if there are duplicate symbols.
Must place all static OEM SSDTs in ACPI/patched, DropOem=true, and SortedOrder to reflect original order.
 
Yes, but I already nuked out ports in SSDT-IAUC, why are still all ports listed? ACPI is there, SSDT was loaded.

Download patchmatic: https://bitbucket.org/RehabMan/os-x-maciasl-patchmatic/downloads/RehabMan-patchmatic-2015-0107.zip
Extract the 'patchmatic' binary from the ZIP. Copy it to /usr/bin, such that you have the binary at /usr/bin/patchmatic.

In terminal,
Code:
if [ -d ~/Downloads/RehabMan ]; then rm -R ~/Downloads/RehabMan; fi
mkdir ~/Downloads/RehabMan
cd ~/Downloads/RehabMan
patchmatic -extract

Note: It is easier if you use copy/paste instead of typing the commands manually.

--

Next time "Problem Reporting"...
Read FAQ, "Problem Reporting"
https://www.tonymacx86.com/threads/faq-read-first-laptop-frequent-questions.164990/
 
What is the original order?

Each SSDT is numbered in a Clover F4 extract.
The number indicates the order.

FYI: I identified your mistake...

You have in "8086_8xxx":
Code:
                "ports",
                Package (0x28)

0x28 is 40. And 40/2 is 20. eg. 20 ports...
Then what follows is a package without 40 entries (you have 12 ports, 24 entries, not 40)
Hence it is ignored by USBInjectAll.kext as the data is invalid.

As per guide, you should edit the SSDT-UIAC-ALL.dsl, not a compiled AML when eliminating ports.
If you edit the AML, you will need to adjust package sizes as appropriate.
 
Each SSDT is numbered in a Clover F4 extract.
The number indicates the order.
And custom SSDT afterwards or before?

I did that now - numeric sort order and dropoem - no change. IOPlane stills lists all ports, my SSDT-IAUC seems to be ignored by usbinjectall kext...
 

Attachments

  • config.plist
    8 KB · Views: 220
And custom SSDT afterwards or before?

For most add-on SSDTs (such as SSDT-UIAC.aml), it doesn't matter whether they appear before or after.
But it depends on content. For example, SSDT-PNLF.aml (used for backlight control on laptops) must appear after.

I did that now - numeric sort order and dropoem - no change. IOPlane stills lists all ports, my SSDT-IAUC seems to be ignored by usbinjectall kext...

No such thing as IOPlane.

Read post #2309.
 
For most add-on SSDTs (such as SSDT-UIAC.aml), it doesn't matter whether they appear before or after.
But it depends on content. For example, SSDT-PNLF.aml (used for backlight control on laptops) must appear after.



No such thing as IOPlane.

Read post #2309.

Erm, I think you missed that I actually have no "origin" ACPI subdirectories at all. So "dropoem=true" actually is useless. As I said, the sorted order loading does not change anything, the ssdts were before and now loaded and parsed, not ignored.

I finally did change the ports directly in USBInjectAll.kext's Info.plist, and got rid of a SSDT-IAUC... It working now, but something seems to be fishy regarding the parsing of SSDT-IAUC in USBInjectAll.kext... Not?

Maybe its because I put USBInjectAll.kext into clover extensions?


May I suggest some corrections in your guides, to prevent further noob confusion:

- The limit of 15 is related to the USB3 controller, not the USB2 controller. This was not clear to me. Why not add "usb3" to that parts?
- The port extension patch is only temporarily to make lost usb3 available. After limiting the available usb3 ports in USBInjectAll.kext, it should be immediately removed. This isn't clearly expressed in the related parts.
- All related kexts should be provided in the one guide
- You really could add a maximal simple "quick manual" section on top, and referring to "detail section" if it doesn't work. With really simple steps:

1. Rename EHCI and UHCI in ACPI accordingly
2. Put USBInjectAll.kext, FakePCIID.kext and FakePCIID_XHCIMux.kext in kext/Other of clover
3. Add the port-extension-patch to kext patch of clover
4. Reboot and have a look at IOACPIPlane. Put your mouse in each USB2 port and write down the Port Number/Name and location on your computer
5. Do the same with a USB3 device and put it in all USB3 ports, write down port number and location
6. Edit USBInjectAll.kext Info.plist, remove the not used USB3 ports. Then remove the not used USB2 ports.
7. Disable the port-extension-patch
8. Reboot


P.S: I really have no clue why you want the people to make the USBInjectAll.kext limiting configuration in an additional SSDT...? Why not simply edit the Info.plist instead, so you could even place it in the clover kexts? The approach via SSDT seems to just complicate things... IMHO.
 
Last edited:
Status
Not open for further replies.
Back
Top