Comment 135 for bug 296610

Revision history for this message
Dave (foceni) wrote :

I wrote this mini HOWTO for people without kernel compilation know how. It's very easy, just apply those steps, I took care for everything else (I hope). :) I'm attaching the latest version of our patch - it was written by Sebastian and me. There is still one hidden hiccup, HW-based, which we can't seem to be able to solve to our satisfaction, but nobody will notice it during normal use. The keyword is "don't push all 3 TouchPad buttons at once!". :) See the descriptions above.

On the other hand, Sebastian's 9b packet handler makes lost syncs history and my button handling/masking brings you basically the full power of TWO independent mice! Yes, even on this joke of a touchpad. :) All the tricks I used on ThinkPad work now and those are some crazy combinations, I can tell you, requiring two distinct mice with their *own* buttons.

Change to root (su). Execute each "#" line as root separately and watch for errors. I tried to make it idiot-proof, but who knows. This HOWTO tries to get source and headers for your *currently running* kernel, patch psmouse, compile and replace your current driver with the newly patched one. On the fly! This is no win$hit, my friends. :)

Get all packages required for our compilation:

# apt-get install libncurses5 libncurses5-dev build-essential

Now download the source and headers for your running kernel:

# cd /usr/src
# KVER=$(dpkg -l | grep linux-image-`uname -r` | awk '{print $3}')
# HPKG=linux-headers-`uname -r`
# KPKG=linux-image-`uname -r`
# apt-get install $HPKG=$KVER
# apt-get source $KPKG=$KVER

Might take some time depending on your connection. Now module patching:

# KDIR=linux-`uname -r | sed 's/-.*//'`
# cd $KDIR
# cp /boot/config-`uname -r` .config
# cp /usr/src/linux-headers-`uname -r`/Module.symvers ./
# make oldconfig
# make prepare
# make scripts
# patch -p1 -b < /usr/src/alps-dave-2.6.31.patch

The last command should print just a bunch of "patching..." lines. No questions asked. If it fails, your kernel is too different from 2.6.31 for the patch utility to recognize where to insert the patch. Shouldn't happen though. Now let's compile as little as possible - just a couple of mouse modules:

# make SUBDIRS=drivers/input/mouse modules

You should now have your own "psmouse.ko" module -- fresh, patched and compatible with your running kernel. Let's backup & overwrite the currently installed driver with this new one:

# MDIR=/lib/modules/`uname -r`/kernel/drivers/input/mouse
# mv $MDIR/psmouse.ko $MDIR/psmouse.ko.bak
# cp drivers/input/mouse/psmouse.ko $MDIR/
# depmod -a

Now even if you reboot, the system will use your *new* psmouse module. OK, last step; let's replace the driver right now, without rebooting:

# rmmod psmouse
# modprobe psmouse

Wait for it... HAL should have detected it again and... there you go! Enjoy. :)