Re: [6.12.107] MSI G63 9SEK - Synaptics touchpad falls back to PS/2, multitouch lost at boot, fixed by delayed protocol write
From: Lovekesh Solanki <hidden>
Date: 2026-09-13 20:22:16
On Sun, Sep 13, 2026 at 05:23:43AM +0000, Cameron Spencer wrote:
I experienced an issue where my Synaptics touchpad is registered as a basic PS/2 device at boot, losing all multitouch functionality (two-finger scroll, gestures). Writing "synaptics" to the sysfs protocol file a few seconds after boot restores the SynPS/2 extended protocol and full functionality. System: - Kernel: 6.12.107+deb13-amd64
Hi, Thanks for the report, could you see if the issue is reproducible in mainline first?
$ dmesg | grep -iE 'psmouse|synaptics|serio|i8042' [ 1.006462] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 1.010384] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 1.010392] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 1.018706] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0 # psmouse probes at boot, fails the Synaptics handshake, registers as plain "PS/2 Synaptics TouchPad" (no multitouch) [ 2.384949] input: PS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input6 # psmouse-reload service runs after systemd-udev-settle and writes synaptics to /sys/bus/serio/devices/serio1/protocol, then re-probes with the Synaptics extended protocol, queries coordinates, and registers as "SynPS/2 Synaptics TouchPad" (multitouch restored) [ 8.654815] psmouse serio1: synaptics: queried max coordinates: x [..5656], y [..4728] [ 8.683422] psmouse serio1: synaptics: queried min coordinates: x [1284..], y [1128..] [ 8.739382] psmouse serio1: synaptics: Touchpad model: 1, fw: 8.2, id: 0x1e2b1, caps: 0xf00323/0x840300/0x26800/0x0, board id: 3163, fw id: 2286728 [ 8.775128] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input21
Seems like firmware is unable to answer extended queries for some time after initialization and just falls back to PS/2, perhaps we could just add a retry loop around synaptics_query_hardware() to give firmware a little extra time. Thanks, Lovekesh