As a quick followup, to see if any one knows, when using the USBmap.kext, you can/should disable the SSDT-UIAC, USBInjectAll, and , is that correct?
"Should" According to USBmap developer, USBmap works on its own.
USBInjectAll is a form of SSDT-UIAC—it includes a version of SSDT-UIAC to enable as many ports as possible: 26 max per root controller (root means appears as PCIe).
From what I've gleaned, SSDT-UIAC is an early approach that used to come in two forms, an inject-all form and a user edited custom form. As approaches advanced, the all form got packaged into USBInjectAll to make other approaches work, like Hackintool.
XhciPortLimit quirk is an odd bit of config I don't understand and haven't yet come across its history. Anyway it should be FALSE, which means "do not unlimit" (a double negative) to whatever effect and for whatever purpose OpenCore has about this quirk. Here's what the OC documentation says about it:
22. XhciPortLimit
Type: plist boolean
Failsafe: false
Requirement: 10.11 (not required for older)
Description: Patch various kexts (AppleUSBXHCI.kext, AppleUSBXHCIPCI.kext, IOUSBHostFamily.kext) to
remove USB port count limit of 15 ports.
Note: This option should be avoided whenever possible. USB port limit is imposed by the amount of used bits in
locationID format and there is no possible way to workaround this without heavy OS modification. The only valid
solution is to limit the amount of used ports to 15 (discarding some). More details can be found on AppleLife.r
USBmap includes an inject-all function: your setup run makes an inject-all form, called a dummy USBmap.kext
A. You boot with the dummy
B. Verify you can detect all the port instances you are going to want
C. Edit dummy to eliminate unneeded with another helper program if you can find everything and boot again
D. Discover all for final map and set types
E. Create and install the final map.
'B' is done only if needed (most won't) to get all the ports you care about visible under the Mac ACPI ceiling of 26.
So there's two levels of editing: Edit dummy (inject-all form) to show you care about limited to 26 per root, then another edit to get to the final working map which which is limited to 15 instances per root. If you don't get to 15 or fewer your config will be unstable.
A port instance is a speed personality such as HS vs SS. or one of the two orientations of a non-switched Type-C connector. A pair of instances that belong to the same physical port are termed companions. You don't need to enable both companions, you can choose as you like. A port's type is determined by the connector module. For example, a port that is served by a board header should be typed according to whatever module you connect to the header. "Internal" is for onboard components like sound and LED controllers, or onboard fan-out controllers.
USB tunneled by Thunderbolt doesn't pertain to mapping, that's it's own world.
I'm not sure about this last part:
I think boards with TB have their Type-C ports served by a root USB controller when a USB device is connected.
Ports for USB controllers that hang from a root aren't limited and don't figure for mapping.
Root is a term I made up that expresses where the controller appears in the ACPI tree under the obseration that the config in question appears as a PCI entity. This is a subject with important factors I don't understand.
USBmap calls them "IOKitPersonalities" but in essennce they are controllers. The devil is in the circuit designs which I have never studied.
hth