我的电脑上有多个 USB 端口,一些是 USB 2,一些是 USB 3。我想将设备插入 USB 3 端口。不幸的是,它们都是黑色的,所以我不能使用通常的“USB 3.0 端口是蓝色的”经验法则。
这是一个 Linux 机器,那么有什么方法可以知道我是否已将设备插入 USB 3 端口,也许使用一些命令行实用程序或通过检查一些内核消息?
答案1
答案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
现在将上面的输出路径替换idVendor
为speed
,并查看其内容:
> 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”文件。假设您可以自由地连接和断开设备,则可以使用以下脚本使该过程半自动化。下面介绍了另一个获取完整列表的脚本。
- 拔下设备
- 启动脚本。它会要求连接设备并按 ENTER
- 连接设备
- 按 ENTER
- 脚本报告相应的连接速度:
/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 提供的版本未列出所有设备。