This is a simple CLI that I vibe coded to scratch an itch at work.
The problem we had was multiple USBIP devices attached to a single Linux server, and we were having a hard time seeing who connected what.
Enter `usbatlas`. It's a basic app that lives on top of the Linux device file system and depends on `usbip` [0][1]. It allows you to see what USB devices are attached to your Linux box and where they come from. Currently the device source IP resolution has some issues. I'm working out the kinks right now.
Here's an example output:
$ usbatlas --usbip
xHCI Host Controller [serial: xxxx:xx:xx.x]
+- USB2744
+- Lenovo New Calliope USB Keyboard
+- /dev/hidraw0
+- /dev/hidraw1
+- /dev/input/event3
+- /dev/input/event4
+- /dev/input/js0
+- Lenovo USB Optical Mouse
+- /dev/hidraw2
+- /dev/input/event5
+- /dev/input/mouse0
+- Bluetooth 9460/9560 Jefferson Peak (JfP)
+- USB2.1 Hub
+- USB2.1 Hub
+- Saleae Logic
+- FT4232H MiniModule [serial: xxxxxxxx]
+- /dev/ttyUSB4
+- /dev/ttyUSB6
+- /dev/ttyUSB7
+- /dev/ttyUSB8
+- USB2.1 Hub
+- USB2.1 Hub
+- FT4232H MiniModule [serial: xxxxxxxx]
+- /dev/ttyUSB0
+- /dev/ttyUSB1
+- /dev/ttyUSB2
+- /dev/ttyUSB3
xHCI Host Controller [serial: xxxx:xx:xx.x]
+- USB3.1 Hub
+- USB3.1 Hub
+- USB3.1 Hub
+- USB3.1 Hub
+- J-Trace PRO [serial: xxxxxxxx]
USB/IP Virtual Host Controller [serial: xxxxxxxx]
+- FT4232H MiniModule [serial: xxxxxxxx] [usbip]
+- /dev/ttyUSB9
+- /dev/ttyUSB10
+- /dev/ttyUSB11
+- /dev/ttyUSB12
+- FT232R USB UART [serial: xxxxxxxx] [usbip]
+- /dev/ttyUSB13
+- FT4232H MiniModule [serial: xxxxxxxx] [usbip]
+- /dev/ttyUSB14
+- /dev/ttyUSB15
+- /dev/ttyUSB16
+- /dev/ttyUSB17
USB/IP Virtual Host Controller [serial: xxxxxxxx]
[0] https://github.com/dorssel/usbipd-win
[1] https://wiki.archlinux.org/title/USB/IP