Usb
獲取USB給定設備ID的設備路徑
將 USB 插入我機器的埠後,如果我這樣做了,
lsusb
我會看到我正在尋找的設備:
Bus 001 Device 004: ID 04f2:b573 Some Manufacturer
如果我在 下列出設備
/dev/
,我可以看到很多設備路徑,例如/dev/tty0
,/dev/ttyUSB0
…等。據我了解,這些路徑之一將是我的 USB 設備,或者是我的 USB 設備連接的位置。我怎麼知道哪個是有 ID 的
04f2:b573
?這個問題與我的相似,但是(參考接受的答案)我不知道究竟是什麼
$ID_SERIAL
,或者我如何將它設置為等於我正在尋找的 Id,甚至什麼是正確的路徑(因為他的範例顯示了多個設備路徑,例如/dev/ttyACM0
,/dev/sdb
,/dev/input/event5
…)此外,第二個答案假設我知道設備已連接到
/dev/ttyUSB0
,而我事先並不知道(順便說一下,在此特定路徑上測試它不會給我任何設備)。
我怎麼知道哪個是有 ID 的
04f2:b573
?可能有更好的方法來做到這一點,但一種快速而骯髒的方法是:
find_by_id(){ v=${1%:*}; p=${1#*:} # split vid:pid into 2 vars v=${v#${v%%[!0]*}}; p=${p#${p%%[!0]*}} # strip leading zeros grep -il "^PRODUCT=$v/$p" /sys/bus/usb/devices/*:*/uevent | sed s,uevent,, | xargs -r grep -r '^DEVNAME=' --include uevent } find_by_id 04f2:b573
我的舊華為手機顯示為兩個串列 tty:
$ find_by_id 12d1: /sys/bus/usb/devices/3-1:1.0/ttyUSB0/tty/ttyUSB0/uevent:DEVNAME=ttyUSB0 /sys/bus/usb/devices/3-1:1.1/ttyUSB1/tty/ttyUSB1/uevent:DEVNAME=ttyUSB1
您可以將最後一個 grep 更改為
xargs -r egrep -rB2 '^DEVNAME=|^IFINDEX=' --include uevent
為了也找到USB網路介面:
$ find_by_id 0e8d: /sys/bus/usb/devices/1-6.2.3:1.0/net/usb0/uevent-INTERFACE=usb0 /sys/bus/usb/devices/1-6.2.3:1.0/net/usb0/uevent:IFINDEX=10 $ find_by_id 03f0: /sys/bus/usb/devices/1-6.3:1.1/usbmisc/lp1/uevent-MAJOR=180 /sys/bus/usb/devices/1-6.3:1.1/usbmisc/lp1/uevent-MINOR=1 /sys/bus/usb/devices/1-6.3:1.1/usbmisc/lp1/uevent:DEVNAME=usb/lp1