Fix a Touchpad Not Working on Linux

Quick fix

First rule out a disabled touchpad: press the touchpad toggle key (usually Fn + an F-key with a touchpad icon), then check it is enabled in Settings. On GNOME:

gsettings set org.gnome.desktop.peripherals.touchpad send-events 'enabled'
gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true

If the touchpad doesn't appear at all in sudo libinput list-devices, it's a kernel driver issue: reload the driver (Step 3) or try the BIOS and i8042 fixes below.

Identify your case

SymptomLikely cause
Cursor moves but tapping doesn't clickTap-to-click is off (libinput's default)
Touchpad worked, now completely deadDisabled by hotkey or setting, or "disable while external mouse" is on
Never worked since install, USB mouse fineKernel driver (i2c_hid, psmouse) not binding; needs newer kernel or BIOS change
Stops after suspend/resumeDriver doesn't resume; reload the module
Jumpy cursor, accidental clicks while typingPalm detection / disable-while-typing settings
Works only as a basic mouse, no scrolling or gesturesDetected as a PS/2 mouse instead of a touchpad

Step 1: Is the touchpad detected?

libinput is the input library used by every current desktop on Wayland and X11. List what it sees (install libinput-tools on Ubuntu/Debian or libinput-utils on Fedora if the command is missing):

sudo libinput list-devices | grep -A3 -i -E 'touchpad|trackpad'

Example output:

Device:           ELAN0712:00 04F3:30FD Touchpad
Kernel:           /dev/input/event7
Capabilities:     pointer gesture
Tap-to-click:     disabled

A Device ... Touchpad line means the kernel and libinput see it: the problem is a setting (Step 2). If there is no touchpad, check the raw kernel list:

grep -i -E 'name|handlers' /proc/bus/input/devices | grep -i -A1 -E 'touchpad|elan|synaptics|alps|gxtp|psmouse|i2c'

If the only pointing device is PS/2 Generic Mouse, the touchpad is running in legacy mouse mode (see PS/2 mode). If it isn't listed at all, go to Step 3.

Watch live events

sudo libinput debug-events --device /dev/input/event7

Move your finger. If events scroll by, the hardware and driver work and your desktop is ignoring the device, which points back to a disabled setting. Press Ctrl+C to stop.

Check the toggle key and the kernel's view of it

Most laptops have an Fn key combination that turns the touchpad off. On many models it is handled in firmware and invisible to Linux, so the touchpad simply stops sending events. On others the key sends XF86TouchpadToggle to the desktop, which flips the setting. You can watch for the key press with:

sudo libinput debug-events --show-keycodes | grep -i touchpad

If pressing the key prints KEY_TOUCHPAD_TOGGLE (or KEY_F21 on some models), the desktop is in control and the setting in Step 2 decides the state. If nothing prints and the touchpad is dead, press the key once more: firmware-level toggles often have no visible indicator.

Step 2: Desktop settings

GNOME (Ubuntu, Fedora Workstation)

Settings → Mouse & Touchpad → Touchpad: make sure the switch is on and enable Tap to Click. The same with gsettings:

gsettings get org.gnome.desktop.peripherals.touchpad send-events
gsettings set org.gnome.desktop.peripherals.touchpad send-events 'enabled'
gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true
gsettings set org.gnome.desktop.peripherals.touchpad disable-while-typing true

send-events set to disabled-on-external-mouse turns the touchpad off whenever a mouse is plugged in, including some keyboards that register as a mouse. More GNOME tweaks are in GNOME customization.

KDE Plasma

System Settings → Mouse & Touchpad → Touchpad: enable the device, Tap-to-click, and check Disable touchpad when mouse is plugged in. KDE also has a Touchpad toggle shortcut under Shortcuts; a stray press turns it off. See the KDE Plasma guide for where settings live in Plasma 6.

Xfce, Cinnamon, MATE (X11)

Use the Mouse and Touchpad settings dialog. If tapping still doesn't work on an X11 session, set it for libinput directly:

sudo mkdir -p /etc/X11/xorg.conf.d
sudo tee /etc/X11/xorg.conf.d/30-touchpad.conf <<'EOF'
Section "InputClass"
    Identifier "touchpad"
    MatchIsTouchpad "on"
    Driver "libinput"
    Option "Tapping" "on"
    Option "NaturalScrolling" "true"
EndSection
EOF

Log out and back in. On X11, xinput list and xinput list-props ID show the active options. These commands do nothing on Wayland sessions; the background is in Wayland vs X11.

Remove the synaptics driver

If xserver-xorg-input-synaptics (Ubuntu/Debian) or xorg-x11-drv-synaptics (Fedora) is installed, it takes priority over libinput on X11 and ignores the desktop's settings. Remove it unless you configured it on purpose: sudo apt remove xserver-xorg-input-synaptics.

Step 3: Kernel driver problems

Modern touchpads connect over I2C and are handled by i2c_hid_acpi plus a vendor or multitouch driver (hid_multitouch, elan_i2c). Older ones use PS/2 through psmouse. Check the boot log:

sudo dmesg | grep -i -E 'i2c_hid|i2c-hid|elan|synaptics|alps|psmouse|touchpad|hid-multitouch'
lsmod | grep -E 'i2c_hid|hid_multitouch|psmouse|elan'

Example output of a failure:

i2c_hid_acpi i2c-ELAN0712:00: failed to reset device.
i2c_hid_acpi i2c-ELAN0712:00: can't add hid device: -61

Reload the driver

# I2C touchpads
sudo modprobe -r i2c_hid_acpi
sudo modprobe i2c_hid_acpi
# PS/2 touchpads
sudo modprobe -r psmouse
sudo modprobe psmouse

If this brings it back, the device failed to initialise at boot or after resume; the suspend section shows how to automate it.

Update the kernel

Touchpads on laptops newer than your distro frequently need driver quirks from newer kernels. Ubuntu 26.04 runs Linux 7.0. On Ubuntu 24.04 or Mint 22.3, install the HWE kernel (sudo apt install --install-recommends linux-generic-hwe-24.04); Fedora and Arch ship current kernels with normal updates. A live USB of the newest release is a quick test before changing anything.

Missing GPIO/pinctrl drivers

I2C touchpads need the platform's I2C and GPIO controller drivers (intel_lpss, pinctrl_*, i2c_designware on Intel; pinctrl_amd on AMD). Distro kernels include them; custom or minimal kernels sometimes don't. lsmod | grep -E 'lpss|pinctrl|designware' should show them loaded.

Step 4: BIOS/UEFI settings

Several laptop firmwares have a touchpad option worth checking:

  • Touchpad mode "Advanced" vs "Basic" (ASUS, Acer, some Lenovo): Basic presents the touchpad as a PS/2 mouse. Advanced or Precision enables I2C mode, which Linux handles better on current hardware.
  • Internal pointing device: Enabled (Dell, Lenovo, HP): make sure it hasn't been turned off.

Save, power off fully, and boot again. Firmware updates (through Windows or fwupdmgr on Linux) also fix touchpad bugs on many models:

fwupdmgr refresh
fwupdmgr get-updates

PS/2 mode and i8042 kernel options

If the touchpad works only as a basic mouse, or not at all on older laptops, the i8042 keyboard/mouse controller may be misdetected. These kernel parameters change how Linux probes it. Test each one at boot first (press e in GRUB and add it to the linux line), then make the working one permanent as shown in how to set kernel parameters:

ParameterWhat it does
i8042.resetResets the controller at boot; fixes touchpads that come up dead
i8042.nomuxDisables multiplexing mode, a common fix for Synaptics and ALPS pads
i8042.noloopDisables the AUX loopback check that confuses some controllers
i8042.nopnpIgnores PnP/ACPI data for the controller
psmouse.synaptics_intertouch=1Uses the faster SMBus/RMI4 path for Synaptics touchpads that support it

Try them one at a time; combining several can make things worse. A typical working line on an older laptop is i8042.reset i8042.nomux.

Suspend, palm and gesture problems

Touchpad stops after suspend

If reloading the module (Step 3) fixes it, automate that with a systemd sleep hook:

sudo tee /usr/lib/systemd/system-sleep/touchpad <<'EOF'
#!/bin/sh
case "$1" in
  post) modprobe -r i2c_hid_acpi; modprobe i2c_hid_acpi ;;
esac
EOF
sudo chmod 755 /usr/lib/systemd/system-sleep/touchpad

Use psmouse instead of i2c_hid_acpi for PS/2 touchpads. This is a workaround; a newer kernel often fixes resume properly.

Jumpy cursor, palm clicks and gestures

  • Accidental clicks while typing: enable Disable while typing (GNOME: the gsettings key above; KDE: Touchpad settings).
  • Jumpy or erratic cursor: often a wrong device size or pressure range. libinput has per-model quirks; check libinput quirks list /dev/input/eventX and report your model upstream if nothing matches.
  • No gestures: GNOME and KDE on Wayland support three- and four-finger gestures natively. On X11 sessions, gestures need extra tools such as touchegg.

Distro notes

  • Ubuntu 26.04 and Fedora 44 run GNOME 50 on Wayland only, so all touchpad settings go through GNOME Settings or gsettings; Xorg config files are ignored.
  • Ubuntu 24.04 and Linux Mint 22.3: Mint's Cinnamon edition runs on X11 by default, so the Xorg snippet above applies there. On Mint, also check Mouse and Touchpad → Touchpad → Disable touchpad, which has an "when a mouse is attached" option.
  • Arch: install libinput (pulled in by every desktop) and, for X11 sessions, xf86-input-libinput. Avoid xf86-input-synaptics.
  • openSUSE: same libinput stack; YaST has no touchpad module, so use the desktop's settings.
  • Debian 13: libinput-tools provides the libinput command; the rest matches Ubuntu.

Still not working?

Collect sudo libinput list-devices, cat /proc/bus/input/devices, the dmesg lines above and uname -r. Test a live USB of the newest Ubuntu or Fedora: if the touchpad works there, your fix is a newer kernel. The libinput documentation and the Arch Wiki libinput page cover advanced quirks. For other Ubuntu issues see the Ubuntu troubleshooting hub.

Frequently asked questions

How do I re-enable a disabled touchpad on Linux?

Press the touchpad key (often Fn plus an F-key) or turn it on in Settings → Mouse & Touchpad. In GNOME you can also run gsettings set org.gnome.desktop.peripherals.touchpad send-events 'enabled'.

Why does tap-to-click not work on Linux?

libinput disables tapping by default; desktops turn it on with a setting. Enable Tap to Click in GNOME or KDE settings, or set Option "Tapping" "on" in an Xorg config for X11 desktops like Xfce.

Should I install the synaptics driver?

No. The xserver-xorg-input-synaptics driver is unmaintained and only works on X11. libinput handles all current touchpads on both Wayland and X11.

My touchpad is not in libinput list-devices. What does that mean?

The kernel did not create an input device for it. Check dmesg for i2c_hid or psmouse errors, check the BIOS touchpad mode, and try a newer kernel.

Spotted a mistake or a command that no longer works? Send a correction — pages are re-checked when reports come in.