Come posso verificare se la modalità UASP (USB Attached SCSI Protocol) USB3.0 è abilitata in Linux?


25

Ho un laptop con Ubuntu 15.04 (3.19.0-21-generico) e un contenitore esterno HDD SATA da 2,5 "USB 3.0 che afferma che supporta la modalità UASP ( il modello S2510BPU33 di StarTech ). Non ho problemi a montare l'unità o leggere / scrivere ad esso.

Mi piacerebbe poter confermare quanto segue:

  1. Che il dispositivo stesso supporti effettivamente UASP
  2. Se il mio chipset supporta anche UASP
  3. Se il dispositivo utilizza UASP quando lo monto

Dove posso trovare queste informazioni?

Risposte:


25

Se conosci il nome del tuo dispositivo, trova i numeri USB Bus e Device:

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

Quindi guarda l'albero USB e trova il tuo dispositivo (il mio 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
...

Puoi vedere nel mio caso il uasdriver.

Se UAS non è in uso vedresti usb-storage(come Dev 3 nel mio caso).


1
Eccellente - che affronta bene il punto 3. Se non vedo Driver=uas, sarebbe bello poter scoprire perché - per esempio potrebbe essere che il chipset o il dispositivo (o forse entrambi?) Non supportano UAS . Lascerò la domanda aperta fino alla fine della settimana nel caso in cui qualcuno possa rispondere agli altri due punti, ma altrimenti accetterò la tua risposta.
ali_m,

1
Mi piacerebbe sapere anche le risposte a 1 e 2, modificherò la risposta se lo
capissi

10

Oltre alla risposta fornita da austinmarton, puoi eseguire

lsusb -v -d VPID | grep -i interface

dove VPID è l'ID fornitore / prodotto riportato in lsusb. Per esempio:

$ 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 

Si noti che l'unico bInterfaceProtocolvalore elencato è 80 Bulk-Only. Questo dispositivo non sarebbe un dispositivo configurato UASP. Tuttavia, se vedi un ulteriore bInterfaceProtocol 98, questo sarebbe un dispositivo configurato UASP.

Questi valori sono indicati in decimali, ma le specifiche si riferiscono ad essi con i loro valori esadecimali ...

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

Queste informazioni sono disponibili nelle Specifiche di archiviazione di massa su usb.org , sezione 3 Codici protocollo, Tabella 2 - Protocollo di trasporto di archiviazione di massa.

Non sono sicuro se questo risponda alla tua prima o seconda domanda, dal momento che non è chiaro se questo valore sarebbe riportato su entrambe le macchine / dispositivi che supportano UASP e quelli che non lo fanno.


Il documento sulle specifiche di archiviazione di massa è ora disponibile all'indirizzo usb.org/sites/default/files/… .
Nathan,

3

Per completare la risposta:

Se il tuo controller non supporta UAS, il kernel di Linux è abbastanza gentile da dirtelo:

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

Inoltre, lsusb mostra una riga per bInterfaceProtocol 98, ma è vuota:

$ 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,
The Human Robot Inside.


Giusto per chiarire, la presenza della riga bInterfaceProtocol 98 indica che questo particolare dispositivo supporta il protocollo richiesto per UAS - ma la linea è sempre "vuota" (cioè non ha una stringa di descrizione del testo) indipendentemente dal fatto che UAS sia supportato o meno. (In effetti è semplicemente vuoto perché nessuna descrizione per la classe 8 / sottoclasse 6 / protocollo 62 è data in /var/lib/usbutils/usb.ids, per accompagnare la descrizione "Solo in blocco" fornita per il protocollo 50.)
Nathan,

-1

È necessario verificare se il driver UAS è utilizzato per il disco. Innanzitutto, identifica il disco in questione:

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

Quindi il mio dispositivo è un disco SCSI. Qui trovi le informazioni sui driver attualmente in uso,

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

Quindi, nel mio caso, il driver appropriato è sd o sr . Per verificare quale, provo

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

Quindi il mio autista è sd .È possibile controllare due volte che la directory / sys / bus / scsi / drivers / sr / 9: 0: 0: 1 non non esiste. Quindi il mio disco esterno non è UASP.


3
Non penso che questa risposta sia corretta, i driver SD e SR non ti dicono di UAS. Ho un disco con UAS e usa il driver SD ( lxr.free-electrons.com/source/drivers/scsi/sd.c ). Abbastanza sicuro che il driver SR sia per driver CD / DVD ( lxr.free-electrons.com/source/drivers/scsi/sr.c )
austinmarton

Questo perché sd / sr funziona su un livello diverso rispetto a uas / usb-storage.
gravità
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.