lsusb lista dispositivos em diferentes controladores PCI sob o mesmo hub USB

0

Pelo que entendi, dispositivos conectados a diferentes controladores devem aparecer sob diferentes barramentos USB. No entanto, quando eu conecto um teclado ao controlador xHCI, ele ainda está listado em um dos barramentos EHCI. Veja os marcadores >>>> nas listagens:

$ 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

Então eu realmente tenho um controlador xHCI. É uma porta física separada na placa-mãe.

$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

O hub 3.0 "superspeed" no barramento 004 deve ser o controlador xHCI. O teclado, no entanto, está ligado ao bus 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

Na verdade, não importa como eu conecto dispositivos a controladores físicos, eles sempre aparecem sob o mesmo barramento. Alguém tem idéia do que pode estar acontecendo?

Sistema

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
    
por Klas Lindberg 04.02.2018 / 13:26

2 respostas

0

O modo USB 3.0 no modo 5G não é compatível com USB 2.0 ou anterior; portanto, a maneira como implementaram a compatibilidade é usar um par de pinos na mesma posição do USB 2.0 para dispositivos herdados e dois novos pares de pinos para "real" "Dispositivos USB 3.0, como você pode ver, por exemplo na descrição na Wikipedia.

Portanto, seu controlador 00:14.0 xHCI é realmente dois controladores em um: Um controlador legado USB 2.0 para o par "antigo" em cada conector, que aparece como barramento 3 (com 14 portas) e um USB "real" 3.0 controlador para os dois "novos" pares em cada conector, que aparece como barramento 4 (com 6 portas).

Alguns de seus conectores USB serão marcados em azul no seu PC, e eles estão conectados a ambos os controladores. Se você conectar um dispositivo USB 2.0, ele se conectará fisicamente ao barramento 3, enquanto se você conectar um USB 3.0 "real", ele se conectará fisicamente ao barramento 4. É por isso que diferentes dispositivos conectados ao mesmo conector podem aparecer no barramento. um ou outro ônibus.

Observe também que o controlador legado tem muito mais portas e também está conectado a alguns hubs. Não sei se você conectou algum hub externo e quantos, mas também há hubs internos na placa-mãe.

Portanto, é totalmente possível que todos os seus conectores pertençam ao controlador xHCI, e os outros dois controladores EHCI que lspci não estão realmente conectados a nada (ou possivelmente a conectores na placa-mãe).

A maneira de descobrir é conectar um dispositivo USB 2.0 a cada conector, anotar em qual barramento e sob qual porta (e porta de hubs) ele aparece. Em seguida, repita o mesmo exercício com um dispositivo "real" USB 3.0, e você deve saber como os conectores USB estão configurados.

    
por 04.02.2018 / 17:15
1

O controlador xHCI tem, na verdade, dois barramentos em um. O barramento superspeed:

/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M

... e o tradicional USB2:

/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M

Note que ambos estão usando o driver xhci_hcd .

Isso provavelmente minimizará a interferência de dispositivos mais antigos e lentos nos dispositivos USB3 + muito mais rápidos em todas as camadas da implementação USB.

    
por 04.02.2018 / 13:56