testsAndMisc/linux_configuration/scripts/utils/toggle_wheel.sh

58 lines
1.5 KiB
Bash
Raw Normal View History

2025-01-11 13:35:06 +01:00
#!/bin/bash
# Replace these with your device's vendor and product IDs
2025-10-24 23:20:12 +02:00
# 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"
2025-01-11 13:35:06 +01:00
ACTION=$1
# Check if script is run as root
if [[ $EUID -ne 0 ]]; then
2025-11-01 15:36:22 +01:00
echo "This script must be run as root. Please run with sudo."
exit 1
2025-01-11 13:35:06 +01:00
fi
# Check if action parameter is provided
2025-11-01 15:36:22 +01:00
if [[ $ACTION != "on" && $ACTION != "off" ]]; then
echo "Usage: $0 [on|off]"
exit 1
2025-01-11 13:35:06 +01:00
fi
DEVICE_PATH=""
2025-10-24 23:20:12 +02:00
# Find the device path in sysfs (robust scan)
for d in /sys/bus/usb/devices/*; do
2025-11-01 15:36:22 +01:00
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
2025-01-11 13:35:06 +01:00
fi
2025-11-01 15:36:22 +01:00
fi
2025-01-11 13:35:06 +01:00
done
# Check if device was found
if [ -z "$DEVICE_PATH" ]; then
2025-11-01 15:36:22 +01:00
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
2025-01-11 13:35:06 +01:00
fi
# Enable or disable the device
2025-10-24 23:20:12 +02:00
if [ ! -e "$DEVICE_PATH/authorized" ]; then
2025-11-01 15:36:22 +01:00
echo "The 'authorized' attribute is not present at $DEVICE_PATH."
echo "This device may not support toggling via 'authorized'."
exit 1
2025-10-24 23:20:12 +02:00
fi
2025-01-11 13:35:06 +01:00
if [ "$ACTION" == "off" ]; then
2025-11-01 15:36:22 +01:00
echo '0' > "$DEVICE_PATH/authorized"
echo "Device at $(basename "$DEVICE_PATH") turned off."
2025-01-11 13:35:06 +01:00
elif [ "$ACTION" == "on" ]; then
2025-11-01 15:36:22 +01:00
echo '1' > "$DEVICE_PATH/authorized"
echo "Device at $(basename "$DEVICE_PATH") turned on."
fi