diff --git a/scripts/toggle_wheel.sh b/scripts/toggle_wheel.sh index efd5612..96e586b 100755 --- a/scripts/toggle_wheel.sh +++ b/scripts/toggle_wheel.sh @@ -1,8 +1,10 @@ #!/bin/bash # Replace these with your device's vendor and product IDs -VENDOR_ID="c24f" -PRODUCT_ID="046d" +# Note: lsusb prints as VENDOR:PRODUCT (e.g., 046d:c24f for Logitech G29) +# sysfs expects idVendor=046d and idProduct=c24f +VENDOR_ID="046d" +PRODUCT_ID="c24f" ACTION=$1 @@ -20,12 +22,13 @@ fi DEVICE_PATH="" -# Find the device path in sysfs -for sysdevpath in $(find /sys/bus/usb/devices/ -name idVendor); do - if [[ $(cat "$sysdevpath") == "$VENDOR_ID" ]]; then - parentdir="$(dirname "$sysdevpath")" - if [[ $(cat "$parentdir/idProduct") == "$PRODUCT_ID" ]]; then - DEVICE_PATH="$parentdir" +# Find the device path in sysfs (robust scan) +for d in /sys/bus/usb/devices/*; do + if [[ -f "$d/idVendor" && -f "$d/idProduct" ]]; then + v=$(cat "$d/idVendor") + p=$(cat "$d/idProduct") + if [[ "$v" == "$VENDOR_ID" && "$p" == "$PRODUCT_ID" ]]; then + DEVICE_PATH="$d" break fi fi @@ -33,15 +36,22 @@ done # Check if device was found if [ -z "$DEVICE_PATH" ]; then - echo "Device with Vendor ID $VENDOR_ID and Product ID $PRODUCT_ID not found." + echo "Device with Vendor ID $VENDOR_ID and Product ID $PRODUCT_ID not found in /sys/bus/usb/devices." + echo "Tip: Run 'lsusb | grep ${VENDOR_ID}:${PRODUCT_ID}' to verify it's connected." exit 1 fi # Enable or disable the device +if [ ! -e "$DEVICE_PATH/authorized" ]; then + echo "The 'authorized' attribute is not present at $DEVICE_PATH." + echo "This device may not support toggling via 'authorized'." + exit 1 +fi + if [ "$ACTION" == "off" ]; then echo '0' > "$DEVICE_PATH/authorized" - echo "Device turned off." + echo "Device at $(basename "$DEVICE_PATH") turned off." elif [ "$ACTION" == "on" ]; then echo '1' > "$DEVICE_PATH/authorized" - echo "Device turned on." + echo "Device at $(basename "$DEVICE_PATH") turned on." fi \ No newline at end of file