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

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

我有一台运行 Ubuntu 15.04(3.19.0-21-generic)的笔记本电脑和一个外部 USB3.0 2.5 英寸 SATA HDD 外壳,据称它支持 UASP 模式(StarTech 的 S2510BPU33 型号)。我安装驱动器或读取/写入驱动器时没有遇到任何问题。

我希望确认以下几点:

  1. 设备本身确实支持 UASP
  2. 我的芯片组是否也支持 UASP
  3. 安装设备时设备是否正在使用 UASP

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

答案1

如果您知道设备的名称,请查找 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)。

答案2

此外答案austinmarton 给了,你可以跑

lsusb -v -d VPID | grep -i interface

其中 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 

请注意,列出的唯一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 和不支持 UASP 的机器/设备上报告。

答案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

答案4

您必须检查UAS 驱动程序正在用于您的磁盘。首先,识别有问题的磁盘:

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

所以我的设备是 SCSI 磁盘。在这里您可以找到有关当前正在使用的驱动程序的信息,

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

因此,就我而言,合适的驱动程序是标准差或者SR。为了检查哪一个,我尝试

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

因此我的司机标准差.您可以仔细检查目录/sys/总线/scsi/驱动程序/sr/9:0:0:1不是存在。因此我的外部磁盘不是 UASP。

相关内容