我需要识别所有 USB 端口在 Linux 系统上,无需提前知道 USB 设备是否插入其中。
如果将 USB 设备插入端口,则通过运行lsusb -t
我获得 USB 设备层次结构,其中端口值对于设备插入的物理端口是唯一的。例如,本例中大容量存储设备的总线 3 端口 3:
$ lsusb -t
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/15p, 480M
|__ Port 2: Dev 42, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 3: Dev 41, If 0, Class=Mass Storage, Driver=usb-storage, 480M
|__ Port 6: Dev 66, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 6: Dev 66, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 9: Dev 31, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 9: Dev 31, If 1, Class=Wireless, Driver=btusb, 12M
|__ Port 10: Dev 5, If 0, Class=Vendor Specific Class, Driver=qcserial, 480M
|__ Port 10: Dev 5, If 2, Class=Vendor Specific Class, Driver=qcserial, 480M
|__ Port 10: Dev 5, If 3, Class=Vendor Specific Class, Driver=qcserial, 480M
|__ Port 10: Dev 5, If 8, Class=Vendor Specific Class, Driver=qmi_wwan, 480M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
|__ Port 5: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 5: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
任何连接到该物理端口的 USB 设备都将显示为总线 3 端口 3。设备编号将随着我插入和拔出设备而增加。如果端口 3 上没有插入任何设备,lsusb -t
则不会显示该端口。
现在,我在哪里可以找到所有真实的一台机器的USB端口,无论是否插入USB设备?