Touchpad unresponsive after resuming from sleep
Fix Touchpad Not Responding After Resume
On some laptops equipped with a Synaptics RMI4 SMBus touchpad, the touchpad fails to respond after resuming from suspend. The kernel log displays the following messages:
rmi4_smbus: Failed to resume device: -6
Identify the Affected Module
To verify that your hardware is affected, run the following in administrator mode:
dmesg | grep -i rmi
If the second command outputs errors such as the following after resume:
rmi4_smbus 0-002c: Failed to resume device: -6
the solution described here applies to your situation.
Solution
Two files are provided here: a bash script that creates a SystemD service, and a desktop file to run it from the menus. You can install them in two ways:
- System-wide for all users
- Locally for your user only
Here is the content of the two files to create and install:
→ restart-touchpad-after-resume.sh
# restart-touchpad-after-resume.sh
#
# Fix touchpad not responding after resume from suspend,
# for devices using the Synaptics RMI4 SMBus driver (rmi_smbus).
# Tested on HP EliteBook 840 G1 running AnduinOS.
#
# This script creates and enables a systemd service that reloads
# the rmi_smbus kernel module after each resume from suspend.
#
# Only runs on laptops, detected via DMI chassis type.
# Chassis types considered as laptops: 8 (Portable), 9 (Laptop),
# 10 (Notebook), 11 (Sub Notebook).
# Detect chassis type
CHASSIS=$(cat /sys/class/dmi/id/chassis_type)
# Only proceed if we are on a laptop
if [[ "$CHASSIS" =~ ^(8|9|10|11)$ ]]; then
# Create the systemd service file
cat > /etc/systemd/system/touchpad-resume.service << EOF
[Unit]
Description=Restart touchpad after resume
After=suspend.target
[Service]
Type=oneshot
# Reload the rmi_smbus module to restore touchpad functionality
ExecStart=/bin/sh -c "rmmod rmi_smbus && modprobe rmi_smbus"
[Install]
WantedBy=suspend.target
EOF
# Enable the service
systemctl enable touchpad-resume.service
echo "touchpad-resume.service installed and enabled."
else
# Not a laptop, nothing to do
echo "Not a laptop (chassis type: $CHASSIS), skipping touchpad fix."
exit 0
fi
→ restart-touchpad-after-resume.desktop
Type=Application
Name=Fix Touchpad After Resume
Name[en]=Fix Touchpad After Resume
Name[es]=Reparar el touchpad después de la suspensión
Name[de]=Touchpad nach Ruhezustand reparieren
Name[it]=Ripristina il touchpad dopo la sospensione
Name[zh_CN]=休眠后修复触控板
Name[zh_TW]=休眠後修復觸控板
Name[pt]=Reparar o touchpad após a suspensão
Name[pt_BR]=Reparar o touchpad após a suspensão
Name[nl]=Touchpad herstellen na slaapstand
Name[pl]=Napraw touchpad po uśpieniu
Comment=Fix if touchpad stops working after suspend or hibernate
Comment[en]=Fix if touchpad stops working after suspend or hibernate
Comment[es]=Reparar si el touchpad deja de funcionar después de la suspensión o hibernación
Comment[de]=Reparieren, wenn das Touchpad nach dem Ruhezustand nicht mehr funktioniert
Comment[it]=Ripristina se il touchpad smette di funzionare dopo la sospensione o l'ibernazione
Comment[zh_CN]=如果触控板在休眠后停止工作,请修复
Comment[zh_TW]=如果觸控板在休眠後停止工作,請修復
Comment[pt]=Reparar se o touchpad parar de funcionar após a suspensão ou hibernação
Comment[pt_BR]=Reparar se o touchpad parar de funcionar após a suspensão ou hibernação
Comment[nl]=Herstel als het touchpad niet meer werkt na de slaapstand of hibernatie
Comment[pl]=Napraw, jeśli touchpad przestaje działać po uśpieniu lub hibernacji
Exec=pkexec restart-touchpad-after-resume.sh
Terminal=false
Icon=input-touchpad
Categories=System;
1. System-wide Installation (Administrator Privileges Required)
All following commands must be run with administrator privileges.
Copy the script and make it executable:
chmod +x /usr/local/bin/restart-touchpad-after-resume.sh
Copy the desktop file:
2. User Directory Installation (No Administrator Privileges Required)
Copy the script and make it executable:
chmod +x $HOME/.local/bin/restart-touchpad-after-resume.sh
If $HOME/.local/bin is not in your PATH, add the following line to your ~/.profile:
(Make sure ~/.local/bin exists.)
To append this directory to your PATH, add the following to the end of your ~/.profile:
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi
Copy the desktop file:
3. Enable and Start the Service
Once installed, run the script from the System menu as soon as you need it to enable the service.
Notes
- The module is named rmi_smbus with an underscore, not rmi4_smbus as shown in the kernel logs.
- This issue is common on HP, Lenovo, and Dell laptops from approximately the 2013-2016 generations.
- Tested on: HP EliteBook 840 G1 running AnduinOS.