This document describes an issue with ELAN I2C touchpads on Lenovo ThinkBook laptops running Linux (Debian 13 in this case), where tap works but physical click does not, and how it was resolved using an automatic unbind/bind systemd service.
On certain Lenovo ThinkBook models, the ELAN touchpad appears as both a Mouse and a Touchpad:
ELAN06FA:00 04F3:327E Mouse
ELAN06FA:00 04F3:327E Touchpad
However, the click button events are missing.
Testing with evtest confirmed:
- No click events from the Mouse device
- No click events from the Touchpad device
Tapping works, cursor moves, gestures work — only physical clicks fail.
This happens because the device sometimes loads with an incomplete HID report descriptor at boot.
Resetting the I2C HID device restores full functionality:
echo -n "i2c-ELAN06FA:00" > /sys/bus/i2c/drivers/i2c_hid_acpi/unbind
sleep 0.5
echo -n "i2c-ELAN06FA:00" > /sys/bus/i2c/drivers/i2c_hid_acpi/bindAfter doing this, click events immediately start working.
Create the script:
/usr/local/bin/elan-touchpad-reset.sh:
#!/bin/bash
# Automatically detect ELAN I2C device under i2c_hid_acpi
DEVICE=$(ls /sys/bus/i2c/drivers/i2c_hid_acpi | grep -E '^i2c-ELAN')
if [ -n "$DEVICE" ]; then
echo "Resetting $DEVICE"
echo -n "$DEVICE" > /sys/bus/i2c/drivers/i2c_hid_acpi/unbind
sleep 0.5
echo -n "$DEVICE" > /sys/bus/i2c/drivers/i2c_hid_acpi/bind
fiMake it executable:
sudo chmod +x /usr/local/bin/elan-touchpad-reset.sh
Create the service:
/etc/systemd/system/elan-touchpad-reset.service:
[Unit]
Description=Reset ELAN I2C Touchpad on Boot
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/elan-touchpad-reset.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.targetEnable + start:
sudo systemctl daemon-reload
sudo systemctl enable elan-touchpad-reset.service
sudo systemctl start elan-touchpad-reset.service
For reference, the ELAN device appeared here:
/sys/bus/i2c/drivers/i2c_hid_acpi/i2c-ELAN06FA:00
After enabling the service, the touchpad click works reliably after every boot.
This issue is caused by the ELAN firmware sending incomplete HID data during early boot; reloading the I2C HID driver restores proper initialization. Windows uses ELAN’s vendor driver and does not experience this issue.