Se o pacote Debain discover
estiver disponível, ele fornecerá as informações que você está vendo
# discover --vendor-id --model-id pci | grep USB
Eu gostaria de encontrar o pci_id de Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p
na saída abaixo.
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 5, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 2: Dev 7, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 10, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 12M
Não consigo encontrar uma maneira de mapear isso para qualquer um desses três:
lspci -nn | grep USB
00:14.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI [8086:8c31] (rev 05)
00:1a.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 [8086:8c2d] (rev 05)
00:1d.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 [8086:8c26] (rev 05)
Se o pacote Debain discover
estiver disponível, ele fornecerá as informações que você está vendo
# discover --vendor-id --model-id pci | grep USB
Depois de mais algumas pesquisas, algumas ideias e um pouco de avaliação & erro eu vim com isso:
#!/bin/bash
[ -h /sys/class/tty/ttyUSB0 ] || exit 1
pci_id=$( /usr/bin/realpath /sys/class/tty/ttyUSB0 | awk -F'/' '{print gensub(/....:(.*)/, "\1","1",$5)}' )
usb_id=$( lspci -n| awk -v id=$pci_id '$0 ~ id {print $3}' )
que, quando executado, me dá o resultado desejado para o cenário acima:
./get_usb.sh
8086:8c26