How to check USB Port and Device Speed in Linux

By | May 8, 2023

USB ports and devices come in a variety of speeds like USB 2.0 (480 Mbps), USB 3.0 ( 5 Gbps), USB 3.2 Gen 2 (10 Gbps) and so on. When you connect a device to your system on a usb port for the purpose of data transfer (for example an external ssd or hdd) you want to make sure that you connect it to the port with the highest speed.

Most systems including laptops and desktop pcs, have multiple usb ports but not all of them work at equal speeds. Some are slow (USB 2.0/3.0) and some are fast (USB 3.2 Gen 2 / Thunderbolt-USB4).

Sometimes you can get slow transfer speed if you are using an external usb hub which supports only usb 2.0 even though it is connected to a usb 3 port on your machine.

If you are running linux and want to check the speed of the usb ports there are a couple of ways to do so.

lsusb

To list out the connected usb devices along with their connection speed details use the lsusb command as follows:

lsusb -tvv

The "t" option prints in tree style, and the double "vv" option prints additional details.

The following is the output from my Acer Swift 3 laptop having multiple devices connected.

$ lsusb
Bus 004 Device 004: ID 0bc2:ab6e Seagate RSS LLC One Touch w/PW
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 005: ID 1c7a:0575 LighTuning Technology Inc. EgisTec EH575
Bus 003 Device 004: ID 04f2:b6dd Chicony Electronics Co., Ltd HD User Facing
Bus 003 Device 007: ID 04ca:00a8 Lite-On Technology Corp. Dell Wireless Mouse WM118
Bus 003 Device 006: ID 8087:0026 Intel Corp. AX201 Bluetooth
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 04e8:61f5 Samsung Electronics Co., Ltd Portable SSD T5
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$

Carefully note that the "Device 001" in each unique Bus number is always a "Linux FOundation root hub"

$ lsusb
...
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
...
...
...
...
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$

A root hub is an internal hub, to which multiple usb devices can be connected via external usb ports. Its functionality is somewhat similar to an external usb hub that you can connect to your laptop or pc.

Now every single usb controller typically has 2 root hubs, one for usb2.0 and below and another for usb3.0 and above. This is done for backward compatibility since a usb3.0 hub cannot support usb2.0 and lower version devices.

The root hub itself is like a usb device with number 001. All other devices are assigned sequentially increasing index numbers under the same bus.

To get the speed details of each usb connected device we use the "t" option with "v" options.

$ lsusb -tvv
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub
    /sys/bus/usb/devices/usb4  /dev/bus/usb/004/001
    |__ Port 1: Dev 3, If 0, Class=Mass Storage, Driver=uas, 5000M
        ID 0bc2:ab6e Seagate RSS LLC 
        /sys/bus/usb/devices/4-1  /dev/bus/usb/004/003
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
    /sys/bus/usb/devices/usb3  /dev/bus/usb/003/001
    |__ Port 3: Dev 7, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        ID 04ca:00a8 Lite-On Technology Corp. 
        /sys/bus/usb/devices/3-3  /dev/bus/usb/003/007
    |__ Port 5: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M
        ID 04f2:b6dd Chicony Electronics Co., Ltd 
        /sys/bus/usb/devices/3-5  /dev/bus/usb/003/004
    |__ Port 5: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M
        ID 04f2:b6dd Chicony Electronics Co., Ltd 
        /sys/bus/usb/devices/3-5  /dev/bus/usb/003/004
    |__ Port 7: Dev 5, If 0, Class=Vendor Specific Class, Driver=, 480M
        ID 1c7a:0575 LighTuning Technology Inc. 
        /sys/bus/usb/devices/3-7  /dev/bus/usb/003/005
    |__ Port 10: Dev 6, If 0, Class=Wireless, Driver=btusb, 12M
        ID 8087:0026 Intel Corp. AX201 Bluetooth
        /sys/bus/usb/devices/3-10  /dev/bus/usb/003/006
    |__ Port 10: Dev 6, If 1, Class=Wireless, Driver=btusb, 12M
        ID 8087:0026 Intel Corp. AX201 Bluetooth
        /sys/bus/usb/devices/3-10  /dev/bus/usb/003/006
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub
    /sys/bus/usb/devices/usb2  /dev/bus/usb/002/001
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=uas, 10000M
        ID 04e8:61f5 Samsung Electronics Co., Ltd Portable SSD T5
        /sys/bus/usb/devices/2-1  /dev/bus/usb/002/002
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
    /sys/bus/usb/devices/usb1  /dev/bus/usb/001/001
$

Note that the usb devices are connected under a root_hub with device index 1. The speed of the connection is indicated at the end of the line in units of "M" or Mbps.

10000M indicates a 10 Gbps (USB 3.2 Gen 2) root hub, whereas 480M indicates a usb 2.0 root_hub.

The usb devices connected to this laptop are as follows:

Device Speed (Mbps) USB Version
Seagate RSS LLC (One Touch 5TB HDD) 5000M USB 3.2Gen1 (USB 3.0)
Lite-On Technology Corp (Dell wireless mouse WM118) 12M USB 1.0
Chicony Electronics Co., Ltd (Webcam) 480M USB 2.0
LighTuning Technology Inc. 480M USB 2.0
Intel Corp. AX201 Bluetooth 12M USB 1.0
Samsung Electronics Co., Ltd Portable SSD T5 10000M USB 3.2 Gen 2

Single Device Details

Details about individual devices can be fetched like this:

$ sudo lsusb -D /dev/bus/usb/003/007 | grep -i 'bcdusb\|vendor\|product\|protocol\|power'
  bcdUSB               2.00
  bDeviceProtocol         0 
  idVendor           0x04ca Lite-On Technology Corp.
  idProduct          0x00a8 
  iProduct                2 Dell Wireless Mouse WM118
      (Bus Powered)
    MaxPower              100mA
      bInterfaceProtocol      2 Mouse
  (Bus Powered)
$
$ sudo lsusb -D /dev/bus/usb/002/002 | grep -i 'bcdusb\|vendor\|product\|protocol\|power'
  bcdUSB               3.10
  bDeviceProtocol         0 
  idVendor           0x04e8 Samsung Electronics Co., Ltd
  idProduct          0x61f5 Portable SSD T5
  iProduct                3 Portable SSD T5
      (Bus Powered)
    MaxPower              896mA
      bInterfaceProtocol     80 Bulk-Only
      bInterfaceProtocol     98 
      BESL Link Power Management (LPM) Supported
  (Bus Powered)
$

The above information mostly comes from the /sys/bus/usb/devices/ directory. If you want to check the version of USB being used on particular connection, find the sys/bus/usb/device path from lsusb and run like this:

$ cat /sys/bus/usb/devices/2-1/version 
 3.10
$


$ grep "" $(find /sys/bus/usb/devices/2-1/ -type f | grep -i 'version\|manufacturer\|product\|vendor\|speed\|maxpower')
/sys/bus/usb/devices/2-1/2-1:1.0/host1/target1:0:0/1:0:0:0/vendor:Samsung 
/sys/bus/usb/devices/2-1/manufacturer:Samsung
/sys/bus/usb/devices/2-1/speed:10000
/sys/bus/usb/devices/2-1/idProduct:61f5
/sys/bus/usb/devices/2-1/product:Portable SSD T5
/sys/bus/usb/devices/2-1/bMaxPower:896mA
/sys/bus/usb/devices/2-1/idVendor:04e8
/sys/bus/usb/devices/2-1/version: 3.10
$ 

$ tail -n +1 $(find /sys/bus/usb/devices/2-1/ -type f | grep -i 'version\|manufacturer\|product\|vendor\|speed\|maxpower')

If you want just the list of device paths then use the following command:

$ ls -la /dev/bus/usb/*/*
crw-rw-r-- 1 root root 189,   0 May  7 04:00 /dev/bus/usb/001/001
crw-rw-r-- 1 root root 189, 128 May  7 04:00 /dev/bus/usb/002/001
crw-rw-r-- 1 root root 189, 130 May  7 13:49 /dev/bus/usb/002/003
crw-rw-r-- 1 root root 189, 256 May  7 04:00 /dev/bus/usb/003/001
crw-rw-r-- 1 root root 189, 259 May  7 04:00 /dev/bus/usb/003/004
crw-rw-r-- 1 root root 189, 260 May  7 04:00 /dev/bus/usb/003/005
crw-rw-r-- 1 root root 189, 261 May  7 04:00 /dev/bus/usb/003/006
crw-rw-r-- 1 root root 189, 262 May  7 04:00 /dev/bus/usb/003/007
crw-rw-r-- 1 root root 189, 384 May  7 04:00 /dev/bus/usb/004/001
crw-rw-r-- 1 root root 189, 388 May  7 09:22 /dev/bus/usb/004/005
$

Each of the bus index show above will have sub-directories for each individual device. The device path can be used with "lsusb -D" command to get full details.

If you run the lsusb command with "-v" option and without "-t" option it would output full details about all the connected devices live above.

lsusb -v

On this same laptop

$ ls -la /sys/bus/usb/devices/*
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/1-0:1.0 -> ../../../devices/pci0000:00/0000:00:0d.0/usb1/1-0:1.0
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/2-0:1.0 -> ../../../devices/pci0000:00/0000:00:0d.0/usb2/2-0:1.0
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/3-0:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb3/3-0:1.0
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/3-10 -> ../../../devices/pci0000:00/0000:00:14.0/usb3/3-10
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/3-10:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb3/3-10/3-10:1.0
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/3-10:1.1 -> ../../../devices/pci0000:00/0000:00:14.0/usb3/3-10/3-10:1.1
lrwxrwxrwx 1 root root 0 May  6 11:49 /sys/bus/usb/devices/3-2 -> ../../../devices/pci0000:00/0000:00:14.0/usb3/3-2
lrwxrwxrwx 1 root root 0 May  6 11:49 /sys/bus/usb/devices/3-2:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0
lrwxrwxrwx 1 root root 0 May  6 10:07 /sys/bus/usb/devices/3-3 -> ../../../devices/pci0000:00/0000:00:14.0/usb3/3-3
lrwxrwxrwx 1 root root 0 May  6 10:07 /sys/bus/usb/devices/3-3:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/3-5 -> ../../../devices/pci0000:00/0000:00:14.0/usb3/3-5
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/3-5:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5:1.0
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/3-5:1.1 -> ../../../devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5:1.1
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/3-7 -> ../../../devices/pci0000:00/0000:00:14.0/usb3/3-7
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/3-7:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7:1.0
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/4-0:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb4/4-0:1.0
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/usb1 -> ../../../devices/pci0000:00/0000:00:0d.0/usb1
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/usb2 -> ../../../devices/pci0000:00/0000:00:0d.0/usb2
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/usb3 -> ../../../devices/pci0000:00/0000:00:14.0/usb3
lrwxrwxrwx 1 root root 0 May  6  2023 /sys/bus/usb/devices/usb4 -> ../../../devices/pci0000:00/0000:00:14.0/usb4
$

USB Controller details

The above example of lsusb command shows the usb connection and logical topology. The lspci command can be used to fetch details about the usb controller chips which is the actual hardware.

sudo lspci -vv | grep -i usb -A 16

Make sure to run with sudo (root privileges) for full details:

Here is the example from my Acer Swift 3 laptop.

$ sudo lspci -vv | grep -i usb -A 16
0000:00:0d.0 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt 4 USB Controller (rev 01) (prog-if 30 [XHCI])
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin ? routed to IRQ 144
        IOMMU group: 5
        Region 0: Memory at 601f260000 (64-bit, non-prefetchable) [size=64K]
        Capabilities: [70] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
                Address: 00000000fee00478  Data: 0000
        Capabilities: [90] Vendor Specific Information: Len=14 <?>
        Capabilities: [b0] Vendor Specific Information: Len=00 <?>
        Kernel driver in use: xhci_hcd
        Kernel modules: xhci_pci

0000:00:0d.2 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt 4 NHI #0 (rev 01) (prog-if 40 [USB4 Host Interface])
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 16
        IOMMU group: 5
        Region 0: Memory at 601f200000 (64-bit, non-prefetchable) [size=256K]
        Region 2: Memory at 601f281000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [80] Power Management version 3
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [88] MSI: Enable- Count=1/1 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [a0] MSI-X: Enable+ Count=16 Masked-
                Vector table: BAR=2 offset=00000000
                PBA: BAR=2 offset=00000fa0
        Kernel driver in use: thunderbolt
--
0000:00:14.0 USB controller: Intel Corporation Tiger Lake-LP USB 3.2 Gen 2x1 xHCI Host Controller (rev 20) (prog-if 30 [XHCI])
        Subsystem: Acer Incorporated [ALI] Tiger Lake-LP USB 3.2 Gen 2x1 xHCI Host Controller
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin A routed to IRQ 145
        IOMMU group: 7
        Region 0: Memory at 5e200000 (64-bit, non-prefetchable) [size=64K]
        Capabilities: [70] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
                Address: 00000000fee00498  Data: 0000
        Capabilities: [90] Vendor Specific Information: Len=14 <?>
        Capabilities: [b0] Vendor Specific Information: Len=00 <?>
        Kernel driver in use: xhci_hcd
        Kernel modules: xhci_pci

$

The system actually has only 2 controllers, but the system shows 3 because one controller also supports thunderbolt so the system creates a 2nd virtual device to load the thunderbolt driver.

Note the pci path id:

0000:00:0d.0 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt 4 USB Controller (rev 01) (prog-if 30 [XHCI])
0000:00:0d.2 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt 4 NHI #0 (rev 01) (prog-if 40 [USB4 Host Interface])
0000:00:14.0 USB controller: Intel Corporation Tiger Lake-LP USB 3.2 Gen 2x1 xHCI Host Controller (rev 20) (prog-if 30 [XHCI])

The 2 controllers are 0000:00:0d and 0000:00:14 and furthermore 0000:00:0d shows up as 2 separate controllers with path id 0000:00:0d.0 and 0000:00:0d.2 using kernel drivers xhci_pci and thunderbolt respectively.

Bus Controller connection

Now that we know the usb controllers on the system, we can check which buses are connected to which controller. We simply need to check the /sys/bus paths of the root_hubs and check their pci device mapping.

In the lsusb -tvv command we saw that the root_hubs are at the following paths:

$ lsusb -tvv
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub
    /sys/bus/usb/devices/usb4  /dev/bus/usb/004/001
    ...
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
    /sys/bus/usb/devices/usb3  /dev/bus/usb/003/001
    ...
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub
    /sys/bus/usb/devices/usb2  /dev/bus/usb/002/001
   ...
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
    /sys/bus/usb/devices/usb1  /dev/bus/usb/001/001
$

Now we can check symlinks of the paths as follows and note down the device id from the full pci path:

$ ls -la /sys/bus/usb/devices/usb*
lrwxrwxrwx 1 root root 0 May  6 15:25 /sys/bus/usb/devices/usb1 -> ../../../devices/pci0000:00/0000:00:0d.0/usb1
lrwxrwxrwx 1 root root 0 May  6 15:25 /sys/bus/usb/devices/usb2 -> ../../../devices/pci0000:00/0000:00:0d.0/usb2
lrwxrwxrwx 1 root root 0 May  6 15:25 /sys/bus/usb/devices/usb3 -> ../../../devices/pci0000:00/0000:00:14.0/usb3
lrwxrwxrwx 1 root root 0 May  6 15:25 /sys/bus/usb/devices/usb4 -> ../../../devices/pci0000:00/0000:00:14.0/usb4
$

We can see that usb1 and usb2 are going into one pci device, whereas usb3 and usb4 are going into another. This shows that Bus 1 and Bus 2 are connected to first usb controller whereas Bus3 and Bus 4 are connected another controller.

Other tools

There is a gui tool called usbview which can report information about usb devices

sudo usbview

The output of usbview is actually quite similar to lsusb and it simply reads the contents of the
sudo usbview

The usb device details can be fetched from kernel debug messages. The command needs to be run with root privileges.

sudo cat /sys/kernel/debug/usb/devices

Hardinfo

Hardinfo is a gui tool that displays detailed information about hardware components including usb devices. However it has some drawbacks too. For example it does not report the speed of the connection which makes it difficult to assess the exact speed at which the device is operating.

Testing Machine 2: Ubuntu Desktop

This is another machine where i tested the commands to check usb port and device details. Its a Ubuntu desktop with the following specs:

1. Motherboard: Gigabyte H110M-H-CF
2. Single usb controller: powers usb ports on the backpanel, and case front panel through headers.
3. Using a usb 3.0 hub connected to backpanel
4. Devices like 2 flash drive, mouse, keyboard and motog31 connected

Lets run the lsusb command first of all

$ lsusb
Bus 002 Device 003: ID 03f0:9140 HP, Inc x740w
Bus 002 Device 002: ID 05e3:0626 Genesys Logic, Inc. Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 413c:2113 Dell Computer Corp. KB216 Wired Keyboard
Bus 001 Device 003: ID 045e:00cb Microsoft Corp. Basic Optical Mouse v2.0
Bus 001 Device 007: ID 22b8:2e82 Motorola PCS XT1541 [Moto G 3rd Gen]
Bus 001 Device 005: ID 0781:5567 SanDisk Corp. Cruzer Blade
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$

We can clearly see the list of devices connected.There are 2 buses each with a usb 2.0 and usb 3.0 root_hub respectively. Both these go through the same usb controller, implying there is only 1 usb controller.

This can be verified with the lspci command

$ sudo lspci -vv | grep -i usb -A 14
00:14.0 USB controller: Intel Corporation 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller (rev 31) (prog-if 30 [XHCI])
        Subsystem: Gigabyte Technology Co., Ltd 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin A routed to IRQ 129
        Region 0: Memory at ef110000 (64-bit, non-prefetchable) [size=64K]
        Capabilities: [70] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
                Address: 00000000fee00358  Data: 0000
        Kernel driver in use: xhci_hcd
        Kernel modules: xhci_pci

...

The usb controller chipset details are:

  • Chipset: Intel Corporation 100 SeriesC230 Series Chipset Family USB 3.0 xHCI Controller (rev 31)
  • Driver: xhci_hcd

Now lets get details information about the devices and system bus path:

$ lsusb -tvv
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub
    /sys/bus/usb/devices/usb2  /dev/bus/usb/002/001
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
        ID 05e3:0626 Genesys Logic, Inc. Hub
        /sys/bus/usb/devices/2-1  /dev/bus/usb/002/002
        |__ Port 3: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
            ID 03f0:9140 HP, Inc 
            /sys/bus/usb/devices/2-1.3  /dev/bus/usb/002/003
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
    /sys/bus/usb/devices/usb1  /dev/bus/usb/001/001
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        ID 05e3:0610 Genesys Logic, Inc. Hub
        /sys/bus/usb/devices/1-1  /dev/bus/usb/001/002
        |__ Port 1: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M
            ID 0781:5567 SanDisk Corp. Cruzer Blade
            /sys/bus/usb/devices/1-1.1  /dev/bus/usb/001/005
        |__ Port 4: Dev 7, If 0, Class=Vendor Specific Class, Driver=usbfs, 480M
            ID 22b8:2e82 Motorola PCS XT1541 [Moto G 3rd Gen]
            /sys/bus/usb/devices/1-1.4  /dev/bus/usb/001/007
    |__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        ID 045e:00cb Microsoft Corp. Basic Optical Mouse v2.0
        /sys/bus/usb/devices/1-2  /dev/bus/usb/001/003
    |__ Port 5: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        ID 413c:2113 Dell Computer Corp. KB216 Wired Keyboard
        /sys/bus/usb/devices/1-5  /dev/bus/usb/001/004
    |__ Port 5: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        ID 413c:2113 Dell Computer Corp. KB216 Wired Keyboard
        /sys/bus/usb/devices/1-5  /dev/bus/usb/001/004
$

Device bus paths

$ ls -la /dev/bus/usb/*/*
crw-rw-r--  1 root root    189,   0 May  7 17:49 /dev/bus/usb/001/001
crw-rw-r--  1 root root    189,   1 May  7 17:49 /dev/bus/usb/001/002
crw-rw-r--  1 root root    189,   2 May  7 17:49 /dev/bus/usb/001/003
crw-rw----+ 1 root plugdev 189,   3 May  7 17:53 /dev/bus/usb/001/004
crw-rw-r--  1 root root    189,   4 May  7 17:49 /dev/bus/usb/001/005
crw-rw----+ 1 root plugdev 189,   6 May  7 17:58 /dev/bus/usb/001/007
crw-rw-r--  1 root root    189, 128 May  7 17:49 /dev/bus/usb/002/001
crw-rw-r--  1 root root    189, 129 May  7 17:49 /dev/bus/usb/002/002
crw-rw-r--  1 root root    189, 130 May  7 17:49 /dev/bus/usb/002/003
enlightened@enlightened:~$

These paths can be used to extract detailed information about usb connection of each device. For example Device: /dev/bus/usb/002/003 is a HP usb 3.0 flash drive.

$ sudo lsusb -D /dev/bus/usb/002/003
Device: ID 03f0:9140 HP, Inc x740w
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.20
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         9
  idVendor           0x03f0 HP, Inc
  idProduct          0x9140 
  bcdDevice            1.10
  iManufacturer           1 HP
  iProduct                2 x740w
  iSerial                 3 7F000715B9A79704
  bNumConfigurations      1
  Configuration Descriptor:
...

Information can be extracted by reading the contents of /sys/bus/usb/devices/* files as well:

$ ls -la /sys/bus/usb/devices/*
lrwxrwxrwx 1 root root 0 May  4 21:51 /sys/bus/usb/devices/1-0:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-0:1.0
lrwxrwxrwx 1 root root 0 May  4 21:51 /sys/bus/usb/devices/1-1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1
lrwxrwxrwx 1 root root 0 May  5 19:56 /sys/bus/usb/devices/1-1.1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.1
lrwxrwxrwx 1 root root 0 May  4 21:51 /sys/bus/usb/devices/1-1:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0
lrwxrwxrwx 1 root root 0 May  5 19:56 /sys/bus/usb/devices/1-1.1:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.1/1-1.1:1.0
lrwxrwxrwx 1 root root 0 May  7 17:42 /sys/bus/usb/devices/1-1.4 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4
lrwxrwxrwx 1 root root 0 May  7 17:42 /sys/bus/usb/devices/1-1.4:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4:1.0
lrwxrwxrwx 1 root root 0 May  4 21:51 /sys/bus/usb/devices/1-2 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-2
lrwxrwxrwx 1 root root 0 May  4 21:51 /sys/bus/usb/devices/1-2:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0
lrwxrwxrwx 1 root root 0 May  4 21:51 /sys/bus/usb/devices/1-5 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-5
lrwxrwxrwx 1 root root 0 May  4 21:51 /sys/bus/usb/devices/1-5:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0
lrwxrwxrwx 1 root root 0 May  4 21:51 /sys/bus/usb/devices/1-5:1.1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.1
lrwxrwxrwx 1 root root 0 May  4 21:51 /sys/bus/usb/devices/2-0:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb2/2-0:1.0
lrwxrwxrwx 1 root root 0 May  4 21:51 /sys/bus/usb/devices/2-1 -> ../../../devices/pci0000:00/0000:00:14.0/usb2/2-1
lrwxrwxrwx 1 root root 0 May  4 21:51 /sys/bus/usb/devices/2-1:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0
lrwxrwxrwx 1 root root 0 May  6 14:19 /sys/bus/usb/devices/2-1.3 -> ../../../devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1.3
lrwxrwxrwx 1 root root 0 May  6 14:19 /sys/bus/usb/devices/2-1.3:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1.3/2-1.3:1.0
lrwxrwxrwx 1 root root 0 May  4 21:51 /sys/bus/usb/devices/usb1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1
lrwxrwxrwx 1 root root 0 May  4 21:51 /sys/bus/usb/devices/usb2 -> ../../../devices/pci0000:00/0000:00:14.0/usb2
$

Hardinfo

HardInfo USB Device Details on Ubuntu

HardInfo USB Device Details on Ubuntu

USB viewer

USB Viewer - USB Device Details on Ubuntu

USB Viewer - USB Device Details on Ubuntu

About Silver Moon

A Tech Enthusiast, Blogger, Linux Fan and a Software Developer. Writes about Computer hardware, Linux and Open Source software and coding in Python, Php and Javascript. He can be reached at [email protected].

Leave a Reply

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