Comment find le slot PCI d'un controller USB sous Linux?

J'ai une machine Linux presque commune ici. Donc, il a un bus PCI (* -X, etc), sur que certains controllers USB, et j'ai des périphériques USB sur ces controllers USB. Semblable à ceci:

$ lspci|grep USB 00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller 00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller 00:13.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller 00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller 00:14.5 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller 00:16.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller 00:16.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller 02:00.0 USB controller: VIA Technologies, Inc. VL805 USB 3.0 Host Controller (rev 01) 

Et, il y a aussi un tree de périphérique USB, comme ceci:

 $ lsusb -t /: Bus 07.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/4p, 12M /: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/2p, 12M /: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/5p, 12M |__ Port 5: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/5p, 12M |__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 3: Dev 12, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 4: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 4: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/4p, 480M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/5p, 480M |__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M |__ Port 1: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M |__ Port 1: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M |__ Port 4: Dev 11, If 0, Class=Vendor Specific Class, Driver=r8712u, 480M |__ Port 3: Dev 3, If 0, Class=Vendor Specific Class, Driver=MOSCHIP usb-ethernet driver, 480M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/5p, 480M |__ Port 1: Dev 6, If 0, Class=Video, Driver=uvcvideo, 480M |__ Port 1: Dev 6, If 1, Class=Video, Driver=uvcvideo, 480M |__ Port 1: Dev 6, If 2, Class=Audio, Driver=snd-usb-audio, 480M |__ Port 1: Dev 6, If 3, Class=Audio, Driver=snd-usb-audio, 480M 

Donc, je vois mes controllers USB sur le bus PCI, ainsi que mes périphériques USB sur les controllers USB.

Mais je ne sais pas, quel numéro de controller USB (sur le bus USB) appartient à quel numéro de bus PCI!

Comment find ça?

Cette information peut être extraite de l'input iSerial de la sortie verbeuse de lsusb . Le plus simple est de transmettre la sortie à la visionneuse less et de searchr manuellement avec / , ou par exemple avec grep :

 $ lsusb -v 2>/dev/null | grep '^Bus\|iSerial' Bus 001 Device 029: ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard iSerial 0 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub iSerial 1 0000:00:1d.7 Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub iSerial 1 0000:00:1d.3 Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub iSerial 1 0000:00:1d.2 ...