Wie kann ich überprüfen, ob der USB3.0 UASP-Modus (USB Attached SCSI Protocol) unter Linux aktiviert ist?

25

Ich besitze einen Laptop mit Ubuntu 15.04 (3.19.0-21-generic) und ein externes USB3.0-2,5-Zoll-SATA-Festplattengehäuse, das den UASP-Modus unterstützt ( das Modell S2510BPU33 von StarTech ). Ich habe keine Probleme beim Mounten des Laufwerks oder lesen / schreiben.

Ich möchte Folgendes bestätigen können:

  1. Dass das Gerät selbst tatsächlich UASP unterstützt
  2. Ob mein Chipsatz auch UASP unterstützt
  3. Ob das Gerät UASP verwendet, wenn ich es einbinde

Wo finde ich diese Informationen?

ali_m
quelle

Antworten:

25

Wenn Sie den Namen Ihres Geräts kennen, suchen Sie den USB-Bus und die Gerätenummern:

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

Dann schau in den USB-Baum und finde dein Gerät (meins war 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
...

Sie können in meinem Fall den uasFahrer sehen.

Wenn UAS nicht in Gebrauch ist, würden Sie sehen usb-storage(wie Dev 3 in meinem Fall).

austinmarton
quelle
1
Hervorragend - das spricht Punkt 3 an. Wenn ich nichts sehe Driver=uas, wäre es schön herauszufinden, warum - es könnte zum Beispiel sein, dass entweder der Chipsatz oder das Gerät (oder möglicherweise beide?) UAS nicht unterstützen . Ich lasse die Frage bis zum Ende der Woche offen, falls jemand die anderen beiden Punkte beantworten kann, aber ansonsten akzeptiere ich Ihre Antwort.
ali_m
1
Ich möchte auch die Antworten zu 1 & 2 wissen, werde die Antwort bearbeiten, wenn ich es herausfinde
AustinMarton
10

Zusätzlich zu der Antwort, die austinmarton gab, können Sie ausführen

lsusb -v -d VPID | grep -i interface

Dabei ist VPID die in angegebene Hersteller- / Produkt-ID lsusb. Beispielsweise:

$ 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 

Beachten Sie, dass der einzige bInterfaceProtocolaufgelistete Wert ist 80 Bulk-Only. Dieses Gerät ist kein UASP-konfiguriertes Gerät. Wenn Sie jedoch ein zusätzliches Gerät sehen bInterfaceProtocol 98, handelt es sich um ein UASP-konfiguriertes Gerät.

Diese Werte sind in Dezimalzahlen angegeben, aber die Spezifikation bezieht sich auf sie durch ihre hexadezimalen Werte ...

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

Diese Informationen finden Sie in der Massenspeicherspezifikation auf usb.org , Abschnitt 3, Protokollcodes, Tabelle 2 - Massenspeicher-Transportprotokoll.

Ich bin mir jedoch nicht sicher, ob dies Ihre erste oder zweite Frage beantwortet, da es unklar ist, ob dieser Wert auf beiden Maschinen / Geräten, die UASP unterstützen, und solchen, die UASP nicht unterstützen, gemeldet wird.

user8675309
quelle
3

Um die Antwort zu vervollständigen:

Wenn Ihr Controller UAS nicht unterstützt, teilt Ihnen der Linux-Kernel dies mit:

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

Lsusb zeigt auch eine Zeile für bInterfaceProtocol 98 an, die jedoch leer ist:

$ 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,
der menschliche Roboter im Inneren.

R. Daneel Olivaw
quelle
Zur Verdeutlichung weist das Vorhandensein der bInterfaceProtocol 98-Zeile darauf hin, dass dieses bestimmte Gerät das für UAS erforderliche Protokoll unterstützt. Die Zeile ist jedoch immer "leer" (dh sie enthält keine Textbeschreibungszeichenfolge), unabhängig davon, ob UAS unterstützt wird oder nicht. (Tatsächlich ist es einfach leer, da in /var/lib/usbutils/usb.ids keine Beschreibung für Klasse 8 / Unterklasse 6 / Protokoll 62 angegeben ist, zusammen mit der Beschreibung "Nur Bulk" für Protokoll 50.)
Nathan
-1

Sie müssen überprüfen, ob der UAS-Treiber für Ihre Festplatte verwendet wird. Identifizieren Sie zunächst die betreffende Festplatte:

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

Mein Gerät ist also eine SCSI-Festplatte. Hier finden Sie Informationen zu den aktuell verwendeten Treibern,

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

In meinem Fall ist der entsprechende Treiber entweder sd oder sr . Um zu überprüfen, welche, versuche ich

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

Daher meine Treiber sd können .Sie doppelt überprüfen , dass das Verzeichnis / sys / bus / scsi / drivers / sr / 9: 0: 0: 1 ist nicht vorhanden. Daher ist meine externe Festplatte nicht UASP.

MariusMatutiae
quelle
3
Ich denke nicht, dass diese Antwort richtig ist, die SD- und SR-Treiber erzählen Ihnen nichts über UAS. Ich habe eine Festplatte mit UAS und sie verwendet den SD-Treiber ( lxr.free-electrons.com/source/drivers/scsi/sd.c ). Ziemlich sicher, dass der SR-Treiber für CD / DVD-Treiber ist ( lxr.free-electrons.com/source/drivers/scsi/sr.c )
AustinMarton
Das liegt daran, dass sd / sr auf einer anderen Ebene als uas / usb-storage arbeiten.
Grawity