A Bash script that prevents USB mice from waking your laptop while preserving keyboard wake-up functionality.
When your laptop is suspended/sleeping, connected USB mice can accidentally wake it up with the slightest movement. This was very annoying, especially when my table is pretty wobbly and would trigger wake up all the time. This script solves that problem by disabling wake-up for mice while keeping keyboard wake-up enabled.
- Automatically detects connected USB mice
- Disables wake-up immediately for currently connected mice
- Creates persistent udev rules so settings survive reboots and reconnections
- Preserves keyboard wake-up functionality
- Safe to run (requires explicit confirmation)
- Color-coded output for better readability
- Linux system with udev
- Bash
- sudo privileges
lsusbcommand (usually fromusbutilspackage)
- Clone or download the script:
git clone https://github.com/nojusmorkunas/disable-mouse-wakeup.git
cd disable-mouse-wakeup- Make the script executable:
chmod +x disable-mouse-wakeup.shSimply run the script (do NOT use sudo directly):
./disable-mouse-wakeup.shThe script will:
- Scan for connected USB mice
- Show you what it found
- Ask for confirmation
- Disable wake-up for detected mice
- Create a udev rule at
/etc/udev/rules.d/90-disable-mouse-wakeup.rules
Disable Mouse Wake-up Script
Scanning for USB mice...
Found mouse: Logitech USB Receiver (046d:c52b)
This script will:
1. Immediately disable wake-up for currently connected mice
2. Create a udev rule to automatically disable wake-up for these mice when plugged in
3. Preserve keyboard wake-up functionality
Continue? (y/N):
-
Detection: Scans
lsusboutput for devices matching common mouse patterns:- Device name contains "mouse"
- Known mouse vendor IDs (Logitech, etc.)
- Wireless dongles and receivers
-
Immediate Action: Writes
disabledto/sys/bus/usb/devices/*/power/wakeupfor detected mice -
Persistence: Creates a udev rule that automatically applies the setting whenever the mouse is plugged in
To restore mouse wake-up functionality:
sudo rm /etc/udev/rules.d/90-disable-mouse-wakeup.rules
sudo udevadm control --reload-rulesThen manually re-enable wake-up if needed:
echo 'enabled' | sudo tee /sys/bus/usb/devices/*/power/wakeupThe script uses heuristics to detect mice. If your mouse isn't detected, you can manually find its vendor/product ID:
lsusbThen manually create a udev rule in /etc/udev/rules.d/90-disable-mouse-wakeup.rules:
SUBSYSTEM=="usb", ATTR{idVendor}=="XXXX", ATTR{idProduct}=="YYYY", ATTR{power/wakeup}="disabled"
Replace XXXX and YYYY with your mouse's vendor and product IDs.
If the mouse still wakes the system after a reboot:
- Verify the udev rule exists:
cat /etc/udev/rules.d/90-disable-mouse-wakeup.rules - Reload udev rules:
sudo udevadm control --reload-rules - Reconnect the mouse
Do NOT run the script with sudo directly. Run it as a normal user and it will prompt for sudo when needed. This is a safety feature.
The script recognizes these common vendor IDs:
046d- Logitech1bcf- Sunplus Innovation Technology258a- Roytek093a- Pixart Imaging
And devices with names containing:
- "Mouse"
- "Wireless Dongle"
- "Receiver"
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit issues or pull requests.