USB checks matter when a keyboard, storage stick, serial adapter, or embedded board is plugged in but the expected device node or application does not appear. Showing the USB bus view first confirms whether Linux can see the hardware before troubleshooting drivers, permissions, or higher-level software.
The lsusb command lists devices from the USB bus and maps vendor and product IDs to names when the local hardware database knows them. Its tree and verbose modes add port layout, speed, driver, interface, endpoint, and power fields that help distinguish a real device from a hub or root controller.
USB bus and device numbers are assigned during enumeration and can change after a device is unplugged or reset. Use the numeric vendor:product ID for repeatable device matching, and use the bus/device selector only for the current attachment session.
$ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver Bus 001 Device 003: ID 0781:5581 SanDisk Corp. Ultra Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
The Bus and Device fields identify the current connection point. The ID field is the vendor:product pair in hexadecimal.
$ lsusb --tree
/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/12p, 480M
|__ Port 002: Dev 003, If 0, Class=Mass Storage, Driver=usb-storage, 480M
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/6p, 5000M
Use this view to see whether a device sits behind a hub and whether it negotiated USB 2.0 speed such as 480M or a SuperSpeed link such as 5000M.
$ lsusb -d 0781:5581 Bus 001 Device 003: ID 0781:5581 SanDisk Corp. Ultra
Copy the hexadecimal ID value from the main lsusb output. A missing row usually means the device was unplugged, reset, or enumerated with different IDs.
$ lsusb --verbose -d 0781:5581
Bus 001 Device 003: ID 0781:5581 SanDisk Corp. Ultra
Negotiated speed: High Speed (480Mbps)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.10
idVendor 0x0781 SanDisk Corp.
idProduct 0x5581 Ultra
##### snipped #####
Configuration Descriptor:
bNumInterfaces 1
bmAttributes 0x80
MaxPower 224mA
##### snipped #####
lsusb --verbose prints descriptors, configurations, interfaces, endpoints, and power fields. Run the command with sudo if permission limits hide descriptor sections on the target system.
$ lsusb -s 001:003 Bus 001 Device 003: ID 0781:5581 SanDisk Corp. Ultra
Bus and device numbers are current-session identifiers. Replugging the peripheral can assign a new device number.
$ usb-devices T: Bus=01 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 3 Spd=480 MxCh= 0 D: Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=0781 ProdID=5581 Rev=01.00 S: Manufacturer=SanDisk S: Product=Ultra C: #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=224mA I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
usb-devices walks /sys/bus/usb/devices. It is useful when descriptor fields need to be copied into support notes.
If only root hubs appear, the Linux system is not seeing an external USB peripheral on the visible buses. Check the cable, hub, VM USB passthrough, or docking station before treating the device as attached.