【问题标题】:USB Vendor and Product ID to Device BindingUSB 供应商和产品 ID 到设备绑定
【发布时间】:2012-09-16 17:28:10
【问题描述】:

我有一个用于 GNU / Linux 上连接设备的 USB VID 和 PID。 045e:0084,例如。我想要绑定,所以我将lsusb 的输出grep 为VID:PID,并将其按摩成udevadm 查找可接受的格式。最后,我采用结果路径的基本名称。比如:

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 获取绑定的首选方式是什么?

【问题讨论】:

    标签: bash usb lsusb


    【解决方案1】:

    你的意思是这样的?

    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}) Device ([0- 9]{3}): ID '"$1"'.*_/dev/bus/usb/\1/\2_p')" 声明 -r dev_path="$(udevadm info -q path -n"$dev_name" )" 基本名称 "$dev_path" }
    猜你喜欢
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2011-01-02
    • 1970-01-01
    相关资源
    最近更新 更多