Fix for new Touchpad using elantech driver (linux)

I’ve recently bought  a ASUS s301l laptop. This laptop seems to have a new version of touchpad that elantech module cannot detect (kernel version 3.15.4). Because of that, touchpad is detected like an PS/2 and it lacks most of the funcionlities (two fingers gestures, etc.). The error that psmouse driver is giving is: psmouse:elantech_detect: psmouse serio4: elantech: Elantech version query result 0x46, 0x1f, 0x14. psmouse:elantech_detect: psmouse serio4: elantech: Probably not a real Elantech touchpad. Aborting. This detection is performed in elantech_is_signature_valid function. This function compares one of the registers read from the touchpad controller to a set of numbers . If the value of the register matches one of the numbers, the detection fails. (I don’t know the reason of all of this). My touchpad controller returns one of the forbidden values (0x14) so I’ve tried a quick hack: removing the  offending value from the list in that function. After compiling and loading the module, the touchpad is recognized (good!) and it is working (awesome!). If you are in the same problem with your laptop, this is the line you may change in elantech.c module: // static const unsigned char rates[] = { 200, 100, 80, 60, 40, 20, 10 }; static const unsigned char rates[] = { 200, 100, 80, 60, 40, 21, 10 };

This entry was posted in General and tagged , , , , , . Bookmark the permalink. Follow any comments here with the RSS feed for this post. Post a comment or leave a trackback.

10 Comments

  1. mariana S
    Posted miércoles, 3 septiembre 2014 at %H:%M 05Wed, 03 Sep 2014 05:53:45 +000045. | Permalink

    where to find it elantech.c module?

    • Màrius
      Posted miércoles, 3 septiembre 2014 at %H:%M 08Wed, 03 Sep 2014 08:25:15 +000015. | Permalink

      elantech.c is in your linux sources
      in my case is in /usr/src/linux-3.15.4/drivers/input/mouse/elantech.c

      Greetings

  2. Posted miércoles, 10 septiembre 2014 at %H:%M 08Wed, 10 Sep 2014 20:39:45 +000045. | Permalink

    Marius, thank you so much! This problem was vexing me and it would have taken me about a weekend or so to solve. Thanks to you, I did it in 15 minutes. So this weekend, I am going to have a beer in your honor with all my free time 🙂

    • Màrius
      Posted jueves, 11 septiembre 2014 at %H:%M 10Thu, 11 Sep 2014 10:04:59 +000059. | Permalink

      You’re welcome!

      I contacted kernel developers and they has prepared a patch, so it is expected to have support for our touchpads in the main kernel very soon!.

      Enjoy your beers.

      Màrius

  3. Joaquín López Cortés
    Posted domingo, 14 septiembre 2014 at %H:%M 10Sun, 14 Sep 2014 10:24:00 +000000. | Permalink

    After installation of Ubuntu 14.04 on my new laptop ASUS X550DP (dual installation with win8) I detected exactly the same problems described above. As a “beginner”, I searched for the elantech.c file in my system, but successless. Do you have a hint how to download it?

    In addition, the keyboard behaves strangely and reacts sometimes very slowly, sometimes too sensitive to inputs. Have you eventually heard about this?

    Final remarks: When connecting a normal, external USB-mouse, it works a little better, the mouse pointer can be moved. All other functions behave wrong.
    And under win8 everything works well for now.

    Thanks in advance for any hint,

    Joaquín

  4. Posted jueves, 9 octubre 2014 at %H:%M 06Thu, 09 Oct 2014 18:28:17 +000017. | Permalink

    Hi! I can’t understand how to get that file named elegantech.c. How and where can i get it?

    I have a s301lp laptop and kernel 3.13.
    Thanks for your help 🙂

    • Màrius
      Posted jueves, 9 octubre 2014 at %H:%M 06Thu, 09 Oct 2014 18:31:51 +000051. | Permalink

      This file is in the linux kernel soure code tree (in ubuntu you need to install the linux-source-3.13.0 packet), usually locted at /usr/src/linux-source-3.13.0/drivers/input/mouse/elantech.c

Responder a Màrius Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Your email address will never be published.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.