Tuesday, May 4, 2010

How to make touchscreen work in Ubuntu 10.04 (Lucid Lynx)



I have a HP tx1003au laptop and the thing that I like most about it is the touchscreen. I have been using Ubuntu since the last few years and making the touchscreen work has always been difficult. It takes a few day of web searching and a lot of failed effort before it starts working.

When Ubuntu 10.04 was launched a few days ago, I knew that I had a few days of work ahead of me. But the temptation to upgrade to the newest version of Ubuntu is always too much to resist. After installation, I found that though touch was registered, the movement of the pointer was restricted to the top left corner of the screen. I had to work on it for two days before coming up with a solution that worked. Before telling you how I made it work, I want you to know that I am a Linux user and not a Linux expert. Secondly, I found everything on the Internet and I did not come up with anything new. But I could not find everything in one place. That's why I decided to write this simple how-to.

I followed the steps mentioned below :

1. Enter the following command in a terminal:

sudo apt-get install xserver-xorg-input-evtouch

2. Get eGalax touchscreen driver from

http://home.eeti.com.tw/web20/eGalaxTouchDriver/linuxDriver.htm

3. Install the driver by using the following command

sudo sh setup.sh

I selected option 3 (USB) during installation and chose yes when asked to blacklist.

4. Reboot

5. Now a new problem arises. When you touch the screen you can see two pointers. To fix this you need to add the command given below to your Startup Programs (System > Preferences > Startup Applications). You can give whatever name and comment you like in the Startup Program window.

xinput --set-int-prop "eGalax INC. USB TouchController" "Device Enabled" 8 0

(If your xinput device is not eGalax INC. USB TouchController then you may need to replace it with the exact name of your device. Use the command xinput --list which displays a list of your xinput devices.)


6. The xorg.conf file needs to be edited. Open the file using sudo gedit /etc/X11/xorg.conf and change the value of option SkipClick to 0.

8. Reboot.

9. Calibrate using the following command:

eGalaxTouch

The touchscreen should be working now. I tried a number of things before coming up with this fix. Some of the things which did not work for me are:
  • TouchKit drive installed properly but could not find the touchscreen controller.
  • Blacklisting usbtouchscreen in /etc/modprobe.d/blacklist.conf did not work.
  • Installing eGaxal beta driver caused problems with nVidia driver.
I can now used my touchscreen till the next version of Ubuntu is released. I hope  by then they will make the touchscreen work out of the box and I don't have to write another article :)