USB Controller
fighternan# ls /sys/bus/usb/devices/ -l
lrwxrwxrwx 1 root root 0 Jan 1 00:28 usb1 -> ../../../devices/platform/0.soc/878010000000.pci/pci0001:00/0001:00:0c.0/usb1
lrwxrwxrwx 1 root root 0 Jan 1 00:28 usb2 -> ../../../devices/platform/0.soc/878010000000.pci/pci0001:00/0001:00:0c.0/usb2
lrwxrwxrwx 1 root root 0 Jan 1 00:28 usb3 -> ../../../devices/platform/0.soc/878010000000.pci/pci0001:00/0001:00:0d.0/usb3
lrwxrwxrwx 1 root root 0 Jan 1 00:28 usb4 -> ../../../devices/platform/0.soc/878010000000.pci/pci0001:00/0001:00:0d.0/usb4
nanzhou# lspci | grep USB
0001:00:0c.0 USB controller: Cavium, Inc. THUNDERX xHCI USB Controller
0001:00:0d.0 USB controller: Cavium, Inc. THUNDERX xHCI USB Controller
Two physical USB controller chips (or two controller blocks inside your CPU/System-on-Chip). Each of those physical chips is responsible for generating two logical root hubs:
- Physical Controller 1 (
0c.0) generates bothusb1(the 480 Mbps logical hub) andusb2(the 10 Gbps logical hub). - Physical Controller 2 (
0d.0) generatesusb3(the other 480 Mbps logical hub) andusb4(which is likely also a 10 Gbps hub, serving the remaining ports on the chassis)
Device Naming
Breaking down 1-1.1.5
Let’s use one of the deeper entries from your previous log (1-1.1.5) to see exactly how the dots build the physical address:
1-: The Bus. This is Bus 1 (theusb1controller).1: The Root Port. This is Port 1 on your computer’s motherboard..1: Hub Depth 1. Attached to that root port is a hub. This.1means we are looking at Port 1 on that first hub..5: Hub Depth 2. Plugged into the first hub is another hub! The.5means we are looking at Port 5 on this second hub.
Think of it like power strips
Imagine plugging a power strip into your wall outlet. Then, you plug a second power strip into the first one.
- The
-dash connects the wall outlet to the first power strip. - Every
.dot represents plugging into the next power strip down the line.
“But I didn’t plug in any hubs!”
If you are looking at a laptop or a modern motherboard and see paths with dots (like 1-1.1) even when nothing is plugged in, don’t worry. This is incredibly common.
Motherboard manufacturers frequently use internal USB hubs to manage all the built-in peripherals. Your laptop’s webcam, fingerprint reader, Bluetooth module, and SD card reader are all typically wired to an internal, invisible USB hub inside the laptop chassis. The Linux kernel sees this internal wiring exactly the same way it sees an external plastic hub sitting on your desk.