Ubuntu – What does the ‘i8042.nomux=1’ kernel option do during booting of Ubuntu

kernellinuxtouchpadUbuntu

I have a laptop with a multi guesture touchpad. My touchpad never works in any Linux distro such as Ubuntu, Fedora, openSUSE, Linux Mint, Knoppix, Puppy, Slitaz and lots more. I have tried lots of things but nothing worked. I have been struggling with the Synaptics drivers for over one year but it doesn't work either.

Then somewhere I read about the i8042.nomux kernel option. So I booted Ubuntu with following options:

i8042.nomux=1 i8042.reset

This made my touchpad work on all variants of Ubuntu and its derivatives like Linux Mint.

I am eager to know about these options. If I knew what it does exactly, I would be able to use my touchpad in all linux distros, as this option only works with Ubuntu.

Best Answer

This is an arcane option, only necessary on some rare devices (one of which you have). The only documentation is one line in the kernel parameters list.

The i8042 controller controls PS/2 keyboards and mice in PCs. It seems that on your laptop, both the keyboard and the touchpad are connected through that chip.

From what I understand from the option name and a brief skim of the source code (don't rely on this to write an i8042 driver!), some i8042 chips are capable of multiplexing data coming from multiple pointing devices. The traditional PS/2 interface only provides for one keyboard and one mouse; modern laptops often have a two or more of a touchpad, a trackstick and an external PS/2 plug. Some controllers follow the active PS/2 multiplexing specification, which permit up to 4 devices; the data sent by each device carries an indication of which device it comes from.

The Linux driver tries to find out whether the i8042 controller supports multiplexing, but sometimes guessing wrongly. With the i8042.nomux=1 parameter, the driver does not try to detect whether the controller supports multiplexing and assumes that it doesn't. With the i8042.reset parameter, the driver resets the controller when starting, which may be useful to disable multiplexing mode if the controller does support it but in a buggy way.

Related Question