Comment puis-je vérifier si le mode USB3.0 UASP (USB Attached SCSI Protocol) est activé sous Linux?

25

J'ai un ordinateur portable exécutant Ubuntu 15.04 (3.19.0-21-générique) et un boîtier de disque dur externe SATA 2,5 "USB3.0 qui prétend qu'il prend en charge le mode UASP ( le modèle S2510BPU33 de StarTech ). Je n'ai aucun problème à monter le lecteur ou lire / écrire.

Je voudrais pouvoir confirmer ce qui suit:

  1. Que l'appareil lui-même prend réellement en charge UASP
  2. Si mon chipset prend également en charge UASP
  3. Si l'appareil utilise UASP lorsque je le monte

Où puis-je trouver ces informations?

ali_m
la source

Réponses:

25

Si vous connaissez le nom de votre appareil, recherchez les numéros de bus USB et d'appareil:

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

Ensuite, regardez l'arborescence USB et trouvez votre appareil (le mien était 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
...

Vous pouvez voir dans mon cas le uaschauffeur.

Si UAS n'est pas utilisé, vous le verrez usb-storage(comme Dev 3 dans mon cas).

Austinmarton
la source
1
Excellent - qui répond bien au point 3. Si je ne vois pas Driver=uas, ce serait bien de pouvoir savoir pourquoi - par exemple, il se pourrait que le chipset ou le périphérique (ou éventuellement les deux?) Ne prennent pas en charge les UAS . Je laisserai la question ouverte jusqu'à la fin de la semaine au cas où quelqu'un pourrait répondre aux deux autres points, mais sinon j'accepterai votre réponse.
ali_m
1
Je voudrais aussi connaître les réponses à 1 et 2, modifierai la réponse si je le découvre
austinmarton
10

En plus de la réponse donnée par austinmarton, vous pouvez exécuter

lsusb -v -d VPID | grep -i interface

où VPID est l'ID du fournisseur / produit indiqué dans lsusb. Par exemple:

$ 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 

Notez que la seule bInterfaceProtocolvaleur répertoriée est 80 Bulk-Only. Ce périphérique ne serait pas un périphérique configuré par UASP. Cependant, si vous en voyez un supplémentaire bInterfaceProtocol 98, ce serait un périphérique configuré par UASP.

Ces valeurs sont données en décimales, mais la spécification s'y réfère par leurs valeurs hexadécimales ...

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

Ces informations se trouvent dans la spécification de stockage de masse sur usb.org , section 3 Codes de protocole, Tableau 2 - Protocole de transport de stockage de masse.

Je ne sais pas si cela répond à vos première ou deuxième questions, car il n'est pas clair si cette valeur serait signalée sur les machines / appareils qui prennent en charge UASP et ceux qui ne le font pas.

user8675309
la source
Le document de spécification de stockage de masse se trouve désormais sur usb.org/sites/default/files/… .
Nathan
3

Pour compléter la réponse:

Si votre contrôleur ne prend pas en charge l'UAS, le noyau Linux est assez aimable pour vous le dire:

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

En outre, lsusb affiche une ligne pour bInterfaceProtocol 98, mais elle est vide:

$ 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,
Le robot humain à l'intérieur.

R. Daneel Olivaw
la source
Juste pour clarifier, la présence de la ligne bInterfaceProtocol 98 indique que ce périphérique particulier prend en charge le protocole requis pour UAS - mais la ligne est toujours "vide" (c'est-à-dire n'a pas de chaîne de description de texte) que l'UAS soit pris en charge ou non. (En fait, il est tout simplement vide car aucune description de la classe 8 / sous-classe 6 / protocole 62 n'est donnée dans /var/lib/usbutils/usb.ids, pour aller avec la description "Bulk-Only" donnée pour le protocole 50.)
Nathan
-1

Vous devez vérifier si le pilote UAS est utilisé pour votre disque. Identifiez d'abord le disque en question:

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

Mon appareil est donc un disque SCSI. Vous trouverez ici les informations sur les pilotes actuellement utilisés,

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

Donc, dans mon cas, le pilote approprié est sd ou sr . Pour vérifier lequel, j'essaye

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

Par conséquent, mon pilote est sd. Vous pouvez vérifier que le répertoire / sys / bus / scsi / drivers / sr / 9: 0: 0: 1 n'existe pas . Par conséquent, mon disque externe n'est pas UASP.

MariusMatutiae
la source
3
Je ne pense pas que cette réponse soit correcte, les pilotes SD et SR ne vous parlent pas d'UAS. J'ai un disque utilisant UAS et il utilise le pilote SD ( lxr.free-electrons.com/source/drivers/scsi/sd.c ). Je suis sûr que le pilote SR est destiné aux pilotes de CD / DVD ( lxr.free-electrons.com/source/drivers/scsi/sr.c )
austinmarton
En effet, sd / sr fonctionne sur une couche différente de celle uas / usb-storage.
grawity