usbtree
Live USB device tree in your terminal. Rust TUI, no root, no libusb. Full activity metrics on Linux; device tree on macOS/Windows.
A terminal app that shows a live, color coded tree of every USB device plugged into your computer, with details and real time activity graphs on Linux.
usbtree is a terminal app that shows you a live picture of every USB device plugged into your computer, arranged as a tree so you can see which devices are connected through which hubs. It works on Linux, macOS, and Windows, and it does not need root access or any extra libraries installed, since it talks to USB devices through a pure Rust library instead.
The tree updates once a second and shows each device's speed, its class such as audio or storage, and how it is nested under hub devices. When you plug something in or unplug it, the change shows up immediately with a timestamped log of the event, and unplugged devices linger briefly in red before disappearing. A detail panel shows deeper information for a selected device, like its path in the system, vendor and product IDs, serial number, and connected children. On Linux only, it can also show live activity graphs of how much data each device is sending or receiving, with a more detailed version available if you run it as root.
Other features include a safe eject option for storage devices on Linux, a view for PCI devices in addition to USB, live filtering to search the tree, and a demo mode that fakes a device tree with scripted activity so you can try the interface without any real hardware. Device names come from a chain of sources: your own personal overrides file, descriptor strings from the device itself, or a downloadable database of known vendor and product IDs.
Installation is straightforward: a single small binary with no dependencies, installable through Homebrew, a shell script, a PowerShell script, or by building from source with Cargo. The project uses the MIT license and ships prebuilt binaries for common platforms and architectures.
Where it fits
- Inspect which USB devices are connected and how they are nested under hubs.
- Watch live activity graphs to see which USB device is transferring data.
- Safely eject a USB storage device from the terminal on Linux.
- Debug USB hardware issues by viewing vendor IDs, speeds, and power draw.