Bagaimana saya dapat memeriksa apakah mode USB3.0 UASP (USB Attached SCSI Protocol) diaktifkan di Linux?

25

Saya memiliki laptop yang menjalankan Ubuntu 15.04 (3.19.0-21-generik) dan eksternal USB3.0 2.5 "SATA HDD enclosure yang mengklaim mendukung mode UASP ( model S2510BPU33 oleh StarTech ). Saya tidak memiliki masalah untuk memasang drive atau membaca / menulis untuk itu.

Saya ingin dapat mengkonfirmasi yang berikut:

  1. Bahwa perangkat itu sendiri sebenarnya mendukung UASP
  2. Apakah chipset saya juga mendukung UASP
  3. Apakah perangkat menggunakan UASP saat saya memasangnya

Di mana saya dapat menemukan informasi ini?

ali_m
sumber

Jawaban:

25

Jika Anda tahu nama perangkat Anda, cari nomor USB Bus dan Perangkat:

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

Kemudian lihat pohon USB dan temukan perangkat Anda (milik saya adalah 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
...

Anda dapat melihat dalam kasus saya uasdriver.

Jika UAS tidak digunakan Anda akan melihat usb-storage(seperti Dev 3 dalam kasus saya).

austinmarton
sumber
1
Luar biasa - yang dengan baik membahas poin 3. Jika saya tidak melihat Driver=uas, alangkah baiknya untuk mengetahui mengapa - misalnya bisa jadi chipset atau perangkat (atau mungkin keduanya?) Tidak mendukung UAS . Saya akan membiarkan pertanyaan terbuka sampai akhir minggu kalau-kalau ada yang bisa menjawab dua poin lainnya, tetapi kalau tidak saya akan menerima jawaban Anda.
ali_m
1
Saya ingin tahu jawaban untuk 1 & 2 juga, akan mengedit jawaban jika saya mengetahuinya
austinmarton
10

Selain jawaban yang diberikan austinmarton, Anda dapat menjalankan

lsusb -v -d VPID | grep -i interface

di mana VPID adalah ID vendor / produk yang dilaporkan dalam lsusb. Sebagai contoh:

$ 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 

Perhatikan bahwa satu-satunya bInterfaceProtocolnilai yang terdaftar adalah 80 Bulk-Only. Perangkat ini tidak akan menjadi perangkat yang dikonfigurasi UASP. Namun, jika Anda melihat tambahan bInterfaceProtocol 98, ini akan menjadi perangkat yang dikonfigurasi UASP.

Nilai-nilai ini diberikan dalam desimal, tetapi spec merujuk kepada mereka dengan nilai hex mereka ...

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

Informasi ini dapat ditemukan di Spesifikasi Penyimpanan Massal di usb.org , bagian 3 Kode Protokol, Tabel 2 - Protokol Transport Penyimpanan Massal.

Saya tidak yakin apakah ini menjawab pertanyaan pertama atau kedua Anda, karena tidak jelas apakah nilai ini akan dilaporkan pada kedua mesin / perangkat yang mendukung UASP dan yang tidak.

pengguna8675309
sumber
The Mass Storage Keterangan dokumen sekarang ditemukan di usb.org/sites/default/files/... .
Nathan
3

Untuk melengkapi jawabannya:

Jika controller Anda tidak mendukung UAS, kernel linux cukup baik untuk memberi tahu Anda:

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

Juga, lsusb memperlihatkan baris untuk bInterfaceProtocol 98, tetapi kosong:

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

R. Daneel Olivaw
sumber
Hanya untuk memperjelas, keberadaan garis bInterfaceProtocol 98 menunjukkan bahwa perangkat khusus ini mendukung protokol yang diperlukan untuk UAS - tetapi baris tersebut selalu "kosong" (yaitu tidak memiliki string uraian teks) baik didukung atau tidaknya UAS. (Sebenarnya itu hanya kosong karena tidak ada deskripsi untuk kelas 8 / subclass 6 / protokol 62 diberikan di /var/lib/usbutils/usb.ids, untuk mengikuti deskripsi "Hanya-Massal" yang diberikan untuk protokol 50.)
Nathan
-1

Anda harus memeriksa apakah driver UAS digunakan untuk disk Anda. Pertama, identifikasi disk yang dimaksud:

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

Jadi perangkat saya adalah disk SCSI. Di sini Anda menemukan informasi tentang driver yang sedang digunakan,

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

Jadi, dalam kasus saya, driver yang sesuai adalah sd atau sr . Untuk memeriksa yang mana, saya coba

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

Oleh karena sopir saya adalah sd .Anda bisa dua kali lipat-cek bahwa direktori / sys / bus / scsi / driver / sr / 9: 0: 0: 1 tidak tidak ada. Oleh karena itu disk eksternal saya bukan UASP.

MariusMatutiae
sumber
3
Saya tidak berpikir jawaban ini benar, driver SD dan SR tidak memberi tahu Anda tentang UAS. Saya punya disk menggunakan UAS dan menggunakan driver SD ( lxr.free-electrons.com/source/drivers/scsi/sd.c ). Cukup yakin driver SR untuk driver CD / DVD ( lxr.free-electrons.com/source/drivers/scsi/sr.c )
austinmarton
Itu karena sd / sr bekerja pada layer yang berbeda dari uas / usb-storage.
grawity