mercredi 11 juin 2014

Asus touchpad not detected under Ubuntu Linux

I've bought a new Asus X450CC, wiped out all the partitions, and installed Xubuntu.

The problem is that the touchpad is not recognized under Linux, although it worked without any problems under Windows, which excludes a hardware problem.

The touchpad is listed as PS/2 Logitech Wheel Mouse in the output of xinput, and the following lines can be found in the output of dmesg:
 
[    4.007364] input: PS/2 Logitech Wheel Mouse as /devices/platform/i8042/serio4/input/input11
[    4.035847] psmouse serio4: Failed to enable mouse on isa0060/serio4

I've tried mostly everything :
  • With the latest upstream kernel, the problem is still there.
    $ cat /proc/version
    Linux version 3.15.0-031500rc7-generic (apw@gomeisa) (gcc version 4.6.3
    (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #201405251935 SMP Sun May 25 23:36:23 UTC 2014
  •  The i8042 chip is the keyboard and mouse controller, and i8042.c is the source code file in Linux kernel. It can be controlled with kernel parameters:
     
    i8042.debug [HW] Toggle i8042 debug mode
    i8042.direct [HW] Put keyboard port into non-translated mode
    i8042.dumbkbd [HW] Pretend that controller can only read data from
           keyboard and cannot control its state
           (Don't attempt to blink the leds)
    i8042.noaux [HW] Don't check for auxiliary (== mouse) port
    i8042.nokbd [HW] Don't check/create keyboard port
    i8042.noloop [HW] Disable the AUX Loopback command while probing
           for the AUX port
    i8042.nomux [HW] Don't check presence of an active multiplexing
           controller
    i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX
           controllers
    i8042.notimeout [HW] Ignore timeout condition signalled by controller
    i8042.reset [HW] Reset the controller during init and cleanup
    i8042.unlock [HW] Unlock (ignore) the keylock

    To pass kernel parameters, edit the following file:

    $ sudoedit /etc/default/grub

    and add the desired parameter at the end of GRUB_CMDLINE_LINUX_DEFAULT, then:

    $ sudo update-grub

    and reboot.

    I've tried booting with i8042.nomux, then i8042.notimeout i8042.nomux and finally i8042.notimeout i8042.nomux i8042.reset and it didn't make any difference.
  • I've tried playing with the proto module parameter:

    $ sudo modprobe -r psmouse
    $ sudo modprobe psmouse proto=imps

    I've tried the following values: bare, imps and exps, none of them made the touchpad work.
  • I've tried all the patches I could find, when they still applied to the kernel:

    $ wget https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1166442/+attachment/3941591/+files/psmouse-elantech-x551c.tar.gz
    $ sudo dkms ldtarball psmouse-elantech-x551c.tar.gz
    $ sudo dkms install -m psmouse -v elantech-x551c
    $ sudo modprobe -r psmouse
    $ sudo modprobe psmouse

    I've also tried psmouse-elantech-v6.tar.bz2 and psmouse-elantech-v7.tar.bz2. It didn't work either. 

 So I've filed a bug report on Launchpad, but I'm not the only one: