Framework 12 + Omarchy Quattro dead touchpad after hibernation / reboot

System specs :

• Framework Laptop 12, i5-1334U
• BIOS 03.07
• Kernel 7.1.8-arch1-3, Arch-based distro
• Wayland (Hyprland)

Issue :

On some cold boots and after resuming from hibernation the framework 12 touchpad appears dead:

  • No visible pointer / no cursor movement
  • Clicks still register (a double-click reaches the desktop wallpaper switcher)
  • Keyboard and touchscreen keep working
  • A reboot clears it every time

Fix :

echo 0018:093A:0239.0002 > /sys/bus/hid/drivers/hid-multitouch/unbind
echo 0018:093A:0239.0002 > /sys/bus/hid/drivers/hid-multitouch/bind

After that, my touchpad works immediately, no reboot.

If the ID differs on your machine, check ls /sys/bus/hid/drivers/hid-multitouch/.

I run this at boot and from a /etc/systemd/system-sleep/ hook so it also fires on resume.

Root cause : (found via AI-assisted debugging, so please verify independently)

To be fully transparent:

everything below comes from an AI analysis of the kernel input stream and the touchpad’s HID report descriptor on my machine.

The symptoms and the working fix above are mine; the explanation is the AI’s, and I’d welcome someone double-checking it.

The analysis says:

the touchpad (PIXA3854:00, 093A:0239) exposes two HID collections — the Precision Touchpad one Linux should use, and a legacy Mouse collection that should stay dormant.

On a bad boot or resume, the mode switch fails and the legacy collection takes over. That collection has a firmware bug: X/Y are declared as relative motion but with an unsigned 0–255 range.

Relative motion must be signed, so every negative movement is read as a large positive one — the pointer can only travel down-right, meaning one twitch pins it in the bottom-right corner of the screen.

That would explain why it looks like the touchpad is dead while clicks still land: the cursor is sitting in the corner, off where you’d ever look.

That connection — “no cursor” actually being “cursor stuck bottom-right” — is the AI’s inference, not something I confirmed by eye. If you hit this, checking whether your pointer is hiding in the bottom-right corner would be a useful data point.

1 Like