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

synergy: How to enable crypto (encryption) and generate SSL certificate

The newer Linux versions of the popular mouse/keyboard sharing application “synergy” now has built in encryption. Here’s how to configure it: Just simply passing the –enable-crypto flag on your synergy server without having a proper SSL certificate will result in the inability to connect to clients and generate an error message similar to this in […]

Read More

Change Number Pad Delete (dot) key from a comma in Ubuntu Linux

I recently purchased a new keyboard and updated to the latest Ubuntu, I’m also an avid user of the number pad for quick input when dealing with spreadsheets or accounting. I found that my num pad’s delete key (“.”) was outputting a comma (“,”) instead. Pretty annoying? I agree, but this can be very easily […]

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 *

This site uses Akismet to reduce spam. Learn how your comment data is processed.