Eu preciso identificar todas as portas USB em um sistema Linux sem saber de antemão se os dispositivos USB estão conectados a eles.
Se um dispositivo USB estiver conectado a uma porta, executando lsusb -t
, obtenho a hierarquia de dispositivos usb, em que o valor da porta é exclusivo da porta física em que o dispositivo está conectado. Por exemplo, bus 3 port 3 para um dispositivo de armazenamento em massa neste exemplo:
$ 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
Qualquer dispositivo USB conectado a essa porta física será exibido como estando na porta 3 do barramento 3. O número do dispositivo será incrementado conforme eu conecto os dispositivos. Se nenhum dispositivo estiver conectado na porta 3, lsusb -t
não mostrará essa porta.
Agora, onde obtenho uma lista de todas as portas USB real de uma máquina, independentemente de os dispositivos USB estarem conectados?