Good morning/afternoon/evening,
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
- Distro: LMDE 7 (Debian 13 based)
- Laptop: MSI G63 9SEK
- i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64
irq 1,12
- Fix:
$ cat /etc/systemd/system/psmouse-reload.service
[Unit]
Description=Set psmouse protocol to synaptics
After=systemd-udev-settle.service
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'for i in 1 2 3 4 5; do echo -n synaptics >
/sys/bus/serio/devices/serio1/protocol 2>/dev/null && exit 0; sleep 2; done'
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
- Result:
$ 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
The issue is 100% reproducible across reboots. "options psmouse
proto=synaptics" in modprobe config causes "EINVAL" on module insert.
The handshake fails at that early stage. A systemd service that retries
the sysfs write after systemd-udev-settle is a reliable workaround.
This appears to be a timing issue where the touchpad firmware or i8042
controller is not ready for the Synaptics handshake at the time psmouse
first probes. A retry with a short delay in the probe path, or a
something more fancy with initial handshake, would likely resolve this.
Happy to provide additional info if required.
Kind regards,
Cameron Spencer
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
Hi,
Thanks for your swift reply. It appears this is not reproducible in
mainline:
Tested on 7.3-rc2 and the device probes as SynPS/2 at ~1.9s without
requiring workaround.
$ dmesg | grep -iE 'psmouse|synaptics|serio|i8042'
[ 0.514787] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M]
at 0x60,0x64 irq 1,12
[ 0.518517] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 0.518524] serio: i8042 AUX port at 0x60,0x64 irq 12
[ 0.527696] input: AT Translated Set 2 keyboard as
/devices/platform/i8042/serio0/input/input0
[ 1.910459] psmouse serio1: synaptics: queried max coordinates: x
[..5656], y [..4728]
[ 1.939125] psmouse serio1: synaptics: queried min coordinates: x
[1284..], y [1128..]
[ 1.939132] psmouse serio1: synaptics: Your touchpad (PNP: SYN1509
SYN1500 SYN0002 PNP0f13) says it can support a different bus. If i2c-hid
and hid-rmi are not used, you might want to try setting
psmouse.synaptics_intertouch to 1 and report this to
linux-input@vger.kernel.org.
[ 1.995171] psmouse serio1: synaptics: Touchpad model: 1, fw: 8.2,
id: 0x1e2b1, caps: 0xf00323/0x840300/0x26800/0x0, board id: 3163, fw id:
2286728
[ 2.031111] input: SynPS/2 Synaptics TouchPad as
/devices/platform/i8042/serio1/input/input6
The previous kernel (6.12.101+deb13-amd64) doesn't have this issue either.
Kind regards,
Cameron
On 14/9/26 06:22, Lovekesh Solanki wrote:
On Sun, Sep 13, 2026 at 05:23:43AM +0000, Cameron Spencer wrote:
quoted
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?
quoted
$ 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