USBをマイコンピュータのポートに接続した後、これを行うと、lsusb
あなたが探しているデバイスが表示されます。
Bus 001 Device 004: ID 04f2:b573 Some Manufacturer
以下にデバイスをリストすると、...などのような多くの/dev/
デバイスパスが表示されます。私が理解しているように、これらのパスの1つは私のUSBデバイス、または私のUSBデバイスが接続されている場所です。/dev/tty0
/dev/ttyUSB0
どれがIDを持っているのか、どうすればわかりますか04f2:b573
?
この問題しかし、私と似ています(参照受け入れられた回答$ID_SERIAL
)正確には何か、私が探しているIDと同じように設定する方法、さらには正しいパスが何であるかわかりません(その例では/dev/ttyACM0
、、、、..などの複数のデバイスパスを表示するためです)。/dev/sdb
/dev/input/event5
また、2番目の答えは、デバイスがに接続されていることを知っていると仮定します。/dev/ttyUSB0
これは事前にわかりません(しかし、この特定のパスでテストしても何も提供されませんでした)。
ベストアンサー1
どれが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
私の既存のHuawei携帯電話は2つのシリアル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