Як я можу перевірити, чи увімкнено режим USB3.0 UASP (USB Attached SCSI Protocol) в Linux?


25

У мене ноутбук на базі Ubuntu 15.04 (3.19.0-21-generic) та зовнішній USB3.0 2.5 "корпус SATA HDD, який стверджує, що він підтримує режим UASP ( модель S2510BPU33 від StarTech ). У мене немає проблем із встановленням накопичувача або читання / запис до нього.

Я хотів би мати можливість підтвердити наступне:

  1. Що сам пристрій насправді підтримує UASP
  2. Чи підтримує мій чіпсет UASP
  3. Чи використовує пристрій UASP, коли я його монтую

Де я можу знайти цю інформацію?

Відповіді:


25

Якщо ви знаєте ім'я свого пристрою, знайдіть номери USB шини та пристрою:

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

Потім подивіться на дерево USB і знайдіть свій пристрій (мій був 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
...

Ви можете побачити в моєму випадку uasводія.

Якщо UAS не використовується, ви побачите usb-storage(як Dev 3 у моєму випадку).


1
Відмінно - це чудово стосується точки 3. Якщо я не бачу Driver=uas, було б непогано зрозуміти, чому саме - наприклад, це може бути те, що чипсет чи пристрій (або, можливо, обидва?) Не підтримують UAS . Залишаю питання відкритим до кінця тижня, якщо хтось зможе відповісти на два інші пункти, але в іншому випадку я прийму вашу відповідь.
ali_m

1
Я також хотів би дізнатися відповіді на питання 1 і 2. Відредагую відповідь, якщо я
зрозумію

10

Окрім відповіді, яку дав austinmarton, ви можете бігати

lsusb -v -d VPID | grep -i interface

де VPID - ідентифікатор постачальника / продукту, про який повідомляється lsusb. Наприклад:

$ 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 

Зверніть увагу, що єдине bInterfaceProtocolперелічене значення - це 80 Bulk-Only. Цей пристрій не буде пристроєм, налаштованим UASP. Однак якщо ви бачите додатковий bInterfaceProtocol 98, це буде пристрій, налаштований UASP.

Ці значення наведені у десятковій формі, але специфікація посилається на них за їх шістнадцятковими значеннями ...

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

Цю інформацію можна знайти в Специфікації масового зберігання на usb.org , розділ 3 Кодекси протоколу, Таблиця 2 - Протокол масового зберігання.

Я не впевнений, чи відповідає це на ваші перші чи другі запитання, оскільки незрозуміло, чи повідомлятиметься про це значення як на машинах / пристроях, які підтримують UASP, так і на тих, які не мають.


Документ із специфікацією масового зберігання тепер можна знайти за адресою usb.org/sites/default/files/… .
Натан

3

Щоб заповнити відповідь:

Якщо ваш контролер не підтримує UAS, ядро ​​Linux досить любезно, щоб сказати вам так:

$ 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 показує рядок для bInterfaceProtocol 98, але він порожній:

$ 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,
Людський робот всередині.


Для уточнення наявність рядка bInterfaceProtocol 98 вказує на те, що цей конкретний пристрій підтримує протокол, необхідний для UAS - але рядок завжди "порожній" (тобто не містить рядка з описом тексту), підтримується чи ні UAS. (Насправді це просто порожньо, оскільки в /var/lib/usbutils/usb.ids опис для класу 8 / підкласу 6 / протоколу 62 не подано разом із описом "Лише масове", поданим для протоколу 50.)
Натан

-1

Ви повинні перевірити, чи використовується драйвер UAS для вашого диска. Спочатку визначте диск, про який йде мова:

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

Отже, мій пристрій - це диск SCSI. Тут ви знайдете інформацію про драйвери, які зараз використовуються,

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

Отже, у моєму випадку відповідним драйвером є або sd, або sr . Щоб перевірити, який із них, я намагаюся

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

Тому мій водій сд .Ви можете двічі перевірити , що каталог / SYS / автобус / SCSI / драйвера / стер / 9: 0: 0: 1 зовсім НЕ існує. Отже, мій зовнішній диск не є UASP.


3
Я не думаю, що ця відповідь є правильною, драйвери SD та SR не розповідають про UAS. У мене диск з використанням UAS, і він використовує драйвер SD ( lxr.free-electrons.com/source/drivers/scsi/sd.c ). Досить впевнений, що драйвер SR призначений для драйверів CD / DVD ( lxr.free-electrons.com/source/drivers/scsi/sr.c )
austinmarton

Це тому, що sd / sr працює на іншому шарі, ніж uas / usb-storage.
grawity
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.