Having installed linux on a bunch of machines, you run into hardware that doesn't work out of the box. It is very commonplace and to be expected, of course. It's quite surprising, however, to install the latest ubuntu on a laptop only to discover that the touchpad isn't working!
This is exactly what happened to me just last week, when I installed Hardy Heron on my Sharp laptop.
I managed to find the solution strewn across the internet and on these forums, so I'd like to share my findings with you in case you're having the same problem.
First of all, my solution. It may work for you if you have the same problem as I did.
Symptoms: kernel 2.6, synaptics style touchpad, doesn't work, or jumps around like crazy. Possibly detected by the system, possibly not.
You can try adding these options to your kernel boot parameters.
Code:
i8042.nomux=1 i8042.noloop=1
How to do this? You can select the option to edit the boot commands through GRUB at boot time, or you can manually edit the /boot/grub/menu.lst file, so this option will be persistent.
What's going on? The i8042 chip is a common ps/2 keyboard and mouse controller. For some reason it isn't working as we would expect with the the current line of 2.6 kernels. Because of the way this chip interacts with the operating system, the mouse portion of the input can be lost in the shuffle.
The synaptics style touchpads are supposed to default to regular ps/2 style mouse operation if a special driver isn't present. Because of this interaction with the i8042 controller chip and the kernel, the touchpads can become inoperational.
This would be the first option I would try in the case of any inoperational touchpad, ALPS, Synaptic or generic.
Just some details about the menu.lst file, here is my menu.lst file as an example. The changes are in red:
Code:
# menu.lst - See: grub(8), info grub, update-grub(8)
# grub-install(8), grub-floppy(8),
# grub-md5-crypt, /usr/share/doc/grub
# and /usr/share/doc/grub-doc/.
## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
# WARNING: If you are using dmraid do not use 'savedefault' or your
# array will desync and will not let you boot your system.
default 0
## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout 9
## hiddenmenu
# Hides the menu by default (press ESC to see the menu)
hiddenmenu
# Pretty colours
#color cyan/blue white/blue
## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the
# command 'lock'
# e.g. password topsecret
# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret
#
# examples
#
# title Windows 95/98/NT/2000
# root (hd0,0)
# makeactive
# chainloader +1
#
# title Linux
# root (hd0,1)
# kernel /vmlinuz root=/dev/hda2 ro
#
#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST
### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below
## DO NOT UNCOMMENT THEM, Just edit them to your needs
## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
## kopt_2_6_8=root=/dev/hdc1 ro
## kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=UUID=bd2ae7b9-80d5-457a-a953-fdcdb8c557c0 ro i8042.nomux=1 i8042.noloop=1
## Setup crashdump menu entries
## e.g. crashdump=1
# crashdump=0
## default grub root device
## e.g. groot=(hd0,0)
# groot=(hd0,0)
## should update-grub create alternative automagic boot options
## e.g. alternative=true
## alternative=false
# alternative=true
## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
## lockalternative=false
# lockalternative=false
## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=quiet splash
## should update-grub lock old automagic boot options
## e.g. lockold=false
## lockold=true
# lockold=false
## Xen hypervisor options to use with the default Xen boot option
# xenhopt=
## Xen Linux kernel options to use with the default Xen boot option
# xenkopt=console=tty0
## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
## altoptions=(recovery) single
# altoptions=(recovery mode) single
## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
## howmany=7
# howmany=all
## should update-grub create memtest86 boot option
## e.g. memtest86=true
## memtest86=false
# memtest86=true
## should update-grub adjust the value of the default booted system
## can be true or false
# updatedefaultentry=false
## should update-grub add savedefault to the default options
## can be true or false
# savedefault=false
## ## End Default Options ##
title Ubuntu 8.04, kernel 2.6.25.9
root (hd0,0)
kernel /vmlinuz-2.6.25.9 root=UUID=bd2... ro quiet splash i8042.nomux=1 i8042.noloop=1
initrd /initrd.img-2.6.25.9
quiet
title Ubuntu 8.04, kernel 2.6.25.9 (recovery mode)
root (hd0,0)
kernel /vmlinuz-2.6.25.9 root=UUID=bd2... ro i8042.nomux=1 i8042.noloop=1 single
initrd /initrd.img-2.6.25.9
title Ubuntu 8.04, kernel 2.6.24-19-generic
root (hd0,0)
kernel /vmlinuz-2.6.24-19-generic root=UUID=bd2... ro quiet splash i8042.nomux=1 i8042.noloop=1
initrd /initrd.img-2.6.24-19-generic
quiet
title Ubuntu 8.04, kernel 2.6.24-19-generic (recovery mode)
root (hd0,0)
kernel /vmlinuz-2.6.24-19-generic root=UUID=bd2ae... ro single i8042.nomux=1 i8042.noloop=1
initrd /initrd.img-2.6.24-19-generic
title Ubuntu 8.04, kernel 2.6.24-16-generic
root (hd0,0)
kernel /vmlinuz-2.6.24-16-generic root=UUID=bd2... ro quiet splash i8042.noloop=1 i8042.nomux=1
initrd /initrd.img-2.6.24-16-generic
quiet
title Ubuntu 8.04, kernel 2.6.24-16-generic (recovery mode)
root (hd0,0)
kernel /vmlinuz-2.6.24-16-generic root=UUID=bd2ae... ro single i8042.nomux=1 i8042.noloop=1
initrd /initrd.img-2.6.24-16-generic
title Ubuntu 8.04, memtest86+
root (hd0,0)
kernel /memtest86+.bin
quiet
### END DEBIAN AUTOMAGIC KERNELS LIST
The order doesn't matter. Please add the boot options to the commented section at the top under default options. This will ensure it gets added every time the menu.lst file is regenerated (ie when you install a new kernel). Then you can manually add the parameters to each of your boot entries, as I have outlined in red.
I know this file gets regenerated whenever you install a new kernel. You can also regenerate it by calling update-grub from the command line as a super user. I preferred to just insert all the options by hand, just in case something else would break in an automatic update.
By the way you have to be a super user to edit the /boot/grub/menu.lst file.
Rebooting you may well have a working touchpad.
If there are any comments or criticisms of this method, I would be very glad to revise the instructions. I do believe that this can quite likely fix an inoperational touchpad, and it does no harm if it is added to the kernel parameters.
It would be wise to back up the menu.lst file, or test it out by manually adding the boot parameters to grub at boot time.
Hope this saves someone the trouble of searching it out on the internet!
Best wishes,
Alexandros
Bookmarks