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.


  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 
  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 
  ID-1: BAT0 charge: 23.4 Wh condition: 30.8/30.0 Wh (103%) 
  model: SMP L16M2PB1 status: Discharging 
  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 
  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 
  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 
  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 
  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 
  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 
  System Temperatures: cpu: 32.0 C mobo: N/A 
  Fan Speeds (RPM): N/A 
  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?

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:

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.


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.


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

Forum kindly sponsored by