Lenovo laptop trackpad non-functional

I’m lovin’ the EOS, putting it on all my machines! However, the trackpad on my Lenovo IdeaPad 3 81WD00U9US is completely non-operational. For now I’m using a wired mouse, but I’m hoping eventually this will be resolved. I don’t even know how to approach solving this, but for some reason I figured posting the laptop’s lspci output might be handy. Thanks in advance for any assistence.

00:02.0 VGA compatible controller: Intel Corporation Iris Plus Graphics G1 (Ice Lake) (rev 07)
00:04.0 Signal processing controller: Intel Corporation Device 8a03 (rev 03)
00:14.0 USB controller: Intel Corporation Ice Lake-LP USB 3.1 xHCI Host Controller (rev 30)
00:14.2 RAM memory: Intel Corporation Ice Lake-LP DRAM Controller (rev 30)
00:14.3 Network controller: Intel Corporation Ice Lake-LP PCH CNVi WiFi (rev 30)
00:15.0 Serial bus controller [0c80]: Intel Corporation Ice Lake-LP Serial IO I2C Controller #0 (rev 30)
00:15.1 Serial bus controller [0c80]: Intel Corporation Ice Lake-LP Serial IO I2C Controller #1 (rev 30)
00:16.0 Communication controller: Intel Corporation Ice Lake-LP Management Engine (rev 30)
00:17.0 SATA controller: Intel Corporation Ice Lake-LP SATA Controller [AHCI mode] (rev 30)
00:1d.0 PCI bridge: Intel Corporation Device 34b4 (rev 30)
00:1f.0 ISA bridge: Intel Corporation Ice Lake-LP LPC Controller (rev 30)
00:1f.3 Audio device: Intel Corporation Ice Lake-LP Smart Sound Technology Audio Controller (rev 30)
00:1f.4 SMBus: Intel Corporation Ice Lake-LP SMBus Controller (rev 30)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Ice Lake-LP SPI Controller (rev 30)
01:00.0 Non-Volatile memory controller: Sandisk Corp Device 5008 (rev 01)
Lenovo Ideapad 3-15ARE05	2020-10-27	Yes	Yes	Not tested	Yes	Yes	Yes	N/A	Touchpad requires blacklisting the elants_i2c kernel module to work; fingerprint sensor (by Elan Microelectronics Corp. - USB ID 04f3:0c57) does not work (no support in fprint)	

From:
https://wiki.archlinux.org/title/Laptop/Lenovo

So create /etc/modprobe.d/elan.conf

blacklist elants_i2c
2 Likes

@xircon Thank you for the swift response, I did create /etc/modprobe.d/elan.conf using nano, and edited it to include blacklist elants_i2c. Unfortunately, the touchpad still does not work. I found many posting on buzilla about this same issue. One user posted what he did that was successful:

dl3it mentioned:

I fixed it temporarily by changing elants_i2c from “built in” to “module”. It works flawlessly now.
I would not expect a hardware issue. It looks more like the module beeing started too early. The whole I2C is dead, when running elants_i2c as a module.

https://bugzilla.kernel.org/show_bug.cgi?id=207759#c2

I would have no clue as to going about with that…

Looks like they built the kernel and excluded the module in the config file. I haven’t built a kernel since circa 1996, so I am no use :smiley:

edit:

modprobe i2c_hid
echo "i2c-ELAN0001:00" > /sys/bus/i2c/drivers/elants_i2c/unbind
echo "i2c-ELAN0001:00" > /sys/bus/i2c/drivers/i2c_hid/bind

Try the above, might work, probably won’t :smiley:

And this:

I created
/etc/systemd/system/touchscreen.service

[Unit]
Description=Move touchscreen to correct driver

[Service]
ExecStart=/etc/tsmove
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Add this to systemd environment.
It calls /etc/tsmove once at startup.

/etc/tsmove

#!/bin/bash
modprobe i2c_hid
echo "i2c-ELAN0001:00" > /sys/bus/i2c/drivers/elants_i2c/unbind
echo "i2c-ELAN0001:00" > /sys/bus/i2c/drivers/i2c_hid/bind

Works for me perfectly; no issues on Ubuntu 20.04 and kernel 5.4.0-33.

Might work.

1 Like

When I enter `echo “i2c-ELAN0001:00” > /sys/bus/i2c/drivers/elants_i2c/unbind
echo “i2c-ELAN0001:00” > /sys/bus/i2c/drivers/i2c_hid/bind I get "No such file or directory
". This laptop does not have a touchscreen, whereas some do, in the bugzilla thread.

xinput returns:

xinput
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Power Button                            	id=8	[slave  keyboard (3)]
    ↳ Lid Switch                              	id=9	[slave  keyboard (3)]
    ↳ Integrated Camera: Integrated C         	id=10	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=13	[slave  keyboard (3)]
    ↳ Ideapad extra buttons                   	id=12	[slave  keyboard (3)]

`

Have you tried adding this kernel parameter in the default grub command line and then update grub first before rebooting.

i8042.nopnp

Is it and Lenovo ideapad 3 14IIL05 ?

Try these kernel parameters:

pci=nocrs pci=realloc

https://wiki.archlinux.org/title/Laptop/Lenovo#Lenovo_ideapad_3_14IIL05

1 Like

@ricklinux, @moson,

I shall try these next, I need to read up a bit as I’ve not edited kernel parameters since a Gentoo build I did, 15 years ago.

Try it first by editing the GRUB line (assuming you use grub) during boot. That is not persistent, so if it’s not going to work out you can just reboot…

See instructions here:
(press and hold esc to bring up the menu while booting)
https://wiki.archlinux.org/title/kernel_parameters#GRUB

If it’s working ok, you can make it persistent by editing /etc/default/grub
(Further explained in the linked article above)

2 Likes

Beautiful! Thank you moson and ricklinux for steering me in the right direction! :+1:
I’m taking the rest of the day off!

1 Like

I figured eventually a kernel parameter would fix it. It’s just a matter of finding the right one that works.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.