USB Port Speed & Version Detection (Linux)
Goal
Determine:
- USB version (2.0 / 3.0 / 3.1 / 3.2)
- Negotiated link speed
- Active driver (UAS vs BOT)
- Physical controller used
Identify Device
lsusb
Pick a usb device
lsusb -d 152d:0578
Bus 002 Device 003: ID 152d:0578 JMicron JMS578
View USB Topology & Speed
lsusb -t
/: Bus 002.Port 001: Dev 001, Driver=xhci_hcd/10p, 5000M
|__ Port 002: Dev 003, Driver=usb-storage, 5000M
| Speed | USB Version |
|---|---|
| 12M | USB 1.1 |
| 480M | USB 2.0 |
| 5000M | USB 3.0 / 3.1 Gen1 |
| 10000M | USB 3.1 Gen2 |
| 20000M | USB 3.2 Gen2x2 |
Check Exact Negotiated Speed (sysfs)
Determine device path
cat /sys/bus/usb/devices/2-2/speed
5000
- Meaning:
5 Gbit/s→USB 3.0
Identify Controller Type
lspci | grep -i usb
Controller drivers:
| Driver | Meaning |
|---|---|
| xhci_hcd | USB 3.x controller |
| ehci_hcd | USB 2.0 controller |
| ohci_hcd | USB 1.x |
Check Storage Driver (UAS vs BOT)
From lsusb -t output might look as below:
Driver=usb-storage → BOT mode
Driver=uas → UAS mode
UAS is preferred (better performance, lower CPU).
Check kernel messages
dmesg | grep -i uas
Quick Checklist
lsusb -d <VID:PID>
lsusb -t
cat /sys/bus/usb/devices/<bus-port>/speed
lspci | grep -i usb
dmesg | grep -i uas
Example (JMS578 Case)
- Device: 152d:0578
- Controller: xhci_hcd
- Speed: 5000
- Mode: usb-storage
- Result: USB 3.0 SuperSpeed (5 Gbit/s)
Notes
- Marketing labels (3.1 / 3.2) are often ambiguous.
- The negotiated speed is what matters.
- A USB 3 port running at 480M = device or cable limitation.