ฉันจะตรวจสอบได้อย่างไรว่าโหมด USB3.0 UASP (USB Attached SCSI Protocol) เปิดใช้งานใน Linux หรือไม่


25

ฉันมีแล็ปท็อปที่ใช้ Ubuntu 15.04 (3.19.0-21-generic) และ USB3.0 2.5 "SATA HDD enclosure ซึ่งอ้างว่ารองรับโหมด 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 ยังจะแก้ไขคำตอบถ้าผมคิดออก
austinmarton

10

นอกเหนือจากคำตอบที่ให้ไว้แล้วคุณสามารถวิ่งได้

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 และที่ไม่ได้


Mass Storage ข้อมูลจำเพาะเอกสารอยู่ในขณะนี้พบได้ที่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 (อันที่จริงมันว่างเปล่าเพียงเพราะไม่มีคำอธิบายสำหรับคลาส 8 / คลาสย่อย 6 / โพรโทคอล 62 ได้รับใน /var/lib/usbutils/usb.ids เพื่อไปพร้อมกับคำอธิบาย "เป็นกลุ่มเท่านั้น" สำหรับโปรโตคอล 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
   # 

ดังนั้นคนขับรถของฉันคือSDเตอร์คุณสามารถตรวจสอบอีกครั้งว่าไดเรกทอรีsys / / รถบัส / SCSI / ไดรเวอร์ / SR / 9: 0: 0: 1ไม่ได้อยู่ ดังนั้นดิสก์ภายนอกของฉันไม่ใช่ UASP


3
ฉันไม่คิดว่าคำตอบนี้ถูกต้องไดรเวอร์ SD และ SR ไม่ได้บอกคุณเกี่ยวกับ UAS ฉันมีดิสก์ที่ใช้ UAS และใช้ไดรเวอร์ SD ( lxr.free-electrons.com/source/drivers/scsi/sd.c ) ค่อนข้างแน่ใจว่าไดรเวอร์ SR นั้นใช้สำหรับไดรฟ์ซีดี / ดีวีดี ( lxr.free-electrons.com/source/drivers/scsi/sr.c )
austinmarton

นั่นเป็นเพราะ sd / sr ทำงานบนเลเยอร์ที่แตกต่างจาก uas / usb-storage
grawity
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.