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.