Configure ALPS (Synaptics) touchpad in Ubuntu Karmic and Jaunty

The Problem

Update: (29th October 2009): This guide holds true for Ubuntu 9.10 Karmic Koala as well. The only difference is how to restart the hal correctly. I’ll be examining that and posting it here.

Update: (29th April 2009) I was facing these problems using the 64 bit version of Ubuntu 9.0.4 Jaunty on a Wubi installation. I’ve since upgraded to a normal installation and the 32 bit version. Synclient is no longer exhibiting weird behavior as below and I haven’t installed GSynaptics on my latest install because I don’t see the need for it.

I don’t know now whether the problems with Synclient were caused because of the installation being 64 bit or because of the installation being a Wubi install.

Configuring the ALPS touchpad on Ubuntu’s Jaunty Jackalope was a nightmare for me. So when I finally got it working, I thought I’d enlighten others who might be facing the same problems. I’m working on a Sony VAIO VGN-NR498E model with an Intel chipset. Here goes!

Synaptics drivers for ALPS

Apparently, the synaptic drivers for the ALPS touchpad work fine. They’re installed by default and so you won’t have to do anything further for this.

Image Credit: yum9me

Alps Touchpad in Ubuntu 9.0.4

Alps Touchpad in Ubuntu 9.0.4

ALPS problems under Jaunty

There were several severe problems I was facing with the touchpad including:

  1. Hyper sensitivity
  2. Accidental tapping while scrolling
  3. Right click activated by Bottom Right corner instead of top left

The sensitivity problem was particularly acute as I kept accidentally clicking links while scrolling along the sides.

GUI clients like GSynaptics not enough

Like everyone else, I first checked out the options in the default “Mouse” package that ships with Ubuntu. While there were some nice options on it, they simply weren’t enough. There wasn’t an option to customize the minimum finger pressure for a click (the cause of accidental clicks), nor the option to change the maximum amount the finger could move for a click to register. I also couldn’t change the area of the touchpad that activated the right click.

So I installed the Gsynaptics package and it still wasn’t enough. Moreover, it was exhibiting strange behavior such as not saving the settings. My advice to touchpad users facing the same problems that I was facing is to not enable the GSynaptics module. It merely gets in the way.

In my opinion, we would greatly benefit from an inbuilt GUI client that would allow users to change all the options. Apparently on the GSynaptics site, a new application was being showcased called “GPointing Device Settings” whose source code is provided. However, despite repeated attempts, I wasn’t able to compile it – I’m not an expert on compilation, so I don’t know what I did wrong.

Synclient also doesn’t work properly!

Another odd phenomenon was that the program called Synclient which was supposed to show me all the current touchpad settings was displaying “0” for most parameters while typing in “synclient -l” even after changing them with “parameter=value”. This initially led me to believe that my hardware didn’t support those clients, but later observations showed me that it did.

Update: As described at the top, this problem didn’t occur with a regular install of the 32 bit version of Jaunty. Don’t know if the fault was with Wubi or the 64 bit.

Using HAL and fdi files

So here’s the real way to change the touchpad settings. All the forums (which mostly referred to older versions of Ubuntu) told me to modify the Xorg.conf file located in “/etc/X11″. But when I tried to do this, I wasn’t able to startup Ubuntu properly – apparently, I must have messed things up. It turns out, that modifying Xorg.conf is wrong. At least in Ubuntu 9.0.4 Jaunty Jackalope.

The correct way to change settings is to modify or create “.fdi” files in the folder “/etc/hal/fdi/policy”. These are XML files that define the properties of various parameters. It doesn’t matter what filename you give them – something I went crazy trying to find out – as long as they have the extension “.fdi”. You’ll find some samples of fdi files in “/usr/share/hal/fdi/policy/one of the folders“. You should take these samples and modify them to your needs (who’s going to write XML from scratch?). For the touchpad, look for for filenames that contain x11, synaptics, input device etc. The one I took was “/usr/share/hal/fdi/policy/10osvendor/10-x11-input.fdi”. Look for one that has some sample settings commented out. You should be able to find out how to add new ones by looking at them.

It should also refer to “input.touchpad” somewhere inside the file – that way you’ll know it’s the right one. Take the file you want and copy it into “/etc/hal/fdi/policy” and give it whatever “.fdi” name you want.

Finding out your exact device name with lshal

Before adding these new settings to your fdi files, you need to let Ubuntu know that the settings refer to the touchpad. So first we need to know what Ubuntu calls your mouse.

Open a terminal, type “lshal” (that’s L-shal), and enter. A long list will scroll past your eyes before you can even see what’s at the top. So you need to save the output to a text file first – this is also useful for searching in the next step. So type in “lshal > test.txt”. A file called “test.txt” will be created in your home folder with the output. Open up the text file and search for “Alps”, or a part of whatever you think your touchpad is called. Find out exactly what Ubuntu calls your device – it’ll be under “info.product” or “input.product” between apostrophes.

Making changes to your fdi files

Now that you know what your device is called, you can open up your fdi file with the sample commands and add the following section before the closing </device> tag.

<match key=”info.product” contains=”whatever your device is called“>
<merge key=”input.x11_driver” type=”string”>synaptics</merge>
</match>

Once more, it doesn’t matter what filename you give it as long as it ends in .fdi

Once that is done, you can now proceed to make changes to your touchpad settings in that fdi file to your hearts content under the “info.capabilities” key. Some values that you might want to change are:

  1. FingerHigh
  2. MaxTapMove
  3. MaxSpeed
  4. MinSpeed

For example, to change the “FingerHigh” parameter, this what you need:

<merge key=”input.x11_options.FingerHigh” type=”string”>20</merge>. Put it in the same section as the other samples. Editing XML files can really be a pain, which is why I wish there was a GUI tool for this.

To see a complete list of everything you can change along with the explanation, type “man synaptics” into a terminal. Or you can see the synaptic options here.

Save the fdi file in “/etc/hal/fdi/policy”

Applying the settings

After making the changes, you can apply them by restarting hal and logging out and on again. To restart hal, I use “sudo /etc/init.d/hal restart”.

Update (31st October 2009): The latest technique in Karmic is to restart hal by typing “sudo service hal restart”. Some say that hal no longer exists, but this seems to work

So there it is. A brief explanation of what I learned out of three days of pain :) . But it was worth it. In part, this blog post is to ensure that I don’t forget what I learnt! I hope it saves you some pain as well.

1 2

Comments

  1. Aharown says:

    One other suggestion: if there's a way to tag your post with "synaptics" more prominent, it may make it easier for folks to find it in the search engines. I pretty much found it by accident (didn't know ALPS had anything to do with it).
    … but it probably helps that I'm linking to it from ubuntu forums.

  2. bhagwad says:

    @Aharown
    Interesting suggestion. The post is certainly relevant to synaptics – so I modified the title a bit and the URL as well. Visitors will be redirected to the new one automatically…

    Hope that helps

1 2

Add Your Comment