Touchpad unresponsive after resuming from sleep

Last modified by Mélodie on 2026/05/24 23:34

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 get SMBus version number!
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 touchpad
dmesg | grep -i rmi

If the second command outputs errors such as the following after resume:

rmi4_smbus 0-002c: failed to get SMBus version number!
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

#!/bin/bash
# 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

[Desktop Entry]
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:

cp restart-touchpad-after-resume.sh /usr/local/bin/
chmod +x /usr/local/bin/restart-touchpad-after-resume.sh

Copy the desktop file:

cp restart-touchpad-after-resume.desktop /usr/share/applications/

2. User Directory Installation (No Administrator Privileges Required)

Copy the script and make it executable:

cp restart-touchpad-after-resume.sh $HOME/.local/bin/
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:

export PATH="$HOME/.local/bin:$PATH"

(Make sure ~/.local/bin exists.)

To append this directory to your PATH, add the following to the end of your ~/.profile:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
   PATH="$HOME/.local/bin:$PATH"
fi

Copy the desktop file:

cp restart-touchpad-after-resume.desktop $HOME/.local/share/applications/

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.

Langues / Languages

🇫🇷 Français | 🇬🇧 English