Touchpad not detected: i2c_hid_acpi i2c-MSFT0001:00: Failed to fetch the HID Descriptor


For almost two years now linux will only detect may touchpad with a janky workaround I will describe below.
When booting up the touchpad is never detected, only visible using the find command like this:


In dmesg, after boot and when reloading the i2c_hid_acpi module, I can see the following messages:

kernel: i2c_hid_acpi i2c-MSFT0001:00: failed to fetch HID descriptor: -121
kernel: i2c_hid_acpi i2c-MSFT0001:00: Failed to fetch the HID Descriptor

As for the workaround, in order to get the touchpad to work I have to do this:

  1. Boot
  2. Suspend the os
  3. Close the lid to keep it suspended
  4. Force it to shut down via power button
  5. Boor up again

There is also a bug with the S3 sleep, although that seems a lot more common in linux.
Once the workaround is “applied” I can see the following.

[    2.204702] input: MSFT0001:00 04F3:3140 Mouse as /devices/platform/AMDI0010:03/i2c-1/i2c-MSFT0001:00/0018:04F3:3140.0001/input/input5
[    2.204805] input: MSFT0001:00 04F3:3140 Touchpad as /devices/platform/AMDI0010:03/i2c-1/i2c-MSFT0001:00/0018:04F3:3140.0001/input/input6
[    2.204866] hid-generic 0018:04F3:3140.0001: input,hidraw0: I2C HID v1.00 Mouse [MSFT0001:00 04F3:3140] on i2c-MSFT0001:00
[    5.329926] input: MSFT0001:00 04F3:3140 Mouse as /devices/platform/AMDI0010:03/i2c-1/i2c-MSFT0001:00/0018:04F3:3140.0001/input/input18
[    5.330041] input: MSFT0001:00 04F3:3140 Touchpad as /devices/platform/AMDI0010:03/i2c-1/i2c-MSFT0001:00/0018:04F3:3140.0001/input/input19
[    5.330106] hid-multitouch 0018:04F3:3140.0001: input,hidraw0: I2C HID v1.00 Mouse [MSFT0001:00 04F3:3140] on i2c-MSFT0001:00

The touchpad works as expected after this.
The issue has persisted since kernel 5.9 and I am now on 5.19.
The Laptop is an Ideapad flex 5 14are05
If you need more info please tell me.

Thank you

The difference is that in second case you have i2c-hid-acpi module loaded. To confirm that load this module manually when touchpad not work:

sudo modprobe i2c-hid-acpi

If that work make this setting permanent:

echo "i2c-hid-acpi" | sudo tee -a /etc/modules-load.d/modules.conf

Thank you for the answer, however that does not work. I can manually load the module, however as I mentioned in the initial post, this only results in the same error.

This is with the module loaded and the touchpad not working:

i2c_piix4              36864  0
i2c_hid_acpi           16384  0
i2c_hid                40960  1 i2c_hid_acpi

Is your touchpad detected and visible?

sudo libintput list-devices

Did you check BIOS settings? In some cases, you can enable/disable touchpad here.

$ LANG=C errno 121
EREMOTEIO 121 Remote I/O error

Most likely fastboot (or sort of partially initialization) is enabled on the BIOS. Disable it.

@megavolt, @Tomek

The UEFI/BIOS of this laptop is quite barren.
The options both of you have mentioned to not exist.

What a shame. Does the same happen with the fallback kernel as with the default one?

However… such an error is fully depended from the UEFI firmware. The laptop was made only for windows. Maybe try a BIOS upgrade, but I guess on Linux you can’t do anything. No idea how experienced you are, but a you can create custom acpi tables: Upgrading ACPI tables via initrd — The Linux Kernel documentation

I tried a bios update from windows which promptly stabbed grub in the back, as it always does. So after fixing that, the touchpad still does not work.

Custom acpi tables is far out of my skill-level but thank you for your help.

Hi, FYI I have the same problem, searching for solution leads me to this thread …

Same hardware (lenovo Yoga Slim 7 14ARE05), I’m gentoo user, custom kernel, patched/unlocked bios to enable S3, the touchpad is:

input: PNP0C50:00 06CB:CDB0 Touchpad as /devices/platform/AMDI0010:00/i2c-0/i2c-PNP0C50:00/0018:06CB:CDB0.0007/input/input7

however it was always working until 5.19, with recent kernel version it stopped working, I didn’t find the solution.

hello @adamm2r43 ,

please open your own thread describing your problem and your hardware. even if the symptoms seem to be the same it could (and very often is) something different. for this reason it is not a good manner to hijack the thread of someone else.