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

25

Tengo una computadora portátil con Ubuntu 15.04 (3.19.0-21-generic) y una carcasa externa USB3.0 2.5 "SATA HDD que dice que admite el modo UASP ( el modelo S2510BPU33 de StarTech ). No tengo problemas para montar la unidad o Lectura / escritura.

Me gustaría poder confirmar lo siguiente:

  1. Que el dispositivo en sí mismo es compatible con UASP
  2. Si mi chipset también es compatible con UASP
  3. Si el dispositivo usa UASP cuando lo monte

¿Dónde puedo encontrar esta información?

ali_m
fuente

Respuestas:

25

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

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

Luego mira el árbol USB y encuentra tu 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 uasconductor.

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

austinmarton
fuente
1
Excelente, eso aborda muy bien el punto 3. Si no veo Driver=uas, sería bueno poder averiguar por qué, por ejemplo, podría ser que el chipset o el dispositivo (¿o posiblemente ambos?) No sean compatibles con UAS . Dejaré la pregunta abierta hasta el final de la semana en caso de que alguien pueda responder los otros dos puntos, pero de lo contrario aceptaré tu respuesta.
ali_m
1
Me gustaría saber las respuestas a 1 y 2 también,
editaré
10

Además de la respuesta que austinmarton dio, puedes correr

lsusb -v -d VPID | grep -i interface

donde VPID es la identificación del proveedor / producto que se informa 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 

Tenga en cuenta que el único bInterfaceProtocolvalor enumerado es 80 Bulk-Only. Este dispositivo no sería un dispositivo configurado con UASP. Sin embargo, si ve un adicional bInterfaceProtocol 98, este sería 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ía tanto en las máquinas / dispositivos que admiten UASP como en los que no.

usuario8675309
fuente
El documento de especificación de almacenamiento masivo se encuentra ahora en usb.org/sites/default/files/… .
Nathan
3

Para completar la respuesta:

Si su controlador no es compatible con UAS, el kernel de Linux es tan amable de decirle que:

$ 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 dentro.

R. Daneel Olivaw
fuente
Solo para aclarar, la presencia de la línea bInterfaceProtocol 98 indica que este dispositivo en particular es compatible con el protocolo requerido para UAS, pero la línea siempre está "vacía" (es decir, no tiene cadena de descripción de texto) independientemente de si UAS es compatible o no. (De hecho, está simplemente vacío porque no se proporciona una descripción para la clase 8 / subclase 6 / protocolo 62 en /var/lib/usbutils/usb.ids, junto con la descripción "Solo a granel" dada para el protocolo 50.)
Nathan
-1

Debe verificar si el controlador UAS se está utilizando para su disco. Primero, identifique el disco en cuestión:

   # dmesg | grep sdb
   ...................
   sd 9:0:0:1: [sdb] Attached SCSI disk

Entonces mi dispositivo es un disco SCSI. Aquí encontrará la información sobre los controladores actualmente en uso,

   # ls /sys/bus/scsi/drivers
     sd  sr

Entonces, en mi caso, el controlador apropiado es sd o sr . Para comprobar cuál, intento

   # cd /sys/bus/scsi/drivers/sd/9:0:0:1
   # 

De ahí mi conductor es sd Usted puede doblar a comprobar que el directorio / SCSI / drivers / SR / 9 / sys / bus: 0: 0: 1 no no existe. Por lo tanto, mi disco externo no es UASP.

MariusMatutiae
fuente
3
No creo que esta respuesta sea correcta, los controladores SD y SR no le informan sobre UAS. Tengo un disco que usa UAS y usa el controlador SD ( lxr.free-electrons.com/source/drivers/scsi/sd.c ). Estoy bastante seguro de que el controlador SR es para controladores de CD / DVD ( lxr.free-electrons.com/source/drivers/scsi/sr.c )
austinmarton
Esto se debe a que sd / sr funciona en una capa diferente que uas / usb-storage.
Grawity