lsusb 列出同一 USB 集線器下不同 PCI 控制器上的設備
據我了解,連接到不同控制器的設備應顯示在不同的 USB 匯流排下。但是,當我將鍵盤連接到 xHCI 控制器時,它仍然列在 EHCI 匯流排之一下。查看
>>>>
清單中的標記:$ lspci | grep -i usb >>>> 00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 04) 00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 04) 00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 04) $ lspci -vs 00:14.0 00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 04) (prog-if 30 [XHCI]) Subsystem: ASUSTeK Computer Inc. 8 Series/C220 Series Chipset Family USB xHCI Flags: bus master, medium devsel, latency 0, IRQ 27 Memory at ef920000 (64-bit, non-prefetchable) [size=64K] Capabilities: [70] Power Management version 2 Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+ Kernel driver in use: xhci_hcd
所以我確實有一個 xHCI 控制器。它是主機板上的一個單獨的物理埠。
$lsusb Bus 002 Device 002: ID 8087:8000 Intel Corp. Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 8087:8008 Intel Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub >>>> Bus 004 Device 002: ID 174c:3074 ASMedia Technology Inc. ASM1074 SuperSpeed hub >>>> Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 014: ID 046d:c03d Logitech, Inc. M-BT96a Pilot Optical Mouse Bus 003 Device 015: ID 195d:2030 Itron Technology iONE Bus 003 Device 013: ID 05e3:0608 Genesys Logic, Inc. Hub Bus 003 Device 012: ID 0424:2228 Standard Microsystems Corp. 9-in-2 Card Reader Bus 003 Device 011: ID 0424:2602 Standard Microsystems Corp. USB 2.0 Hub Bus 003 Device 010: ID 0424:2512 Standard Microsystems Corp. USB 2.0 Hub Bus 003 Device 003: ID 174c:2074 ASMedia Technology Inc. ASM1074 High-Speed hub >>>> Bus 003 Device 016: ID 03f0:0024 Hewlett-Packard KU-0316 Keyboard Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
匯流排 004 上的“超高速”3.0 集線器應該是 xHCI 控制器。然而,鍵盤連接到匯流排 003:
$lsusb -t /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M |__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M >>>>|__ Port 1: Dev 16, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 3: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M |__ Port 2: Dev 10, If 0, Class=Hub, Driver=hub/2p, 480M |__ Port 1: Dev 11, If 0, Class=Hub, Driver=hub/4p, 480M |__ Port 1: Dev 12, If 0, Class=Mass Storage, Driver=usb-storage, 480M |__ Port 3: Dev 13, If 0, Class=Hub, Driver=hub/4p, 480M |__ Port 2: Dev 15, If 0, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 2: Dev 15, If 1, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 2: Dev 15, If 2, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 4: Dev 14, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
事實上,無論我如何將設備連接到物理控制器,它們總是出現在同一匯流排下。有誰知道可能發生了什麼?
系統
Processor: Intel(R) Core(TM) i7-4771 CPU @ 3.50GHz OS: Debian GNU/Linux testing (buster) with ACS patch, IOMMU enabled. Kernel: Linux 4.10.0-acs+ (x86_64) Version: #3 SMP PREEMPT Sun Feb 26 00:03:48 CET 2017 Processor: Intel(R) Core(TM) i7-4771 CPU @ 3.50GHz : 3900.00 MHz Board: Asus Z87-PRO BIOS: AMI version 1707, VT-d/x enabled
5G 模式下的 USB 3.0 與 USB 2.0 或更早版本不兼容,因此他們實現兼容性的方式是為傳統設備使用與 USB 2.0 相同位置的一對引腳,為“真正的”USB 3.0 使用兩個新引腳對設備,如您在 Wikipedia 上的引腳排列中所見。
因此,您的
00:14.0
xHCI 控制器實際上是兩個控制器合二為一:每個連接器中“舊”對的 USB 2.0 傳統控制器,顯示為匯流排 3(帶有 14 個埠),以及兩個“真正的”USB 3.0 控制器“每個連接器中的“新”對,顯示為匯流排 4(帶 6 個埠)。您的一些 USB 連接器將在您的 PC 上標記為藍色,並且它們連接到兩個控制器。如果您插入 USB 2.0 設備,它將物理連接到匯流排 3,而如果您插入“真正的”USB 3.0,它將物理連接到匯流排 4。這就是插入同一連接器的不同設備可以顯示的原因一輛或另一輛公共汽車。
另請注意,舊版控制器具有更多埠,並且還連接到一些集線器。我不知道你是否連接了任何外部集線器,以及有多少,但主機板上也有內部集線器。
因此,您的所有連接器完全有可能只屬於 xHCI 控制器,而
lspci
顯示的另外兩個 EHCI 控制器實際上並未連接到任何東西(或者可能連接到主機板上的連接器)。找出方法是將 USB 2.0 設備依次連接到每個連接器,記下它出現在哪個匯流排上,以及它出現在哪個埠(和集線器埠)下。然後對“真正的”USB 3.0 設備重複相同的練習,您應該知道如何設置 USB 連接器。
xHCI 控制器實際上將兩條匯流排合二為一。超高速巴士:
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
…和傳統的 USB2 之一:
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
請注意,兩者都在使用
xhci_hcd
驅動程序。這可能是為了在 USB 實現的所有層中最大限度地減少較舊、較慢的設備對更快的 USB3+ 設備的干擾。