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
USB viewer