USB Standards and Supports in Linux
USB Standards Overview
USB standards continue evolving with significant speed improvements across generations. Here’s what you need to know about current standards and Linux support.
USB 2.0
Speed: 480 Mbps (≤60 MB/s theoretical)
Status: Legacy but still ubiquitous. Nearly all systems retain USB 2.0 ports for backward compatibility.
Linux support: Built-in via ehci-hcd driver in all modern kernels.
USB 3.0 (SuperSpeed)
Speed: 5 Gbps (≤625 MB/s theoretical; real-world ~200-400 MB/s depending on device and controller quality)
Status: Widely available on desktop and server hardware since ~2012.
Linux support: Integrated since kernel 2.6.31 via xhci-hcd driver. Fully stable in all current distributions.
USB 3.1 (SuperSpeed+)
Speed: 10 Gbps (Gen 2)
Status: Common on newer server motherboards and consumer hardware.
Linux support: Available since kernel 4.6. Modern distributions (RHEL 9+, Ubuntu 22.04+, Fedora 35+) include full support.
USB 3.2 (SuperSpeed+)
Speed: 20 Gbps (Gen 2×2 over Type-C)
Status: Increasingly common on recent server and workstation hardware.
Linux support: Supported in kernel 5.9+. Modern distributions fully support this standard.
Identifying USB Versions by Physical Characteristics
USB version can often be identified visually:
- USB 2.0: Black connector interior
- USB 3.0/3.1: Blue connector interior
- USB 3.2/USB 3.1 Gen 2: Red or teal connector interior (Type-A), often labeled with SuperSpeed+
- USB-C: Flat, reversible connector (can be USB 3.1 Gen 1, Gen 2, or Thunderbolt 3/4)
Always check device markings for authoritative version information.
Checking Linux USB Support
List USB Controllers
lspci | grep -i usb
This shows all USB host controllers detected by the system. Look for xHCI (USB 3.x support) and EHCI (USB 2.0 support) entries.
Example output from a modern system:
00:14.0 USB controller: Intel Corporation C620 Series Chipset Family xHCI Host Controller (rev 05)
00:1a.0 USB controller: Intel Corporation C620 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1d.0 USB controller: Intel Corporation C620 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)
Check Kernel Boot Messages
dmesg | grep -E "xhci|ehci"
This displays driver initialization messages for USB controllers. You’ll see which buses were registered and which driver handled them.
[ 0.491877] xhci_hcd 0000:00:14.0: xHCI Host Controller
[ 0.491899] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
[ 0.494982] xhci_hcd 0000:00:14.0: xHCI Host Controller
[ 0.495002] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
[ 0.501360] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
List Connected USB Devices with Speeds
lsusb -v
For a quick summary of USB device speeds without full verbosity:
lsusb -tv
This tree view shows devices organized by bus and port, with speed information.
Check Driver Status
Verify the xHCI driver is loaded and functioning:
lsmod | grep xhci
Expected output:
xhci_pci 20480 0
xhci_hcd 249856 1 xhci_pci
usbcore 286720 5 xhci_hcd,xhci_pci,usbfs,usbhid
Get System Kernel Version
uname -r
Modern distributions ship with kernels that support all current USB standards:
- RHEL/Rocky 9.x: Kernel 5.14+
- Ubuntu 24.04 LTS: Kernel 6.8+
- Fedora 40+: Kernel 6.8+
All support USB 3.0, 3.1, and 3.2.
Troubleshooting USB Issues
If USB devices aren’t recognized at full speed:
Check dmesg for errors:
dmesg | tail -50 | grep -i usb
Verify the correct driver is handling the port:
lsusb -v -d <vendor>:<product> | grep -i speed
Check for quirks or known issues:
Modern kernels include many USB chipset quirks. If a device has issues, check the xHCI driver documentation or search the Linux kernel git log for your specific chipset model.
Update BIOS/firmware: Some older server BIOS versions have incomplete xHCI implementations. Updating often resolves speed negotiation issues.
Test with a different port: Some ports may be connected to different controllers. Moving the device to another USB port can help identify controller-specific issues.
Performance Considerations
Real-world USB speeds are typically 60-80% of theoretical maximum due to protocol overhead and device limitations:
- USB 3.0: Expect 300-500 MB/s sustained with quality SSD enclosures
- USB 3.1 Gen 2: Expect 600-1000+ MB/s with proper devices
- USB 3.2: Expect 1500+ MB/s, though actual numbers depend heavily on device firmware
For server environments, use UAS (USB Attached SCSI) protocol when possible—it performs better than bulk-only transfers for storage devices.