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

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:

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

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

How to install CSF Firewall on CentOS 7

ConfigServer (CSF) is advanced open-source firewall for Linux. If you are like me, I don’t really care much for the native firewalld that’s included with RHEL7 releases, and I’ve used APF for years which is basically just a frontend for iptables. Here’s instructions on how to install it: 1. Disable firewalld systemctl stop firewalld systemctl […]

Read More

1 Comment

  • Ash on Monday, August 14, 2017

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

Leave a Reply

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

Tweeter button Facebook button Myspace button