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

Reply via email to