Search code examples
usblinux-device-driverudev

remove usb node


My aim is to disable usb port usage except a specific kind of usb. Every time a usb device is inserted a udev rule is called and it runs a program to handle the work.

I can't unload usb_storage module since it is needed for usage, so how can i remove usb dev link if it doesn't meet my case?


Solution

  • unbind the device. Pass vendor id and product id to below script.

    VENDOR=$1
    PRODUCT=$2
    
    if [ n$VENDOR = n ] || [ n$PRODUCT = n ]; then
            echo "Unbinding the first non-hub device..."
    
            ID=`grep -l "^0$" /sys/bus/usb/drivers/usb/*/maxchild | sed -e "s|/sys/bus/usb/drivers/usb/\(.*\)/maxchild|\1|" | head -n 1`
    
            VENDOR=`cat /sys/bus/usb/drivers/usb/$ID/idVendor`
            PRODUCT=`cat /sys/bus/usb/drivers/usb/$ID/idProduct`
    
            echo $ID > /sys/bus/usb/drivers/usb/unbind
    
            echo "Device found ($VENDOR:$PRODUCT), and unbound!"
    
            exit 0
    fi
    

    Regards,
    Barun Parichha