Does anyone know of any software/script etc that can visualise/dump the USB tree in a simple way? I want to try a bunch of different combinations with my dock and Studio Display and peripherals without the tedium of manually documenting each layout.
The System Profiler app shows the tree at a deep system level, but it is littered with implementation details that make it hard to read. I also found the system_profiler SPUSBDataType
command which lists the same data. I managed some simplification of that with system_profiler SPUSBDataType | egrep '(:$|Controller|Vendor)'
but even that has superfluous stuff.
It seems that one each physical device that accepts other USB devices can represent as multiple hubs, typically for both USB 2 and USB 3.
Here’s an abbreviated output from the grep
command above. Take a look at where my Stream Deck appears. It’s plugged into the OWC Dock, which is plugged into my Studio Display, which is plugged into my Mac. So… Mac → SD → OWC → Stream Deck.
USB:
USB 3.1 Bus:
Host Controller Driver: AppleT8103USBXHCI
USB 3.1 Bus:
Host Controller Driver: AppleT8103USBXHCI
USB 3.1 Bus:
Host Controller Driver: AppleUSBXHCITR
PCI Vendor ID: 0x8086
...
USB2 Hub:
Vendor ID: 0x05ac (Apple Inc.)
USB2.0 Hub:
Vendor ID: 0x2109 (VIA Labs, Inc.)
OWC USB-C Dock:
Vendor ID: 0x0d8c (C-MEDIA ELECTRONICS INC.)
USB2.0 Hub:
Vendor ID: 0x2109 (VIA Labs, Inc.)
Billboard Device:
Vendor ID: 0x10c4 (Silicon Laboratories, Inc.)
USB2.0 Hub:
Vendor ID: 0x2109 (VIA Labs, Inc.)
---------> Stream Deck MK.2:
Vendor ID: 0x0fd9 (Elgato Systems GmbH)
Studio Display:
Vendor ID: 0x05ac (Apple Inc.)
The USB 3 hubs and USB 2 hubs are the same physical devices and the Studio Display is also two of the hubs yet shows separately as well!
I also don’t know why there are three top-level USB 3.1 Bus items on my 2-port MacBook Pro.