![为什么 lsusb 显示连接到 USB 3 端口的设备已连接到 USB2 根集线器?](https://linux22.com/image/986796/%E4%B8%BA%E4%BB%80%E4%B9%88%20lsusb%20%E6%98%BE%E7%A4%BA%E8%BF%9E%E6%8E%A5%E5%88%B0%20USB%203%20%E7%AB%AF%E5%8F%A3%E7%9A%84%E8%AE%BE%E5%A4%87%E5%B7%B2%E8%BF%9E%E6%8E%A5%E5%88%B0%20USB2%20%E6%A0%B9%E9%9B%86%E7%BA%BF%E5%99%A8%EF%BC%9F.png)
我在戴尔 Chromebook 11 上运行 Ubuntu,它有两个 USB 3 端口和一个 SD 读卡器。我试图确定 SD 读卡器是否能够达到 USB 3 的速度(因此是否值得购买 130MB/s 的 SD 卡),但我无法判断它是否在内部物理连接到 USB 3。
我认为可以这样做的一个方法是插入 SD 卡后运行 lsusb - 但是,如果我将 USB2 设备插入其中一个 USB 3 端口,它仍然会显示为连接到 USB 2 集线器。如果我将 USB 3 设备插入同一个端口,它会显示为连接到 USB 3 集线器。
- 为什么 lsusb 显示连接到 USB3 端口的 USB2 设备已连接到 USB 2 根?
- 有没有办法获得 USB 端口到集线器的物理映射(而不是逻辑映射)?
- 回到我最初研究这个问题的原因,有没有办法在购买之前知道内部 SD 卡读卡器的速度是多少?
答案1
为什么 lsusb 显示连接到 USB3 端口的 USB2 设备已连接到 USB 2 根?
回答 :
在 USB 3.0 中,采用双总线架构,允许 USB 2.0(全速、低速或高速)和 USB 3.0(超高速)操作同时进行,从而提供向后兼容性。
来源:https://en.wikipedia.org/wiki/USB_3.0
例如,在包含两个 2.0 USB 端口和一个 USB 3.0 端口的机器上,该lsusb
命令的输出显示:
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 8087:8004 Intel Corp.
Bus 003 Device 001: ID 1d6b:0008 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 058f:6386 Alcor Micro Corp. Multi Flash Reader
Bus 002 Device 001: ID 1d6b:0007 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
额外的 USB 2.0 根集线器是 USB 3.0 根集线器的一部分,可用于提供与 USB 2.0 标准的向后兼容性。因此,当您将 USB2 设备连接到 USB3 端口时,它们会显示连接到 2.0 根集线器。
有没有办法获得 USB 端口到集线器的物理映射(而不是逻辑映射)?
答案:使用lsusb -t
-t Tells lsusb to dump the physical USB device hierarchy as a tree.
来源:lsusb
手册页
回到我最初研究这个问题的原因,有没有办法在购买之前知道内部 SD 卡读卡器的速度是多少?
可以使用以下步骤完成此操作。这里我们考虑的是 Alcor Micro Corp 的带有内置读卡器的笔记本电脑。
使用
lsusb
命令$ lsusb Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 2.0 root hub Bus 003 Device 002: ID 8087:8004 Intel Corp. Bus 003 Device 001: ID 1d6b:0008 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 058f:6386 Alcor Micro Corp. Multi Flash Reader Bus 002 Device 001: ID 1d6b:0007 Linux Foundation 3.0 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
找出读卡器的总线号。在本例中,它是
001
使用
lsusb -t
$ lsusb -t /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M |__ Port 5: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 480M
每行末尾均以 Mbits/s 为单位显示每个设备的协商通信速度。480Mbit
/s 称为“Hi-Speed”,用于 USB2.0。
对于 USB 3.0,协商的通信速度为 5000Mbit/s,称为“SuperSpeed”(5Gbit/s)
来源:https://en.wikipedia.org/wiki/USB
结果:Alcor Micro Corp 的读卡器支持 USB 2.0 标准,而不支持 USB 3.0 标准,因为输出中提到了 480M。
答案2
从man
页面:
DESCRIPTION
lsusb is a utility for displaying information about USB buses in the
system and the devices connected to them.
我建议你使用lshw
(你可能必须sudo apt-get install lshw
先使用)。从页面lshw
man
:
DESCRIPTION
lshw is a small tool to extract detailed information on the hardware
configuration of the machine. It can report exact memory configuration,
firmware version, mainboard configuration, CPU version and speed, cache
configuration, bus speed, etc. on DMI-capable x86 or IA-64 systems and
on some PowerPC machines (PowerMac G4 is known to work).
It currently supports DMI (x86 and IA-64 only), OpenFirmware device
tree (PowerPC only), PCI/AGP, CPUID (x86), IDE/ATA/ATAPI, PCMCIA (only
tested on x86), SCSI and USB.