[Fix] Redrix Trackpad Deadzone & Aiming Issues After Lid-Close Suspend
Hey everyone,
While recent kernel updates (6.19.9+) improved the situation, I was still getting a dead zone on the bottom half of the trackpad (lost pressure clicks and erratic aiming) after waking from sleep, but only when sleeping due to closing the lid.
Through some testing, I figured out exactly what is causing this and how to automate the fix.
The Root Cause: GUI Suspend vs. Lid Close
If you suspend via the OS power menu, the trackpad wakes up fine. The issue only happens when you close the lid.
When the lid closes, the ChromeOS Embedded Controller (EC) intercepts the physical hardware switch and alters the trackpad’s state before the Linux kernel goes to sleep. When you open the lid, the i2c_hid_acpi driver is now out of sync with the hardware, leaving the bottom sensor grid half-dead.
The Manual Fix (No Reboot Required)
If your trackpad is currently messed up, you don’t need to restart. You just need to drop and reload the driver to force a fresh hardware handshake. Run this in your terminal (your trackpad will die for 2 seconds, then come back fully functional):
Bash
sudo modprobe -r i2c_hid_acpi && sleep 2 && sudo modprobe i2c_hid_acpi
The Permanent Automatic Fix
To stop this from happening entirely, we need to sever the connection to the trackpad driver before the EC corrupts the state during a lid close, and reload it on wake.
You can automate this by creating a systemd sleep hook. Just paste this entire block into your terminal to create and enable the script:
cat << 'EOF' | sudo tee /usr/lib/systemd/system-sleep/trackpad-fix.sh > /dev/null
#!/bin/bash
case $1/$2 in
pre/*)
# Unbind the trackpad immediately before sleep
modprobe -r i2c_hid_acpi
;;
post/*)
# Reload the driver clean upon wake
modprobe i2c_hid_acpi
;;
esac
EOF
sudo chmod +x /usr/lib/systemd/system-sleep/trackpad-fix.sh
Once that’s applied, you can close the lid as much as you want. The system will cleanly drop the module on the way down and reload it on the way up, completely bypassing the ChromeOS EC quirk.