sysfs-USB

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 both usb1 (the 480 Mbps logical hub) and usb2 (the 10 Gbps logical hub).
  • Physical Controller 2 (0d.0) generates usb3 (the other 480 Mbps logical hub) and usb4 (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 (the usb1 controller).
  • 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 .1 means we are looking at Port 1 on that first hub.
  • .5 : Hub Depth 2. Plugged into the first hub is another hub! The .5 means 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.

Leave a Reply

Your email address will not be published. Required fields are marked *