web-dev-qa-db-fra.com

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

J'ai un ordinateur portable sous Ubuntu 15.04 (3.19.0-21-generic) et un boîtier de disque dur externe SATA 2.5 "USB3.0 qui affirme prendre en charge le mode UASP ( le modèle S2510BPU33 de StarTech ). Je n'ai aucun problème à monter ou à lire/écrire le lecteur.

J'aimerais pouvoir confirmer ce qui suit:

  1. Que l'appareil lui-même prend en charge UASP
  2. Si mon jeu de puces prend également en charge UASP
  3. Si le périphérique utilise UASP lorsque je le monte

Où puis-je trouver cette information?

22
ali_m

Si vous connaissez le nom de votre périphérique, recherchez les numéros de bus USB et de périphérique suivants:

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

Ensuite, regardez l’arbre 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 pilote uas.

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

22
austinmarton

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 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 valeur bInterfaceProtocol indiquée est 80 Bulk-Only. Ce périphérique ne serait pas un périphérique configuré par UASP. Cependant, si vous voyez un bInterfaceProtocol 98 supplémentaire, ceci serait un périphérique configuré par UASP.

Ces valeurs sont données en décimal, mais la spéc se réfère à elles par leurs valeurs hexadécimales ...

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

Cette information se trouve 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 sera indiquée sur les machines/périphériques prenant en charge UASP et ceux qui ne le font pas.

9
user8675309

Pour compléter la réponse:

Si votre contrôleur ne prend pas en charge les UAS, le noyau Linux a la gentillesse de 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.

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

3
R. Daneel Olivaw