8

I just bought a IdeaPad 330 Lenovo laptop. When I installed Ubuntu, touchpad was not working. I managed to install Ubuntu successfully with the keyboard, using the tab, space and enter buttons. I was thinking that touchpad was going to work after install, but not luck.

Does any one know how to fix that? It works perfectly on Windows 10.

1

5 Answers 5

5

As of early August 2018, I was able to get my cursor working (ELAN 061C)--without patching or compiling the kernel from source--by just upgrading to the 4.18-rc7 mainline build.

Instructions can be found here at TecMint.

4
  • Thank you ! That worked like charm for me too (I upgraded to v4.18). I used ukku to update the kernel, as explained here - very easy to follow. I have lenovo ideapad 330 i3
    – Alon
    Sep 1, 2018 at 9:20
  • Upgraded to v4.19 and worked fine. Pls note there is a missing line in TecMint on downloading and installing kernel-modules*.deb file along with other 3 files. Jan 8, 2019 at 12:24
  • I was on 4.18.0-10-generic and ran sudo apt-get dist-upgrade which upgraded my kernel to 4.18.0-16-generic, which fixed touchpad.
    – Stratus3D
    Mar 17, 2019 at 18:08
  • I am currently on 5.0.0-20-generic and it somehow won't work for me. Was support for this touchpad removed or am I maybe missing something?
    – Dr Ivol
    Jul 14, 2019 at 17:38
3

All hope is not lost! I have successfully recompiled the latest ubuntu 4.18.0 Kernel and added the ACPI id for the elan061C touchpad on the Lenovo 330-15igm that I own and now have a working touchpad.

The touchpad of the Lenovo 330 series is not detected at boot due to its ACPI id not being present in the kernel driver. Windows Identifies it as a Elan HID over i2c device, the problem with detection on the 330 is a similar issue to the lenovo 320 laptop mentioned here: Lenovo Ideapad 320 - Touchpad doesn't work

and the solution is to patch the kernel similarly to what was done here: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1700657

or as reported here: https://unix.stackexchange.com/questions/427566/touchpad-on-lenovo-v330-thinkpad-v-series-is-not-recognized/434655#434655

FYI: Unlike other elan touchpads in ubuntu, I found that modifying the boot parameters with i8042 options did not make a difference for this touchpad. Don't waste your time.

Many elan touchpad ACPI device IDs are still not present in the kernel driver source for elan_i2c_core.c so there is no hope at this time to get a working touchpad without writing a dkms module (which did not work for me) or compiling a custom kernel.

Please look at your output for dmesg | grep i2c and dmesg | grep elan to see if there is even a device detected. I found that stock and HWE kernels for ubuntu 16.04 did not detect an elan device or any pointing device at all, indicating that there was something 'missing' in the i2c device detection in the 16.04 kernels.

An install of 18.04 WAS able to see an elan device:

user-Lenovo-ideapad-330-15IGM kernel: [    7.396065] i2c_hid i2c-ELAN061C:00: i2c-ELAN061C:00 supply vdd not found, using dummy regulator

but the touchpad did not work or register any input.

There are a bunch of other folks having this type of trouble, as the elan touchpad is just too new to have mainline kernel support.

If you want to get your device working:

Find your ACPI id by installing acpidump: sudo apt install acpidump and running:

sudo acpidump | grep -C3 ELAN

(the -C3 tells grep to include the 3 lines before and after as described here: https://stackoverflow.com/questions/9081/grep-a-file-but-show-several-surrounding-lines)

My result was:

  0E70: 5F 53 42 2E 47 50 4F 31 00 79 00 08 53 42 46 49  _SB.GPO1.y..SBFI
  0E80: 11 0E 0A 0B 89 06 00 15 01 3C 00 00 00 79 00 14  .........<...y..
  0E90: 46 07 5F 49 4E 49 00 A0 23 93 54 50 54 59 01 70  F._INI..#.TPTY.p
  0EA0: 0D 45 4C 41 4E 30 36 31 43 00 5F 48 49 44 70 0A  .ELAN061C._HIDp.
  0EB0: 15 42 41 44 52 70 01 48 49 44 32 A0 25 93 54 50  .BADRp.HID2.%.TP
  0EC0: 54 59 0A 02 70 0D 53 59 4E 41 32 42 34 38 00 5F  TY..p.SYNA2B48._
  0ED0: 48 49 44 70 0A 2C 42 41 44 52 70 0A 20 48 49 44  HIDp.,BADRp. HID

Note the ELAN061C on the middle line!

Check the output for dmesg | grep i2c and dmesg | grep elan to see if there is even a device detected.

Install a kernel that can detect the device, for me this was 4.17.4-041704-generic.

This ACPI device ID is still not present in the kernel driver source for elan_i2c_core.c so there is no hope at this time to get a working touchpad without writing a dkms module (which did not work for me) or compiling a custom kernel.

Use the very latest kernel source from here: http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.4/

Patch the kernel with the latest patches and compile with this fairly easy follow this guide: How to apply kernel patches

In addition to installing the dependencies here: https://help.ubuntu.com/community/Kernel/Compile I also needed the build-essential kernel-package fakeroot libncurses5-dev debhelper libssl-dev libudev-dev xz-utils and bison packages

at the customize step, I edited v4.17.4/drivers/input/mouse/elan_i2c_core.c

add add the below lines to elan_i2c_core.c near the end of the file (the arrows are comments, don't add them to the file!)

     #ifdef CONFIG_ACPI static const struct acpi_device_id elan_acpi_id[] = {
    { "ELAN0000", 0 },
    { "ELAN0100", 0 },
    { "ELAN0600", 0 },
    { "ELAN0602", 0 },
    { "ELAN0605", 0 },
    { "ELAN0608", 0 },
    { "ELAN0609", 0 },
    { "ELAN060B", 0 },
    { "ELAN060C", 0 },
    { "ELAN0611", 0 },
    { "ELAN0612", 0 },
    { "ELAN0618", 0 },
    { "ELAN061C", 0 },      <-add this 
    { "ELAN061D", 0 },      <- and this for the lenovo 330 with the core i3
    { "ELAN1000", 0 },
    { } }; MODULE_DEVICE_TABLE(acpi, elan_acpi_id);
   #endif

after installing the newly generated 4.18.0-rc3-custom kernel (the patches updated the 4.17.4 source) I am happy to report that the touchpad works well with left, right clicks, and gestures in Ubuntu 18.04.

YMMV.

Special thanks to Dimitry Torokov and Donald Shanty

6
  • Will this change be included in future kernels or is there a reason not to include it?
    – Afiefh
    Jul 6, 2018 at 6:25
  • There's no reason it wouldn't be, but it will take some time. Because this was my first time recompiling for a driver, and because I couldn't find a a clear and concise method on the internet, the above is for posterity. I'm sure I won't be the only one who wants to put an open-source OS on this $209 laptop.
    – G Koe
    Jul 6, 2018 at 10:23
  • My friend has Lenovo Ideapad 330 and he is facing the same problem. But problem is that he doesn't have a good Internet connection. Is it possible that you can share your recently compiled kernel something like v4.17.* if you have any? Jul 16, 2018 at 10:34
  • 1
    Hi Giri, This link will work for 30 days: ufile.io/3mvks The Kernel is labeled as 4.18.0 RC3
    – G Koe
    Jul 17, 2018 at 0:34
  • Hi! i have a similar problem, @GKoe can you help me? askubuntu.com/questions/1067640/…
    – Scorpion
    Aug 28, 2018 at 12:35
2

Ubuntu 18.04.2 supports this touchpad out of the box.

For 18.04 users the 4.18 kernel can be unstalled by

sudo apt install linux-generic-hwe-18.04
1

I just bought a Lenovo IdeaPad 330 Series, and when installing kubuntu, the first thing I noticed is Touchpad not working. This post is great in explaining why something like this happens, and how to troubleshoot accordingly, and it did really help a lot to get over this problem. All I had to do was to upgrade kernel https://itsfoss.com/upgrade-linux-kernel-ubuntu/ and touchpad wait flawlessly working fine after that. (you might prefer not to upgrade to the latest version, instead look for the one that better suits your devices, and solves the issue.)

1
  • Ask Ubuntu looks to provide complete answers that do not require the user to look at links for the solution. Please include the essential steps in your answer. It is, of course, fine to link to your source.
    – vanadium
    Sep 10, 2018 at 17:06
0
Lenovo-ideapad-330-15IKB
Kernel: 4.15.0.30.32

Touchpad completely inert.

Manually downloaded and attempted to install 4.18.0-041800rc7 but it errored out every time.

Installed UKUU and looked for 4.18 but could not get it.

Went ahead and told it:

sudo ukuu --install-latest

and it attempted to install 4.17 but it errored out on the third major step, first two returned ok.

Rebooted and was still running 4.15.

Proceeded to run:

sudo ukuu --install-latest

AGAIN, and this time it went all the way through successfully, no errors, and advised that a reboot would be required to begin using the new kernel.

Rebooted.

Came up running 4.17.14-041714-generic.

Brushed my finger across the touchpad, just for the hell of it, and it was now working. Multiple reboots and touchpad is just fine, taps, scrolls, the whole works.

sudo acpidump | grep -C3 ELAN

returns:

  E040: 49 32 43 30 5B 82 4A 22 54 50 44 30 08 48 49 44  I2C0[.J"TPD0.HID
  E050: 32 00 08 53 50 45 44 00 08 42 41 44 52 00 14 42  2..SPED..BADR..B
  E060: 08 5F 49 4E 49 00 A0 23 93 54 50 54 59 01 70 0D  ._INI..#.TPTY.p.
  E070: 45 4C 41 4E 30 36 31 44 00 5F 48 49 44 70 0A 15  ELAN061D._HIDp..
  E080: 42 41 44 52 70 01 48 49 44 32 A0 25 93 54 50 54  BADRp.HID2.%.TPT
  E090: 59 0A 02 70 0D 53 59 4E 41 32 42 34 39 00 5F 48  Y..p.SYNA2B49._H
  E0A0: 49 44 70 0A 2C 42 41 44 52 70 0A 20 48 49 44 32  IDp.,BADRp. HID2
--
  E3B0: 54 4D 4C 32 39 35 32 00 5F 48 49 44 70 00 48 49  TML2952._HIDp.HI
  E3C0: 44 32 70 0A 4A 42 41 44 52 70 0C 80 1A 06 00 53  D2p.JBADRp.....S
  E3D0: 50 45 44 A4 00 A0 30 93 53 44 53 31 0A 03 70 0D  PED...0.SDS1..p.
  E3E0: 45 4C 41 4E 32 30 39 37 00 5F 48 49 44 70 01 48  ELAN2097._HIDp.H
  E3F0: 49 44 32 70 0A 10 42 41 44 52 70 0C 80 1A 06 00  ID2p..BADRp.....
  E400: 53 50 45 44 A4 00 A0 30 93 53 44 53 31 0A 04 70  SPED...0.SDS1..p
  E410: 0D 4E 54 52 47 30 30 30 31 00 5F 48 49 44 70 01  .NTRG0001._HIDp.

It's in there TWICE. Once as ELAN061D and the second time as ELAN2097.

So this method of upgrading the kernel to 4.17 using UKUU, managed to get the problem with the dead touchpad solved.

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .