inside the mind of a linux admin

Touchpad stops working after sleep + resume (Fedora 26 on Dell XPS)

After recently upgrading my Dell XPS 13 w/Touchscreen to Fedora 26, the touchpad suddenly stopped working upon resuming from sleep mode. It was reproduced 100% of the time, and required a complete restart in order to get the touchpad working again.

There have been several forum posts and bug reports regarding others experiencing these exact same symptoms, so I figured I’d share a hacky workaround until the bug is fixed upstream.

If your system is similar to mine and has a touch screen, the i2c_hid module needs to be reloaded in order to properly enable both the touchpad and touch screen.

To confirm this workaround fix will work on your system, wake your system up from a sleep and confirm the touchpad is non-responsive.

Then open a terminal and run:

sudo rmmod i2c_hid
sudo modprobe i2c_hid

If this worked, your touchpad should have sprung back to life, and your dmesg output should look similar to this:

[ 4011.246256] rmi4_f01 rmi4-01.fn01: found RMI device, manufacturer: Synaptics, product: s3203, fw id: 1522295
[ 4011.310335] input: Synaptics s3203 as /devices/pci0000:00/INT33C3:00/i2c-8/i2c-DLL060A:00/0018:06CB:2734.0003/input/input941
[ 4011.311499] hid-rmi 0018:06CB:2734.0003: input,hidraw1: I2C HID v1.00 Pointer [DLL060A:00 06CB:2734] on i2c-DLL060A:00
[ 4043.232194] rmi4_f01 rmi4-02.fn01: found RMI device, manufacturer: Synaptics, product: s3203, fw id: 1522295
[ 4043.297788] input: Synaptics s3203 as /devices/pci0000:00/INT33C3:00/i2c-8/i2c-DLL060A:00/0018:06CB:2734.0004/input/input942
[ 4043.298722] hid-rmi 0018:06CB:2734.0004: input,hidraw1: I2C HID v1.00 Pointer [DLL060A:00 06CB:2734] on i2c-DLL060A:00

If it did not work, your system might use a different module.

Try this instead:

sudo rmmod rmi_smbus
sudo modprobe rmi_smbus

Great, but how do I make this workaround permanent?

In order to avoid having to remove and reload the module every time you resume your system, I created a simple systemd BASH script which will invoke the commands for you automatically and seamlessly enable your touchpad upon waking up.

If you are running a systemd based system, simply run these commands (replacing the module name with the one that worked above):

echo 'if [ "$1" = "post" ] && exec rmmod i2c_hid ; modprobe i2c_hid' > /usr/lib/systemd/system-sleep/
chmod +x /usr/lib/systemd/system-sleep/

Now go ahead and put your system to sleep, wait 5 seconds, and attempt to resume.

Your touchpad should now be working normally again.

Note: I recommend removing this script every few months and running a dnf upgrade to see if the bug fix has been implemented natively upstream yet.

Related Posts

How to revert back to X11 / Xorg from Wayland

Wayland is intended as a “simpler replacement for X”, and is getting quite a bit of hype around the Linux community. So much so, that it’s the default in the latest versions of Fedora, GNOME, KDE and others. While Wayland may be the future, it really is in future. At least for Ubuntu 17.10. The […]

Read More

Fun with fsck on Fedora – avoiding mounted partitions and handling LUKS encrypted ones

I run Fedora on a few of my machines, and inevitably over the course of time the filesystem will need to be repaired because of orphaned inodes, wrong free byte counts, etc. Typically when EXT4 errors are detected during boot, Fedora will detect this and offer to drop you into “Emergency mode” or continue. example: […]

Read More


  • Ash on Monday, August 14, 2017

    Hah, what an odd bug! This worked for me on a Dell XPS 13 though, thanks!

  • Peter on Tuesday, January 23, 2018

    For me, it was the rmi_smbus module, that I had to reload. Thanks for the tip!

  • Adam on Thursday, July 18, 2019

    Genius! 😀

Leave a Reply

Your email address will not be published. Required fields are marked *

Twitter: kireguy

Tweeter button Facebook button Myspace button