USB mapping — USBToolBox and UTBMap¶
Two kexts, two different jobs:
| Kext | Version | Role |
|---|---|---|
USBToolBox.kext |
1.2.0 | Loader that reads a port map and applies it. Generic — identical on any machine. |
UTBMap.kext |
1.1 | The map itself: which ports exist, their type and their internal/external role. Specific to this motherboard. |
Both are enabled in the Sonoma and Sequoia configs. UTBMap is generated with
the USBToolBox tool on the machine it is
meant for.
Why the map matters here¶
Without a map macOS guesses port properties from the firmware. On this laptop that produces two concrete problems:
- Bluetooth never enumerates. The Intel Bluetooth controller sits on XHCI HS14, and macOS only exposes it once the port is declared. See networking.
- The installer cannot find its own drive. While installing Sequoia the map
had to be disabled because the USB stick sat on a port the map pruned; the
result was a
still waiting for root devicehang. After installing, the map is re-enabled and the boot drive must be on a declared port.
The Sequoia EFI therefore requires the map for normal operation; the Sonoma EFI ships it enabled as well.
Do not copy this map¶
UTBMap.kext describes this Dell G3 3579 down to the port count and the
internal header assignments. Using it on another board will hide ports, mislabel
them, or break boot entirely — the same class of failure as the installer hang
above.
Generate your own map on the target machine with USBToolBox, then keep
USBToolBox.kext (generic) and replace only UTBMap.kext.
Checking the result¶
After booting with a new map, ioreg -r -c AppleUSBHostController lists the
declared ports, and System Information → USB shows what is attached where. If a
device disappears after a map change, the port it uses was pruned.