我如何确定已将设备插入 USB 3 端口?

我如何确定已将设备插入 USB 3 端口?

我的电脑上有多个 USB 端口,一些是 USB 2,一些是 USB 3。我想将设备插入 USB 3 端口。不幸的是,它们都是黑色的,所以我不能使用通常的“USB 3.0 端口是蓝色的”经验法则。

这是一个 Linux 机器,那么有什么方法可以知道我是否已将设备插入 USB 3 端口,也许使用一些命令行实用程序或通过检查一些内核消息?

答案1

您可以通过运行lsusb

  • 12M = 12MBit/s = USB1
  • 480M = 480MBit/s = USB2
  • 5000M = 5000MBit/s = USB3.0 又名 USB3.1 gen. 1
  • 10000M = 10000MBit/s = USB3.1 第二代

尝试使用类似的东西:

lsusb -D /dev/bus/usb/002/005

USB 2.00/3.00 对应 USB 2.0 / 3.0

甚至可以尝试使用lsusb -t

第一个转换图表将帮助您确定 USB 版本。

看一眼链接以获取更多示例。

答案2

正如@MarkHu 和@Matthew 指出的那样,目前接受的答案 (lsusb -D) 可能会产生误导,因为它列出的是设备支持的速度,而不是实际速度。或者,至少我无法使用它的输出来查找当前设备速度。

如果它不协调 USB 3 速度,它是否是 USB 3 端口是否重要?

查看 Linux 机器上的实际速度有点麻烦;lsusb 目前似乎没有提供现成的解决方案。我发现这是有效的。首先,列出所有连接的设备和集线器以识别您的设备:

> lsusb
Bus 002 Device 003: ID 0424:2660 Microchip Technology, Inc. (formerly SMSC) Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 1058:25ee Western Digital Technologies, Inc.
Bus 001 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

就我而言,我正在查看外部 WD MyBook 磁盘的速度。因此,有趣的一行是:

Bus 001 Device 004: ID 1058:25ee Western Digital Technologies, Inc.

但是,似乎“Bus 001 Device 004”部分对于我们查找当前设备速度没有用。相反,我们需要两个以冒号分隔的数字 1058:25ee,即此类设备的供应商 ID 和产品 ID。

您现在应该检查/sys/devices目录中的文件内容idVendor,从上面查找供应商 ID(将 1058 替换为您自己的供应商 ID)

> find /sys/devices/ -name idVendor -print -exec cat {} \; | grep -B 1 1058
./pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/idVendor
1058

现在将上面的输出路径替换idVendorspeed,并查看其内容:

> cat ./pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/speed
480

这样,您就发现了 480Mbps 的 USB 2.0 连接。

如果您有多个连接的设备,您idProduct也可以检查内容。如果您有多个完全相同的serial设备,也查找内容。

答案3

我的经验是,lsusb -D如果命令报告了设备所插入插孔类型当前未启用的“功能”,则该命令可能会产生误导。请参见下面的过滤输出示例(整个输出有sudo lsusb -D ${USB_DEVICE_PATH}80 多行)。在此示例中,我推断bcdUSB 3.00应该暗示Device can operate at SuperSpeed (5Gbps)--尽管当我将驱动器插入 USB 2 插孔进行比较时,该行仍然存在。

$ lsusb -D /dev/bus/usb/007/003 | egrep -i 'usb|speed|version|Mbps|gbps|id|speed'

Device: ID 174c:1153 ASMedia Technology Inc. ASM2115 SATA 6Gb/s bridge
  bcdUSB               3.00
  idVendor           0x174c ASMedia Technology Inc.
  idProduct          0x1153 ASM2115 SATA 6Gb/s bridge

  SuperSpeed USB Device Capability:
    wSpeedsSupported   0x000e
      Device can operate at Full Speed (12Mbps)
      Device can operate at High Speed (480Mbps)
      Device can operate at SuperSpeed (5Gbps)
      Lowest fully-functional device speed is Full Speed (12Mbps)

还请注意,该idProduct行包含一些咨询/营销文字,6Gb/s不应将其解释为可达到的速度。

可能更有用的替代短命令:

$ sudo lsusb -t | egrep -i "storage" -B1

/:  Bus 07.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
    |__ Port 1: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 5000M

答案4

如果您想要了解连接的实际速度(而不是 lsusb 报告的容量),您可以从 /sys/devices 读取“speed”文件。假设您可以自由地连接和断开设备,则可以使用以下脚本使该过程半自动化。下面介绍了另一个获取完整列表的脚本。

  1. 拔下设备
  2. 启动脚本。它会要求连接设备并按 ENTER
  3. 连接设备
  4. 按 ENTER
  5. 脚本报告相应的连接速度:
/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/speed    480

或者:

/sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.3/2-3.3.1/speed    5000

以下是可能的速度(以 Mbit/s 为单位):

  • 1.5 = USB 1.0/低速
  • 12 = USB 1.1/全速
  • 480 = USB 2.0/高速
  • 5000 = USB 3.0/超高速
  • 10000 = USB 3.1/超高速

以下是脚本。我将其命名为usbspeed-get

#!/bin/bash
# https://superuser.com/a/1780101/
set -e

LIST1=`mktemp`
LIST2=`mktemp`
echo "Getting list of current devices..."
find /sys/devices -name speed | sort > "$LIST1"
echo -n "Now plug the relevant USB device and press ENTER..."
read dummy
find /sys/devices -name speed | sort > "$LIST2"

comm -3 "$LIST1" "$LIST2" | while read f ; do
echo -n "$f" " "
cat "$f"
done | column -t -s' '

rm  "$LIST1" "$LIST2"

如果您希望概览所有设备及其速度,则可以使用以下脚本。我称之为usbspeed-list

#!/bin/bash
# https://superuser.com/a/1780101/

sep="|"
find /sys/devices -name speed | grep usb  | while read f ; do
  dir=`dirname "$f"`
  for name in speed manufacturer product ; do
     cat "$dir/$name" 2>/dev/null | tr '\n' ' ' 
     echo -n "$sep"
  done
  echo -n "$dir$sep"
  echo
done | column -t --separator "$sep"

默认情况下,它将按照设备在 /sys/devices 中的顺序输出设备。如果要按速度排序,可以将其与以下内容结合使用sort -n

usbspeed-list | sort -n
1.5                                        Keyboard                    /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.4/1-3.4.4/1-3.4.4.2              
1.5     Texas Instruments                  TPS65983B                   /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3.2                        
12      Silicon Laboratories               EFM8 HID ISP                /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3.3                        
12                                                                     /sys/devices/pci0000:00/0000:00:14.0/usb1/1-14                                     
480     GenesysLogic                       USB2.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.4/1-3.4.4                        
480     GenesysLogic                       USB2.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.4/1-3.4.4/1-3.4.4.4              
480     Linux 5.19.0-38-generic xhci-hcd   xHCI Host Controller        /sys/devices/pci0000:00/0000:00:14.0/usb1                                          
480     Sonix Technology Co., Ltd.         USB2.0 Camera               /sys/devices/pci0000:00/0000:00:14.0/usb1/1-8                                      
480                                        USB2.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.4/1-3.4.4/1-3.4.4.1              
480     VIA Labs, Inc.                     USB2.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3                                      
480     VIA Labs, Inc.                     USB2.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3                                
480     VIA Labs, Inc.                     USB2.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.4                                
1000                                                                   /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1:1.5/net/enx806d9711f2b1  
5000    DisplayLink                        USB-C Triple-4K Dock        /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1                                
5000    Generic                            USB Storage                 /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.4/2-3.4.4/2-3.4.4.4/2-3.4.4.4.4  
5000    GenesysLogic                       USB3.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.4/2-3.4.4                        
5000    GenesysLogic                       USB3.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.4/2-3.4.4/2-3.4.4.4              
5000    Prolific Technology Inc.           ATAPI-6 Bridge Controller   /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2                                      
5000    Seagate                            BUP Portable                /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.2                                
5000    Space keys                         USB3.1 Storage Device       /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.3/2-3.3.1                        
5000    VIA Labs, Inc.                     USB3.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3                                      
5000    VIA Labs, Inc.                     USB3.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.3                                
5000    VIA Labs, Inc.                     USB3.0 Hub                  /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.4                                
10000   Linux 5.19.0-38-generic xhci-hcd   xHCI Host Controller        /sys/devices/pci0000:00/0000:00:14.0/usb2 

这里键盘的连接速度非常低(1.5),这是正常的,USB硬盘底座(ATAPI-6 Bridge Controller)的连接速度为5000MBit/s。

列出设备及其速度的另一种方法是使用“usb-devices”脚本還有并由某些发行版默认安装。它更通用,但也非常冗长。它在设备描述的第一行报告速度:

T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 44 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
P:  Vendor=067b ProdID=2773 Rev=01.00
S:  Manufacturer=Prolific Technology Inc.
S:  Product=ATAPI-6 Bridge Controller
S:  SerialNumber=0123456789000000005
C:  #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=96mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms

确保您使用的是最新版本。Ubuntu 22.04 提供的版本未列出所有设备。

相关内容