Public bug reported: With no warning, the touchpad on my Lenovo Yoga 7 laptop running Ubuntu 24.04 stopped working. This failure persisted even after a cold reboot. I was eventually able to work around it by running `echo "i2c-SYNA2BA6:00" | sudo tee /sys/bus/i2c/drivers/i2c_hid_acpi/bind; sudo dmesg | tail -10 `, after which the touchpad worked again.
A more detailed summary (including details and a potential root-cause- analysis) from Claude Code is pasted below: ### Summary The Synaptics I2C HID touchpad (SYNA2BA6:00, 06CB:CF00) on a Lenovo Yoga 7 2-in-1 16IML9 intermittently fails to probe at boot. The I2C controller loses bus arbitration during the HID report descriptor read, and `i2c_hid_acpi` treats this transient error as fatal — the touchpad is dead until a manual driver rebind. ### System - **Hardware:** Lenovo Yoga 7 2-in-1 16IML9 (83DL) - **BIOS:** NWCN13WW (2024-01-11) - **OS:** Ubuntu 24.04.3 LTS (Noble Numbat) - **Kernel:** 6.17.0-20-generic (Ubuntu 6.17.0-20.20~24.04.1-generic, upstream 6.17.13) - **I2C controller:** Intel Meteor Lake-P Serial IO I2C #0 [8086:7e78] (rev 20) - **Touchpad:** Synaptics SYNA2BA6:00, HID 0018:06CB:CF00, on i2c-0 ### Symptoms After a boot that follows a session with multiple suspend/resume (s2idle) cycles, the touchpad is completely nonfunctional. No input device is registered for it. A Bluetooth mouse and the built-in keyboard work normally. ### Relevant dmesg output **Failing boot (2026-04-10):** ``` i2c_designware i2c_designware.0: i2c_dw_handle_tx_abort: lost arbitration hid (null): reading report descriptor failed i2c_hid_acpi i2c-SYNA2BA6:00: can't add hid device: -121 i2c_hid_acpi i2c-SYNA2BA6:00: probe with driver i2c_hid_acpi failed with error -121 ``` At boot, the initial probe also produced this (likely a second probe attempt by hid-generic after i2c_hid fed it a partial/corrupt descriptor): ``` hid-generic 0018:06CB:CF00.0002: unexpected long global item hid-generic 0018:06CB:CF00.0002: probe with driver hid-generic failed with error -22 ``` **Previous successful boot (2026-04-08, same kernel):** ``` input: SYNA2BA6:00 06CB:CF00 Mouse as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-SYNA2BA6:00/0018:06CB:CF00.0002/input/input9 input: SYNA2BA6:00 06CB:CF00 Touchpad as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-SYNA2BA6:00/0018:06CB:CF00.0002/input/input10 hid-generic 0018:06CB:CF00.0002: input,hidraw1: I2C HID v1.00 Mouse [SYNA2BA6:00 06CB:CF00] on i2c-SYNA2BA6:00 input: SYNA2BA6:00 06CB:CF00 Mouse as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-SYNA2BA6:00/0018:06CB:CF00.0002/input/input12 input: SYNA2BA6:00 06CB:CF00 Touchpad as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-SYNA2BA6:00/0018:06CB:CF00.0002/input/input13 hid-multitouch 0018:06CB:CF00.0002: input,hidraw1: I2C HID v1.00 Mouse [SYNA2BA6:00 06CB:CF00] on i2c-SYNA2BA6:00 ``` ### Reproduction conditions 1. Boot the laptop normally — touchpad works. 2. Use the laptop through multiple suspend/resume (s2idle) cycles. 3. Shut down. 4. On next boot, the touchpad fails to probe (intermittent — does not happen every time). ### Workaround Manually rebinding the I2C HID driver recovers the touchpad. It may take two attempts — the first can fail with the same arbitration error, but the second typically succeeds: ``` echo "i2c-SYNA2BA6:00" | sudo tee /sys/bus/i2c/drivers/i2c_hid_acpi/bind # If the above fails, wait a few seconds and repeat echo "i2c-SYNA2BA6:00" | sudo tee /sys/bus/i2c/drivers/i2c_hid_acpi/bind ``` After a successful rebind: ``` input: SYNA2BA6:00 06CB:CF00 Touchpad as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-SYNA2BA6:00/0018:06CB:CF00.0008/input/input33 hid-multitouch 0018:06CB:CF00.0008: input,hidraw4: I2C HID v1.00 Mouse [SYNA2BA6:00 06CB:CF00] on i2c-SYNA2BA6:00 ``` ### Root cause analysis The report descriptor read in `i2c_hid_parse()` (drivers/hid/i2c-hid/i2c-hid-core.c) has no retry logic for transient I2C errors. The call path is: 1. `i2c_hid_parse()` calls `i2c_hid_read_register()` for `wReportDescRegister` 2. The underlying `i2c_transfer()` returns `-EREMOTEIO` (-121) due to a bus arbitration loss on the Designware I2C controller 3. `i2c_hid_parse()` returns the error immediately — no retry 4. The probe fails permanently By contrast, the hardware reset in the same function *does* retry up to 3 times with 1-second delays. A similar retry around the report descriptor read would make this failure self-healing. The I2C bus arbitration loss itself is likely caused by the touchpad's firmware being in an inconsistent state after a suspend/resume cycle, creating a momentary bus conflict at the next power-on. ### Mainline kernel testing Not yet tested against the upstream mainline kernel. This bug is intermittent — it depends on the I2C bus being in a degraded state after a suspend/resume cycle, so it cannot be reliably reproduced on demand. It occurred once after several weeks of daily use with frequent suspend/resume. The root cause (no retry logic in `i2c_hid_parse()` for the report descriptor read) is visible in the upstream source and is not Ubuntu-specific, so it is expected to affect mainline as well. ### Related bugs - Launchpad [#2061040](https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2061040): Similar i2c-hid probe failure on Lenovo X1 Carbon Gen12 (different device, different root cause — fixed by reverting reset-ACK reorder) - Launchpad [#2059973](https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2059973): SYNA2BA6:00 06CB:CE78 non-functional (Won't Fix, different product ID) - kernel.org [#108581](https://bugzilla.kernel.org/show_bug.cgi?id=108581): "No touchpad because i2c loses arbitration" (ASUS Zenbook, 2016) - Ubuntu Discourse: [MSI Modern C14 touchpad intermittently not working on kernel 6.17](https://discourse.ubuntu.com/t/msi-modern-c14-i2c-touchpad-intermittently-not-working-on-ubuntu-25-10-kernel-6-17/72550) (Synaptics 06CB:CEBD, similar symptoms) ProblemType: Bug DistroRelease: Ubuntu 24.04 Package: linux-image-6.17.0-20-generic 6.17.0-20.20~24.04.1 ProcVersionSignature: Ubuntu 6.17.0-20.20~24.04.1-generic 6.17.13 Uname: Linux 6.17.0-20-generic x86_64 ApportVersion: 2.28.1-0ubuntu3.8 Architecture: amd64 CasperMD5CheckResult: pass CurrentDesktop: ubuntu:GNOME Date: Fri Apr 10 13:15:43 2026 InstallationDate: Installed on 2024-09-03 (584 days ago) InstallationMedia: Ubuntu 24.04 LTS "Noble Numbat" - Release amd64 (20240424) ProcEnviron: LANG=en_US.UTF-8 PATH=(custom, no user) SHELL=/bin/bash TERM=xterm-256color SourcePackage: linux-signed-hwe-6.17 UpgradeStatus: No upgrade log present (probably fresh install) ** Affects: linux-signed-hwe-6.17 (Ubuntu) Importance: Undecided Status: New ** Tags: amd64 apport-bug noble -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2148032 Title: Lenovo touchpad stopped working (fails to probe due to transient I2C arbitration error) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux-signed-hwe-6.17/+bug/2148032/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
