Bash USB供应商和产品ID到设备绑定
我有一个用于GNU/Linux上连接设备的USB视频和PID<例如,代码>045e:0084。我需要绑定,因此我将Bash USB供应商和产品ID到设备绑定,bash,usb,lsusb,Bash,Usb,Lsusb,我有一个用于GNU/Linux上连接设备的USB视频和PID045e:0084。我需要绑定,因此我将VID:PID的lsusb输出进行grep,并将其转换为udevadm查找可接受的格式。最后,我获取结果路径的basename。比如: bus_dev=$(lsusb|grep VID:PID...) # Grep / Sed magic to extract bus and device from VID and PID. path=$(udevadm info -q path -n /dev/
VID:PID
的lsusb
输出进行grep,并将其转换为udevadm
查找可接受的格式。最后,我获取结果路径的basename。比如:
bus_dev=$(lsusb|grep VID:PID...) # Grep / Sed magic to extract bus and device from VID and PID.
path=$(udevadm info -q path -n /dev/bus/usb/$bus_dev) # e.g., -n /dev/bus/usb/003/018
basename $path # e.g., /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.3/3-2.3.1
# e.g., yields 3-2.3.1
我可以这样使用它:
echo 3-2.3.1|sudo tee /sys/bus/usb/drivers/usb/unbind
从USB供应商处获得绑定和产品ID的首选方式是什么?您是指类似的方式吗
vidpid="1d6b:0002"
bus_dev=`lsusb | grep "ID\s$vidpid" | sed 's/^.*Bus\s\([0-9]\+\)\sDevice\s\([0-9]\+\).*$/\1\/\2/g' | tail -n 1`
path=$(udevadm info -q path -n /dev/bus/usb/$bus_dev)
basename $path
不完全是我想要的。我不需要“SED/Grep魔术”部分(这实际上是我试图避免的)。我已经做得很好了,但我希望能找到更传统、更不粗俗的东西。也许有一种方法可以从udev查询这个问题?我的和你的很相似:#$1-VID[:PID]usb_id_to_bind(){declare-r dev_name=“$(lsusb-sed-rn's_^Bus([0-9]{3})设备([0-9]{3}):id''1'.\u/dev/Bus/usb/\1/\2_p')“declare-r dev u path=“$(udevadm info-q path-n“$dev name”)“name”$dev basepath”}