"Después del juego es antes del juego"
Sepp Herberger

sábado, 12 de agosto de 2017

Listado jerárquico de dispositivos USB

Una cortita: ya vimos en su día cómo listar desde un punto de vista jerárquico los dispositivos PCI de nuestro sistema. Ahora necesitaba hacer lo mismo con los dispositivos USB: conocer el entramado de buses y además saber que ancho de banda tiene cada cúal (es decir, si es USB 1, 2 o 3) y el driver del dispositivo que hubiere conectado.

En esta ocasión el comando es:
# lsusb -t
Veamos ejemplos, empezando por mi PC de sobremesa:
# lsusb -t
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 2: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/8p, 480M
    |__ Port 5: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 480M
Ahi vemos los diferentes buses y puertos, como están conectados y la velocidad del puerto: 480M para USB2 (driver ehci), 12M para USB1 (driver uhci)y la de 1.5M corresponde a un ratón.

El lsusb a palo seco para este PC es:
# lsusb
Bus 001 Device 003: ID 058f:6362 Alcor Micro Corp. Flash Card Reader/Writer
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 004: ID 1058:10a8 Western Digital Technologies, Inc. Elements Portable (WDBUZG)
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 046d:c050 Logitech, Inc. RX 250 Optical Mouse
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Otro ejemplo, con la Rasperry Pi B:
# lsusb -t
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/3p, 480M
        |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
        |__ Port 2: Dev 4, If 0, Class=Vendor Specific Class, Driver=ov519, 12M
        |__ Port 2: Dev 4, If 1, Class=Audio, Driver=snd-usb-audio, 12M
        |__ Port 2: Dev 4, If 2, Class=Audio, Driver=snd-usb-audio, 12M
        |__ Port 3: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M
Se puede ver ahí una webcam que tengo conectada (ov519) así como las tarjetas ethernet (smsc95xx) y audio, que en la Raspberry son dispositivos USB.
xt
Un último ejemplo, con un portátil-tablet:
# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/11p, 480M
    |__ Port 2: Dev 2, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 2: Dev 2, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 3: Dev 10, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 3: Dev 10, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 4: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 4: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 5: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M
    |__ Port 5: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 6: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 7: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 8: Dev 7, If 0, Class=Vendor Specific Class, Driver=rtsx_usb, 480M
    |__ Port 9: Dev 8, If 0, Class=Human Interface Device, Driver=usbhid, 12M
Aparte de lo anterior, aquí vemos un puerto USB3, con velocidad 5000M y driver xhci.

La mayor utilidad que le saco a este comando es saber que velocidad tiene cada puerto USB de un sistema y como están organizados los distintos hubs usb internos, ya que a veces pinchas un disco duro externo o pendrive en el puerto incorrecto y los trasvases de datos se eternizan. De esta manera podemos identificarlos e incluso etiquetarlos para evitar contratiempos.

Seguimos adelante con el verano, que queda mucho todavía :-).

1 comentario: