#Touchpad Not Working After System Update

1 messages · Page 1 of 1 (latest)

north star
#

Hello,
My laptop’s touchpad suddenly stopped working right after a recent system update. I’ve spent the last three days trying multiple fixes, but without success. An external mouse works, but I rely heavily on the touchpad for mobility.

Reinstalling the entire system isn’t an option at the moment because I have important work-related data and configurations on this machine.

Could you please assist me in diagnosing and resolving this issue?

Thank you.

#

What’s Working

  • libinput list-devices (run with sudo because of seat permissions) shows ELAN0709:00
    04F3:31BF Touchpad on /dev/input/event15 with pointer/gesture capability, so the
    device is detected at the kernel/libinput level.
  • Hyprland is still sourcing the stock Omarchy configs (~/.config/hypr/hyprland.conf,
    input.conf) and nothing there disables the touchpad or cursor.
  • dmesg | grep -i elan shows the touchpad driver loading without errors.

What I Tried

  • Reloaded the I²C HID driver stack to force the touchpad to re-enumerate:

    sudo modprobe -r hid_multitouch i2c_hid_acpi i2c_hid
    sudo modprobe i2c_hid_acpi
    (After this the kernel created a fresh event15 node, but motion is still missing.)

  • Verified input events directly:

    sudo libinput debug-events --device /dev/input/event15
    (Only the initial DEVICE_ADDED line prints; no motion events come through.)

  • Gathered supporting info for others to review:

    • sudo libinput list-devices
    • sudo dmesg | grep -i elan
    • hyprctl instances
    • Tail of /run/user/1000/hypr/<instance>/hyprland.log
    • pacman -Qi libinput and recent /var/log/pacman.log entries showing the updates
      that preceded the issue.
#

Downgraded both the userspace driver and kernel so you can test the regression on older
bits:

  • Rolled libinput back to 1.29.1-1 straight from /var/cache/pacman/pkg using sudo
    pacman -U --noconfirm /var/cache/pacman/pkg/libinput-1.29.1-1-x86_64.pkg.tar.zst,
    then rechecked with pacman -Qi libinput. Unfortunately sudo libinput debug-events
    --device /dev/input/event15 still only prints the DEVICE_ADDED line—no motion data
    yet.
  • Downgraded the main linux package to 6.17.7.arch1-1 via sudo pacman -U --noconfirm /
    var/cache/pacman/pkg/linux-6.17.7.arch1-1-x86_64.pkg.tar.zst. Initramfs rebuilt
    cleanly (only benign firmware warnings).
north star
#

but i found out that when i go back to a snapashot the touchpad works but right after rebooting the touchpad stops working anymore

#
  1. Modified /etc/mkinitcpio.conf
    • Changed: MODULES=(btrfs)
    • To: MODULES=(btrfs i2c_hid i2c_hid_acpi hid_multitouch)
  2. Rebuilt the initramfs with mkinitcpio -P

Why this fixes it:

Your touchpad uses the i2c-hid driver. By adding these modules to the MODULES array, they load very early during boot (in the initial ramdisk), before anything else can interfere.

Previously, these modules loaded later during boot, and something (likely power management) was putting the touchpad device to sleep before the driver could properly initialize it.

Now the driver will be ready immediately when the kernel starts, so the touchpad gets initialized correctly.

#

“It took me three days to figure this out on my own, so congratulations to me for solving it — and thanks to absolutely no one for the help.
Special shout-out to @halcyon heart for the legendary advice to ‘try touching the touchpad.’ Truly groundbreaking.”

halcyon heart
north star
#

This solution won't work if input:touchpad:disable_while_typing or cursor:hide_on_key_press are enabled. It will also break if you enable these functions after applying the solution, since they work together until the system reboots.

north star
burnt phoenix
#

@north star one thing - make sure that you add those modules to your defaults. If you are using Limine then you need to add them to /etc/default/limine, to the line that starts with KERNEL_CMDLINE[default]="..."

#

otherwise, when you next update your system they will be lost from your bootloader

#

although that might not be necessary if you added directly to your mkinitcpio.conf

#

not sure tbh

north star
#

**“Thanks a lot for the tips, I really appreciate you taking the time to explain it!

Just to share what I learned while troubleshooting this:

  • The MODULES=(btrfs i2c_hid i2c_hid_acpi hid_multitouch) entries in mkinitcpio.conf seem to persist fine across updates, since Arch rebuilds the initramfs automatically with mkinitcpio -P during kernel upgrades.
  • And from what I understood, the Limine KERNEL_CMDLINE part seems more for kernel parameters, while the touchpad stuff needs to be in the initramfs itself.

I also saved all the important steps in a little .md file so if the touchpad ever breaks again, I can just give that to Claude code/codex and get the fix instantly. Makes life easier 😅
Thanks again for the help, really means a lot!”**

#

@burnt phoenix 🫡

granite finch
#

it will be good if you share the file too

north star
north star
# north star

@granite finch are you talking about this one or the hole /etc/mkinitcpio.conf file ??

granite finch
#

i was talking about this only