如何检查 Linux 中是否启用了 USB3.0 UASP(USB 附加 SCSI 协议)模式?

ali*_*i_m 36 linux usb sata usb-3 external-hard-drive

我有一台运行 Ubuntu 15.04(3.19.0-21-generic)的笔记本电脑和一个外置 USB3.0 2.5" SATA HDD 机箱,声称它支持 UASP 模式(StarTech 的 S2510BPU33 型号)。我没有安装驱动器或读/写它。

我希望能够确认以下内容:

  1. 设备本身实际上支持 UASP
  2. 我的芯片组是否也支持 UASP
  3. 挂载时设备是否使用UASP

我在哪里可以找到这些信息?

aus*_*ton 35

如果您知道设备的名称,请查找 USB 总线和设备编号:

$ lsusb
...
Bus 002 Device 005: ID xxxx:yyyy MyDeviceManufacturer
...
Run Code Online (Sandbox Code Playgroud)

然后查看 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
...
Run Code Online (Sandbox Code Playgroud)

你可以在我的例子中看到uas驱动程序。

如果未使用 UAS,您会看到usb-storage(如我的 Dev 3)。


use*_*309 12

除了奥斯汀马顿给出的答案,您还可以运行

lsusb -v -d VPID | grep -i interface
Run Code Online (Sandbox Code Playgroud)

其中 VPID 是 中报告的供应商/产品 ID 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 
Run Code Online (Sandbox Code Playgroud)

请注意,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. 
Run Code Online (Sandbox Code Playgroud)

此信息可以在usb.org上的海量存储规范中找到,第 3 节协议代码,表 2 — 海量存储传输协议。

不过,我不确定这是否回答了您的第一个问题或第二个问题,因为尚不清楚是否会在支持 UASP 和不支持 UASP 的机器/设备上报告此值。


R. *_*vaw 7

要完成答案:

如果您的控制器并没有支持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.
Run Code Online (Sandbox Code Playgroud)

此外, 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
Run Code Online (Sandbox Code Playgroud)

哈,

R. Daneel olivaw,
里面的人类机器人。

  • 澄清一下,bInterfaceProtocol 98 行的存在表明该特定设备支持 UAS 所需的协议,但无论是否支持 UAS,该行始终为“空”(即没有文本描述字符串)。(事实上​​,它只是空的,因为 /var/lib/usbutils/usb.ids 中没有给出类 8/子类 6/协议 62 的描述,以配合协议 50 给出的“Bulk-Only”描述。) (2认同)