How to List Connected USB Devices Using the lsusb Command in Linux

When you plug a new peripheral—such as a webcam, an external hard drive, or a complex USB hub—into a Linux server or desktop, the operating system usually mounts it silently in the background. If the device fails to work, your first diagnostic step must be to verify whether the Linux kernel actually detects the hardware at the physical port level. To instantly view a complete inventory of every single USB device currently plugged into the system, you must use the lsusb command.

How to Read the Standard Output

The lsusb utility queries the system’s USB bus architecture and prints the results in a dense list.

lsusb

The terminal will output a table. A typical line looks like this:

Bus 002 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver

To troubleshoot hardware, you must understand exactly what this line means.

  • Bus 002: Modern motherboards have multiple USB controllers (buses) managing different sets of physical ports. This tells you which specific internal controller the device is communicating with.
  • Device 004: This is a sequential number assigned by the operating system when the device was plugged in. If you unplug the device and plug it back in, this number will usually increment to 005.
  • ID 046d:c52b: This is the most critical piece of information. This is the hardware Vendor ID and Product ID, permanently burned into the device’s microchip by the manufacturer. Even if the text description is wrong or missing, the Linux kernel relies exclusively on this ID code to find the correct driver for the hardware.
  • Logitech, Inc. Unifying Receiver: This is the human-readable description of the device, pulled from a central database mapping the IDs to known products.

Advanced Diagnostics and USB Trees

If you have multiple USB hubs plugged into each other, the standard flat list output can be confusing. To visualize the physical topology of how devices are daisy-chained together, append the -t (tree) flag.

lsusb -t

This command outputs a visual hierarchy, showing exactly which mouse is plugged into which hub, and which hub is plugged into which specific port on the motherboard. It also displays the negotiated connection speed (e.g., 480M for USB 2.0 or 5000M for USB 3.0), allowing you to instantly diagnose if a high-speed external hard drive is severely bottlenecked because it was accidentally plugged into a slow, legacy USB 2.0 port.

For extreme, low-level hardware debugging—such as trying to determine exactly how much electrical power (in milliamps) a specific webcam is attempting to draw from the motherboard—you can run the command with maximum verbosity using sudo lsusb -v. This will dump hundreds of lines of deeply technical electrical and protocol data for every connected device.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.