Find USB device's directory /sys/bus/usb/devices/ using idVendor/idProduct
7,198
If I understood your question, the following script should do the job:
#!/bin/bash
if [ $# -ne 2 ];then
echo "Usage: `basename $0` idVendor idProduct"
exit 1
fi
for X in /sys/bus/usb/devices/*; do
if [ "$1" == "$(cat "$X/idVendor" 2>/dev/null)" -a "$2" == "$(cat "$X/idProduct" 2>/dev/null)" ]
then
echo "$X"
fi
done
Related videos on Youtube
Author by
troylatroy
Updated on September 18, 2022Comments
-
troylatroy over 1 year
I'm trying to make a script that takes the product and vendor id printed by using
lsusb
, then checking against this ID to find the USB device's directory in/sys/bus/usb/devices
.I initially thought the Bus and Device number printed by lsusb would point to the appropriate folder. For example, if
Bus = 002
andDevice = 002
, the USB's directory would be/usb/devices/2-2
. Unfortunately, this turned out to not be the case.I can manually find the appropriate folder using this command I found in another thread:
for X in /sys/bus/usb/devices/*; do echo "$X" cat "$X/idVendor" 2>/dev/null cat "$X/idProduct" 2>/dev/null echo done
However, I need a script that can automate finding this folder.