lsusb는 동일한 USB 허브 아래에 있는 다른 PCI 컨트롤러의 장치를 나열합니다.

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

답변1

5G 모드의 USB 3.0은 USB 2.0 이하와 호환되지 않으므로 호환성을 달성하는 방법은 레거시 장치의 USB 2.0과 동일한 위치에 있는 핀 쌍을 사용하고 "실제" USB 3.0 새 핀 쌍에는 두 개를 사용하는 것입니다. 보시다시피 장치.핀아웃위키피디아에서.

따라서 00:14.0xHCI 컨트롤러는 실제로 하나에 두 개의 컨트롤러가 있습니다. 즉, 버스 3(14개 포트 포함)으로 표시되는 각 커넥터의 "레거시" 쌍을 위한 USB 2.0 레거시 컨트롤러와 두 개의 "레거시"를 위한 "실제" 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 커넥터가 어떻게 설정되는지 알아야 합니다.

답변2

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+ 장치로의 간섭을 최소화할 가능성이 높습니다.

관련 정보