특정 USB 장치가 연결된 포트의 PCI_ID를 찾는 방법

특정 USB 장치가 연결된 포트의 PCI_ID를 찾는 방법

Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p아래 출력에서 ​​pci_id를 찾고 싶습니다.

/:  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

이 세 가지 중 하나에 매핑할 방법을 찾을 수 없는 것 같습니다.

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)

답변1

Debain discover패키지를 사용할 수 있는 경우 원하는 정보를 얻을 수 있습니다.

# discover --vendor-id --model-id pci | grep USB

답변2

좀 더 구글링하고, 생각하고, 시행착오를 겪은 끝에 다음과 같은 결론을 내렸습니다.

#!/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}' )

실행하면 위 시나리오에 필요한 결과를 얻을 수 있습니다.

./get_usb.sh
8086:8c26

관련 정보