Getting the Samsung Chronos 7 Touchpad Working in Ubuntu 11.10

Ubuntu 11.10 has been installed on my Samsung Chronos 7 since the day I bought it.  After finally figuring out how to get the hybrid graphics to behave, I turned my attention towards getting the touchpad to work correctly.  Under the stock kernel the touchpad, which is reported as an Elantech v4, does not show in Gnome3 as a touchpad and is fairly unusable.  There is no multi-finger support and I would constantly hit the mouse while I was typing.  I would basically disable the internal mouse any time I was in Linux and just use an external mouse.  This is fine when I am at my desk, but doesn’t work so well when I’m sitting downstairs on the couch in my living room.

I decided to try the 3.2 kernel one day on the laptop, mostly due to better power management, especially for the Intel drivers.  After I compiled a 3.2 kernel for Ubuntu, I noticed my touchpad was (mostly) working perfectly.  Everything worked except two-finger right-click (two-finger right tap works though) and the mouse was not nearly sensitive enough.  Tweaking the sensitivity settings under Gnome3 had no effect on the mouse.  I ended up tweaking the FingerLow and FingerHigh using synclient to meet my sensitivity needs, but I’ll detail that a bit later.

I would have stayed on the 3.2 kernel, however my hybrids graphics seemed a little quirky and I was not getting near the battery life I was getting under the 3.0 kernel that came with Ubuntu 11.10.  So I decided to switch back to the 3.0 kernel, however I wanted my touchpad working like it was in 3.2. So I took the changes from the 3.2 kernel and back ported them to 3.0.  The following instructions will show you how to set up your build environment, get the kernel sources, patch the kernel, compile and install the new kernel.

If you have never built an Ubuntu kernel before you will need to execute the following, which will install the packages you need to compile a kernel for Ubuntu.

sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge
sudo apt-get build-dep linux
sudo apt-get install git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev

Next, you will need to grab the kernel sources for Ubuntu 11.10 and make the necessary control files.

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-oneiric.git
cd ubuntu-oneiric
fakeroot debian/rules clean

Once you have the source and made the control files, it’s time to patch the kernel for touchpad.  Download the patch from here and take a note of the path where you saved it.  Then patch the kernel via the following command

patch -p1 < ../dir/to/patch/file.patch

If everything worked correctly you should see the patch applied successfully.  If not, you may need to apply some parts of the patch manually.  After you have applied the patches it’s time to configure you kernel.  If you wish to have a starting point, download my kernel config from here and put it in the kernel directory and name it .config.  This config is tuned for the Chronos 7, though I still have a little more tuning to accomplish.

make menuconfig

Once you are happy with the kernel, compile your kernel with the following command (replacing the 3.0.14.1 revision number with whatever revision you want).

fakeroot make-kpkg --initrd --revision=3.0.14.1 kernel_image

The above command will place a .deb file one level up from the kernel source.  Install the kernel with the following command

cd ../
sudo dpkg -i NAME_OF_DEB.deb

You may get a warning message about replacing the current kernel.  If you do, just say yes and let it replace it.  It won’t affect anything and is necessary to get the new kernel installed.  Once this is complete, reboot and enjoy your working touchpad.  If you are happy with the sensitivity of the mouse you are done.  If not, read on for how to make it more sensitive.

Personally I like a pretty sensitive mouse.  By default the mouse sensitivity on the Elantech with the patch above was awful.  I had to place almost my entire finger on the touchpad to get it to scroll and trying to adjust the settings in Gnome3 had no effect.  So I used the synclient tool to adjust the sensitivity and created a shell script to apply the settings on each reboot and wake from sleep.

First create a file called elantech_synclient.sh in ~/.local/bin and put the following in the file

#!/bin/sh
 
synclient FingerLow=10
synclient FingerHigh=20

The final step is to make gnome run this file one reboot and wakeup.  Run the following command replace codemonkeyjava with your username for login.

gsettings set org.gnome.settings-daemon.peripherals.input-devices hotplug-command "/home/termleech/.local/bin/elantech_synclient.sh"

Congratulations, you now have a fully working touchpad on your Chronos 7 in Ubuntu 11.10.

If you liked this post or if helped you in any way, consider buying me a cup of coffee.

Comments are closed.