Lenovo Ideapad 330 touchpad not working

I just bought this laptop today, and it's been running perfectly well with Manjaro except for this issue, and have had the same issue in other distros as well.

inxi:

System:
  Host: darkness Kernel: 4.17.0-2-MANJARO x86_64 bits: 64 compiler: gcc 
  v: 8.1.1 Desktop: N/A Distro: Manjaro Linux 17.1.10 Hakoila 
Machine:
  Type: Laptop System: LENOVO product: 81DE v: Lenovo ideapad 330-15IKB 
  serial: <root required> 
  Mobo: LENOVO model: LNVNB161216 v: SDK0J40700 WIN serial: <root required> 
  UEFI: LENOVO v: 8TCN25WW date: 04/13/2018 
Battery:
  ID-1: BAT0 charge: 23.4 Wh condition: 30.8/30.0 Wh (103%) 
  model: SMP L16M2PB1 status: Discharging 
CPU:
  Topology: Dual Core model: Intel Core i3-8130U bits: 64 type: MT MCP 
  arch: Kaby Lake rev: 10 L2 cache: 4096 KiB 
  flags: lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 17668 
  Speed: 800 MHz min/max: 400/3400 MHz Core speeds (MHz): 1: 800 2: 800 
  3: 800 4: 800 
Graphics:
  Card-1: Intel UHD Graphics 620 driver: i915 v: kernel bus ID: 00:02.0 
  Display: x11 server: N/A driver: intel unloaded: fbdev,modesetting,vesa 
  resolution: <xdpyinfo missing> 
  OpenGL: renderer: Mesa DRI Intel UHD Graphics 620 (Kabylake GT2) 
  v: 4.5 Mesa 18.1.1 direct render: Yes 
Audio:
  Card-1: Intel Sunrise Point-LP HD Audio driver: snd_hda_intel v: kernel 
  bus ID: 00:1f.3 
  Sound Server: ALSA v: k4.17.0-2-MANJARO 
Network:
  Card-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet 
  driver: r8168 v: 8.045.08-NAPI port: 3000 bus ID: 01:00.0 
  IF: enp1s0 state: down mac: 8c:16:45:76:69:8e 
  Card-2: Intel Dual Band Wireless-AC 3165 Plus Bluetooth driver: iwlwifi 
  v: kernel bus ID: 02:00.0 
  IF: wlp2s0 state: up mac: 94:b8:6d:a9:83:eb 
  Card-3: IMC Networks type: USB driver: uvcvideo bus ID: 1:3 
Drives:
  HDD Total Size: 931.51 GiB used: 5.53 GiB (0.6%) 
  ID-1: /dev/sda vendor: Western Digital model: WD10SPZX-24Z10T0 
  size: 931.51 GiB 
Partition:
  ID-1: / size: 907.44 GiB used: 5.53 GiB (0.6%) fs: ext4 dev: /dev/sda2 
  ID-2: swap-1 size: 8.29 GiB used: 0 KiB (0.0%) fs: swap dev: /dev/sda3 
Sensors:
  System Temperatures: cpu: 32.0 C mobo: N/A 
  Fan Speeds (RPM): N/A 
Info:
  Processes: 164 Uptime: 12m Memory: 3.77 GiB used: 991.9 MiB (25.7%) 
  Init: systemd Compilers: gcc: 8.1.1 Shell: bash v: 4.4.19 inxi: 3.0.10 

I found a similar issue on the ubuntu forums for the 320 model that was patched, so I checked dmesg and found this

$ dmesg | grep -i elan
[    7.860937] i2c_hid i2c-ELAN061D:00: i2c-ELAN061D:00 supply vdd not found, using dummy regulator

At least it's just the trackpad and I can use it with a usb mouse for now, but any help will be appreciated

Can you post the output of your lsusb?
I can't find the specific device in the inxi output.

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 13d3:5a02 IMC Networks 
Bus 001 Device 003: ID 8087:0a2a Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

I haven't had much luck finding it either

Have you tried the procedure suggested here?
https://wiki.archlinux.org/index.php/Lenovo_IdeaPad_U330p

I just tried this and the touchpad is still unresponsive

Can you paste the output of xinput list?

|⎡ 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)]|
|    ↳ Video Bus                               |id=6|[slave  keyboard (3)]|
|    ↳ Power Button                            |id=7|[slave  keyboard (3)]|
|    ↳ EasyCamera: EasyCamera                  |id=10|[slave  keyboard (3)]|
|    ↳ Ideapad extra buttons                   |id=11|[slave  keyboard (3)]|
|    ↳ AT Translated Set 2 keyboard            |id=12|[slave  keyboard (3)]|

The touchpad is working when you switch to another operating system?

It worked fine in Windows before I installed anything

Apparently you're not alone:
https://forums.lenovo.com/t5/Linux-Discussion/Ideapad-320-touchpad-not-working-in-Linux/td-p/3919518

I wonder why installing the synaptics driver on the 320 model worked but not on the 330? could it be I have to do some odd configuring?

I did some searching and found this thread https://unix.stackexchange.com/questions/427566/touchpad-on-lenovo-v330-thinkpad-v-series-is-not-recognized

I downloaded the kernel sources and found that the ACPI ID of my touchpad wasn't in the drivers/input/mouse/elan_i2c_core.c file. I edited it and followed the arch kernel compilation wiki and I'll send back the results once I finish compiling.

This worked perfectly! Now the touchpad works perfectly with the regular libinput driver. Although compiling the kernel took an hour, all I had to do was add this to drivers/input/mouse/elan_i2c_core.c

{ "ELAN061D", 0 },

This went along with a list of other ACPI IDs, so the number may vary with different models. I hope this gets fixed upstream so others won't have to wait a long time compiling a kernel to get it to work.

2 Likes

I think hard coding a list of device ID's like that is dumb. Why not put it in a config text file or pull it from an env var? Such lists are likely to change quite often.
This is literally a 1 byte change. As a temp workaround, is there a way to locate "ELAN0618" in the compiled binary and change it to "ELAN061D" with a binary/hex editor? [edit] It seems so... Hex editing kernel modules. What is the binary file name for this driver? Btw, Ubuntu link for this.
@philm Was this similar to your recent fix for the EZBook 3 Pro touchpad?

@@ -1346,6 +1346,7 @@  static const struct acpi_device_id elan_acpi_id[] = {
 	{ "ELAN0611", 0 },
 	{ "ELAN0612", 0 },
 	{ "ELAN0618", 0 },
+	{ "ELAN061D", 0 },
 	{ "ELAN1000", 0 },
 	{ }
 };

It's been awhile, but I submitted a patch request and got it approved this week, so the fix should be live in linux 4.18 and will probably be backported to earlier kernels soon, but I agree that this list is kinda odd in the first place.

2 Likes

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

Forum kindly sponsored by