Làm cách nào để kiểm tra xem chế độ USB3.0 UASP (Giao thức SCSI đính kèm USB) có được bật trong Linux không?


25

Tôi có một máy tính xách tay chạy Ubuntu 15.04 (3.19.0-21-generic) và một ổ cứng gắn ngoài USB3.0 2.5 ", nó tuyên bố rằng nó hỗ trợ chế độ UASP ( model S2510BPU33 của StarTech ). đọc / viết cho nó

Tôi muốn có thể xác nhận những điều sau:

  1. Thiết bị thực sự hỗ trợ UASP
  2. Liệu chipset của tôi có hỗ trợ UASP không
  3. Thiết bị có đang sử dụng UASP hay không khi tôi gắn thiết bị

Tôi có thể tìm thấy thông tin này ở đâu?

Câu trả lời:


25

Nếu bạn biết tên thiết bị của mình, hãy tìm số USB Bus và số thiết bị:

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

Sau đó nhìn vào cây USB và tìm thiết bị của bạn (của tôi là 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
...

Bạn có thể thấy trong trường hợp của tôi các uastrình điều khiển.

Nếu UAS không được sử dụng, bạn sẽ thấy usb-storage(như Dev 3 trong trường hợp của tôi).


1
Tuyệt vời - đó là địa chỉ độc đáo ở điểm 3. Nếu tôi không thấy Driver=uas, thật tuyệt khi có thể tìm hiểu lý do - ví dụ: có thể là chipset hoặc thiết bị (hoặc có thể cả hai?) Không hỗ trợ UAS . Tôi sẽ để câu hỏi mở cho đến cuối tuần trong trường hợp ai đó có thể trả lời hai điểm khác, nhưng nếu không tôi sẽ chấp nhận câu trả lời của bạn.
ali_m

1
Tôi cũng muốn biết câu trả lời cho 1 & 2, sẽ chỉnh sửa câu trả lời nếu tôi tìm ra
austinmarton

10

Ngoài câu trả lời austinmarton đưa ra, bạn có thể chạy

lsusb -v -d VPID | grep -i interface

VPID là ID nhà cung cấp / sản phẩm được báo cáo lsusb. Ví dụ:

$ 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 

Lưu ý rằng bInterfaceProtocolgiá trị duy nhất được liệt kê là 80 Bulk-Only. Thiết bị này sẽ không phải là thiết bị có cấu hình UASP. Tuy nhiên, nếu bạn thấy một bổ sung bInterfaceProtocol 98, đây sẽ là một thiết bị được cấu hình UASP.

Các giá trị này được đưa ra dưới dạng thập phân, nhưng thông số kỹ thuật đề cập đến chúng bởi các giá trị hex của chúng ...

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

Thông tin này có thể được tìm thấy trong Thông số kỹ thuật lưu trữ lớn trên usb.org , phần 3 Mã giao thức, Bảng 2 - Giao thức truyền tải lưu trữ lớn.

Tuy nhiên, tôi không chắc liệu câu trả lời này có trả lời câu hỏi thứ nhất hoặc thứ hai không, vì không rõ giá trị này sẽ được báo cáo trên cả máy / thiết bị hỗ trợ UASP và những máy không hỗ trợ.


Các Mass Storage Specification tài liệu hiện nay được tìm thấy ở usb.org/sites/default/files/... .
Nathan

3

Để hoàn thành câu trả lời:

Nếu bộ điều khiển của bạn không hỗ trợ UAS, nhân linux đủ tốt để nói với bạn như vậy:

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

Ngoài ra, lsusb hiển thị một dòng cho bInterfaceProtocol 98, nhưng nó trống:

$ 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,
Người máy bên trong.


Chỉ cần làm rõ, sự hiện diện của dòng bInterfaceProtocol 98 cho thấy thiết bị cụ thể này hỗ trợ giao thức cần thiết cho UAS - nhưng dòng này luôn "trống" (nghĩa là không có chuỗi mô tả văn bản) cho dù UAS có được hỗ trợ hay không. (Trên thực tế, nó đơn giản là trống rỗng vì không có mô tả nào cho lớp 8 / lớp con 6 / giao thức 62 được đưa ra trong /var/lib/usbutils/usb.ids, để đi kèm với mô tả "Chỉ dành cho số lượng lớn" được cung cấp cho giao thức 50.)
Nathan

-1

Bạn phải kiểm tra xem trình điều khiển UAS đang được sử dụng cho đĩa của bạn. Đầu tiên, xác định đĩa trong câu hỏi:

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

Vì vậy, thiết bị của tôi là một đĩa SCSI. Tại đây bạn tìm thấy thông tin về các trình điều khiển hiện đang sử dụng,

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

Vì vậy, trong trường hợp của tôi, trình điều khiển thích hợp là sd hoặc sr . Để kiểm tra cái nào, tôi thử

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

Do đó tài xế của tôi là sd .Bạn có thể kiểm tra lại rằng thư mục / sys / bus / scsi / drivers / sr / 9: 0: 0: 1 không không tồn tại. Do đó đĩa ngoài của tôi không phải là UASP.


3
Tôi không nghĩ câu trả lời này là đúng, trình điều khiển SD và SR không cho bạn biết về UAS. Tôi đã có một đĩa bằng UAS và nó sử dụng trình điều khiển SD ( lxr.free-electrons.com/source/drivers/scsi/sd.c ). Khá chắc chắn trình điều khiển SR dành cho trình điều khiển CD / DVD ( lxr.free-electrons.com/source/drivers/scsi/sr.c )
austinmarton

Đó là bởi vì sd / sr hoạt động trên một lớp khác với lưu trữ uas / usb.
grawity
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.