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
Share:
7,198

Related videos on Youtube

troylatroy
Author by

troylatroy

Updated on September 18, 2022

Comments

  • troylatroy
    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 and Device = 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.