- Joined
- Apr 12, 2021
- Messages
- 901
- Motherboard
- Asus z590 ROG Maximus XIII Hero
- CPU
- i9-11900K
- Graphics
- RX 6600 XT
- Mac
- Classic Mac
- Mobile Phone
I'll meet you over there.I'm happy to help on one of the USB support threads in Post Installation / General Help threads with more info if needed.
Basically SSDT-UIAC.aml stands for USBInjectAll Configuration and was designed soley for that purpose. If it works for USBMap then purhaps they used some of the code when creating it?
To finish up here my thoughts here:
At this point I'm not struggling with USB and USBmap works well for my purposes. It's a command-line oriented tool which I prefer over Hackintool, just a matter of taste.
It's clear that CorpNewt drew on USBInjectAll lore to make USBmap, and also clear that SSDT-UIAC.aml is a component of USBInjectAll approach. All these approaches have in common the idea of an "all" or "dummy" injector that shows as many ports as possible, then an edited form that brings total port-counts in line with macOS limits.
It looks like USBToolBox is a further evolution because it can do this in an SMBIOS-independent way.
My final point here is that must be understood by general users that USBInjectAll, which contains a version of SSDT-UIAC exists in both "ALL" and "custom" forms, where all might be enough on its own, and if not, provides a base for you to create a custom. How you get to this is hack build specific.
This guide from @RehabMan provides key points:
[Guide] Creating a Custom SSDT for USBInjectAll.kext
Overview One of the serious issues most users will face with 10.11.x (and later, including 10.12.x) is the new USB stack in OS X/macOS. It has a much heavier reliance on ACPI, and as a result is much more likely to expose bugs in your ACPI implementation of _PLD, and _UPC. It is covered in...
www.tonymacx86.com
USBInjectAll.kext is coded in a data driven way. Nothing is hard-coded in the kext code itself. All data is contained in the Info.plist. When USBInjectAll.kext starts, matching on EH01/EH02/XHC, or the internal hubs connected to EH01/EH02 port 1, it consults the configuration data in Info.plist as related to the device it has attached to and injects the data it finds there. But an SSDT can be used to override the data in the Info.plist.
A template is provided in the USBInjectAll.kext github repo, SSDT-UIAC-ALL.dsl, which has overrides for all the data already in the USBInjectAll.kext Info.plist. You could compile SSDT-UIAC-ALL.dsl to SSDT-UIAC-ALL.aml (File Save As, format: ACPI Machine Language Binary in MaciASL) and place it in ACPI/patched, and although all the data in the Info.plist will be overridden by the SSDT, no net change would be observed, as the data in SSDT-UIAC-ALL.dsl is the same as the data already in the USBInjectAll.kext Info.plist.
In order to effect our changes, we must modify the SSDT-UIAC-ALL.dsl so it contains only the ports we need.
The steps are as follows:
- use SSDT-UIAC-ALL.dsl as a template (https://github.com/RehabMan/OS-X-USB-Inject-All/raw/master/SSDT-UIAC-ALL.dsl)
- remove configuration sections that don't apply to the target hardware
- remove ports from the various sections that are not needed
- change UsbConnector values to match physical hardware/ports
I've been working on a writeup for USBmap, to help others because the QuickStart on Github is not quite enough, but this got out of control as there is a huuuge amount of lore connected to this stuff.
Details like the meaning of UIAC are great tidbits.
Thanks for help.
Last edited: