GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo verificar si el modo USB3.0 UASP (Protocolo SCSI conectado a USB) está habilitado en Linux?

Si conoce el nombre de su dispositivo, busque los números de dispositivo y bus USB:

$ lsusb
...
Bus 002 Device 005: ID xxxx:yyyy MyDeviceManufacturer
...

Luego mire el árbol USB y encuentre su dispositivo (el mío era Bus 2, Dev 5):

$ lsusb -t
...
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
    |__ Port 2: Dev 5, If 0, Class=Mass Storage, Driver=uas, 5000M
    |__ Port 4: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
...

Puedes ver en mi caso el uas conductor.

Si UAS no está en uso, verá usb-storage (como Dev 3 en mi caso).


Además de la respuesta que dio austinmarton, puede ejecutar

lsusb -v -d VPID | grep -i interface

donde VPID es el ID del proveedor/producto informado en lsusb . Por ejemplo:

$ lsusb -v -d 1234:5678 | grep -i interface
Couldn't open device, some information will be missing
  bDeviceClass            0 (Defined at Interface level)
    bNumInterfaces          1
    Interface Descriptor:
      bInterfaceNumber        0
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              6 

Observe que el único bInterfaceProtocol el valor listado es 80 Bulk-Only . Este dispositivo no ser un dispositivo configurado con UASP. Sin embargo, si ve un bInterfaceProtocol 98 adicional , esto sería ser un dispositivo configurado con UASP.

Estos valores se dan en decimal, pero la especificación se refiere a ellos por sus valores hexadecimales...

50h (80d): USB Mass Storage Class Bulk-Only (BBB) Transport
62h (98d): Allocated by USB-IF for UAS. 

Esta información se puede encontrar en la Especificación de almacenamiento masivo en usb.org, sección 3 Códigos de protocolo, Tabla 2:Protocolo de transporte de almacenamiento masivo.

Sin embargo, no estoy seguro de si esto responde a su primera o segunda pregunta, ya que no está claro si este valor se informará tanto en las máquinas/dispositivos que admiten UASP como en los que no.


Para completar la respuesta:

Si su controlador no admite UAS, el kernel de Linux tiene la amabilidad de decírselo:

$ dmesg | grep "UAS"
[58669.959610] usb 4-2: USB controller 0000:03:00.0 does not support streams, which are required by the UAS driver.
[58669.959613] usb 4-2: Please try an other USB controller if you wish to use UAS.

Además, lsusb muestra una línea para bInterfaceProtocol 98, pero está vacía:

$ lsusb -v -d 0080:a001 | grep -i interface
bDeviceClass            0 (Defined at Interface level)
  bNumInterfaces          1
  Interface Descriptor:
    bInterfaceNumber        0
    bInterfaceClass         8 Mass Storage
    bInterfaceSubClass      6 SCSI
    bInterfaceProtocol     80 Bulk-Only
    iInterface              0 
  Interface Descriptor:
    bInterfaceNumber        0
    bInterfaceClass         8 Mass Storage
    bInterfaceSubClass      6 SCSI
    bInterfaceProtocol     98 
    iInterface              0

HTH,

R. Daneel olivaw,
El robot humano por dentro.


Linux
  1. Cómo verificar qué módulos de Apache están habilitados/cargados en Linux

  2. ¿Cómo montar un dispositivo en Linux?

  3. ¿Cómo verificar si el kernel de Linux está habilitado para Retpoline o no?

  4. ¿Cómo puedo verificar si cgroups están disponibles en mi host Linux?

  5. ¿Cómo puedo verificar si un volumen está montado donde se supone que debe estar usando Python?

Cómo comprobar el estado de SSD/HDD en Linux

Cómo encontrar el uso de ancho de banda del dispositivo USB en Linux

¿Cómo se puede identificar el chipset de un dispositivo usb en Linux?

¿Cómo se comprueba cuánta energía puede entregar un puerto USB?

¿Cómo puedo monitorear la carga del disco duro en Linux?

¿Cómo puedo determinar si un dispositivo iscsi es un sistema de archivos Linux montado?