Ceci est une ancienne révision du document !
Le touchpad Asus
Le touchpad sur un portable asus fonctionne à peu près correctement, mais il n'est pas reconnu totalement par le système. En effet, lorsque vous naviguez dans le menu Système → Préférences → Souris, il n'y a pas d'onglet "Pavé tactile".
En suivant la documentation sur les touchpads, il est indiqué d'installer GPointingDeviceSettings cependant aucun pavé tactile n'est détecté. En revanche, une souris "ImPS/2 Logitech Wheel Mouse" est présente… Cette page propose donc de rectifier ce problème en créant un module qui intègre les modifications nécessaires afin de pouvoir l' ajouter au noyau.
sudo cp /lib/modules/`uname -r`/kernel/drivers/input/mouse/psmouse.ko /lib/modules/`uname -r`/kernel/drivers/input/mouse/psmouse.ko.backup
atching file drivers/input/mouse/elantech.c Hunk #2 FAILED at 14. Hunk #3 FAILED at 22. Hunk #4 FAILED at 41. Hunk #5 FAILED at 66. Hunk #6 FAILED at 80. Hunk #7 succeeded at 116 (offset 14 lines). Hunk #8 FAILED at 120. Hunk #9 FAILED at 136. Hunk #10 succeeded at 179 (offset 26 lines). Hunk #11 FAILED at 170. Hunk #12 FAILED at 203. Hunk #13 FAILED at 248. Hunk #14 succeeded at 341 with fuzz 2 (offset 75 lines). Hunk #15 FAILED at 275. Hunk #16 FAILED at 407. Hunk #17 FAILED at 465. Hunk #18 FAILED at 481. Hunk #19 succeeded at 1183 with fuzz 1 (offset 637 lines). Hunk #20 FAILED at 602. Hunk #21 FAILED at 643. Hunk #22 FAILED at 695. Hunk #23 FAILED at 725. Hunk #24 FAILED at 779. Hunk #25 succeeded at 1487 (offset 693 lines). 19 out of 25 hunks FAILED -- saving rejects to file drivers/input/mouse/elantech.c.rej patching file drivers/input/mouse/elantech.h Hunk #2 succeeded at 11 with fuzz 2 (offset 3 lines). Hunk #3 FAILED at 61. Hunk #4 FAILED at 72. Hunk #5 FAILED at 91. 3 out of 5 hunks FAILED -- saving rejects to file drivers/input/mouse/elantech.h.rej user@user-X550LN:~/src/linux-source-3.13.0$ make -C /usr/src/linux-headers-`uname -r` SUBDIRS=`pwd` drivers/input/mouse/psmouse.ko make: entrant dans le répertoire « /usr/src/linux-headers-3.13.0-34-generic » CC [M] /home/user/src/linux-source-3.13.0/drivers/input/mouse/psmouse-base.o CC [M] /home/user/src/linux-source-3.13.0/drivers/input/mouse/synaptics.o CC [M] /home/user/src/linux-source-3.13.0/drivers/input/mouse/alps.o CC [M] /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.o /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c: In function ‘elantech_read_reg’: /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:120:7: error: ‘ETF020030’ undeclared (first use in this function) case ETF020030: ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:120:7: note: each undeclared identifier is reported only once for each function it appears in /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:121:7: error: ‘ETF0208’ undeclared (first use in this function) case ETF0208: ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:122:7: error: ‘ETF020B00’ undeclared (first use in this function) case ETF020B00: ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:123:7: error: ‘ETF0402’ undeclared (first use in this function) case ETF0402: ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:124:7: error: ‘ETF0401’ undeclared (first use in this function) case ETF0401: ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:125:7: error: ‘ETF0403’ undeclared (first use in this function) case ETF0403: ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:126:7: error: ‘ETF1400’ undeclared (first use in this function) case ETF1400: ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:127:7: error: ‘ETF5900’ undeclared (first use in this function) case ETF5900: ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:129:44: error: ‘register_read’ undeclared (first use in this function) elantech_ps2_command(psmouse, NULL, register_read) || ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c: In function ‘elantech_write_reg’: /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:183:7: error: ‘ETF020030’ undeclared (first use in this function) case ETF020030: ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:184:7: error: ‘ETF0208’ undeclared (first use in this function) case ETF0208: ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:185:7: error: ‘ETF020B00’ undeclared (first use in this function) case ETF020B00: ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:186:7: error: ‘ETF0402’ undeclared (first use in this function) case ETF0402: ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:187:7: error: ‘ETF0401’ undeclared (first use in this function) case ETF0401: ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:188:7: error: ‘ETF0403’ undeclared (first use in this function) case ETF0403: ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:189:7: error: ‘ETF1400’ undeclared (first use in this function) case ETF1400: ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c: In function ‘elantech_report_absolute_v2’: /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:345:24: error: redefinition of ‘etd’ struct elantech_data *etd = psmouse->private; ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:343:24: note: previous definition of ‘etd’ was here struct elantech_data *etd = psmouse->private; ^ /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c: In function ‘elantech_set_int_attr’: /home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.c:1191:24: error: ‘ETF020030’ undeclared (first use in this function) if (etd->hw_version < ETF020030) { ^ make[1]: *** [/home/user/src/linux-source-3.13.0/drivers/input/mouse/elantech.o] Erreur 1 make: *** [drivers/input/mouse/psmouse.ko] Erreur 2 make: quittant le répertoire « /usr/src/linux-headers-3.13.0-34-generic »
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1314198/comments/31
Ce problème semble concerner beaucoup de détenteur ASUS et la solution de contournement fonctionne parfaitement chez moi.
Première méthode
Pré-requis
Installez les paquets linux-source linux-headers-`uname -r` build-essential libncurses5 libncurses5-dev
Ce qui donne par exemple en ligne de commande à saisir dans un terminal:
sudo apt-get install linux-source linux-headers-`uname -r` build-essential libncurses5 libncurses5-dev
linux-source-`uname -r`
Création du module
- Créer un répertoire src dans votre répertoire home et y copier les sources correspondant à votre version. (remplacer VERSION par les références de la votre, que vous pouvez connaître en faisant ls /usr/src/linux-source*.bz2) :
mkdir ~/src cd ~/src tar jxvf /usr/src/linux-source-VERSION.tar.bz2 cd linux-source-VERSION
- Copier la configuration actuelle :
cp /boot/config-VERSION .config make oldconfig
Donc pensez à replacer le "VERSION" par 2.XX ci-dessus. Pour la suite, bien garder l'expression `uname -r`, qui correspond à la version actuelle de votre noyaux. (exemple 3.0.1)
- Vérifier que l'option elantech est active :
grep -i elantech .config
qui doit renvoyer
CONFIG_MOUSE_PS2_ELANTECH=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
lancez
make menuconfig
descendez à la section Device Drivers 1) → Input Device Support 2) → Mice 3) . Pressez la barre d'espace à la ligne Elantech PS/2 protocol extension ce qui devrait ajouter un astérisque [*] indiquant la bonne sélection. Choisissez ensuite Exit 4) jusqu'à la question « Do you wish to save your new kernel configuration » où vous surlignerez l'option YES 5) afin de sauvegarder la configuration.
- haut (↑) / bas (↓) : pour choisir une ligne
- Entrée : pour valider la sélection précédemment surlignée
- Barre espace permet de modifier l'état de la ligne sélectionnée par les flèches haut (↑) / bas (↓)
* Appliquer les patchs
wget -O 01elantech_2.6.38.patch https://launchpadlibrarian.net/71387234/01elantech_2.6.38.patch patch -p1 < 01elantech_2.6.38.patch
- Construire le module incluant le patch
make -C /usr/src/linux-headers-`uname -r` SUBDIRS=`pwd` drivers/input/mouse/psmouse.ko
Chargement du module
Pour vérifier que le module fraichement créé fonctionne, saisissez dans un terminal les commandes suivantes
sudo modprobe -r psmouse sudo insmod drivers/input/mouse/psmouse.ko
Un onglet "Pavé tactile" doit être présent dans le menu Système → Préférences → Souris
Si ça n'est pas le cas, déchargez le module :
sudo modprobe -r psmouse sudo modprobe psmouse
et ensuite?
Rendre le changement permanent
Pour que le noyau charge ce module à chaque démarrage il vous faut le copier dans le système.
sudo cp drivers/input/mouse/psmouse.ko /lib/modules/`uname -r`/kernel/drivers/input/mouse/psmouse.ko
Vérifiez que cette copie fonctionne
sudo modprobe -r psmouse sudo modprobe psmouse
Si toutefois celà ne fonctionnait pas, pour annuler les changements :
sudo cp /lib/modules/`uname -r`/kernel/drivers/input/mouse/psmouse.ko.backup /lib/modules/`uname -r`/kernel/drivers/input/mouse/psmouse.ko sudo modprobe -r psmouse sudo modprobe psmouse
Liste des portables pris en charge par le module
Seconde méthode
Instructions
Voici une solution plus simple et plus robuste:
- Installez dkms
- Vérifiez si aucun module elantech n'a été installé auparavant
dkms status
- Si un module elantech est installé, supprimez-le:
remove -m <module> -v <module-version> --all
Exemple:
sudo dkms remove -m psmouse -v elantech-lp681904-1 --all
- Il faut maintenant télécharger et installer le nouveau module:
cd /usr/src/ sudo wget http://people.debian.org/~julien/lp681904/psmouse-elantech-lp681904-1.tar.bz2 sudo tar jxvf psmouse-elantech-lp681904-1.tar.bz2 sudo dkms add -m psmouse -v elantech-lp681904-1 sudo dkms build -m psmouse -v elantech-lp681904-1 sudo dkms install -m psmouse -v elantech-lp681904-1
Redémarrez et votre pavé tactile sera correctement reconnu!
Liste des portables pris en charge par le module
Contourner le problème
Instructions
Si malgré tout aucune des solutions précédentes ne fonctionne, il est possible de passer un paramètre à grub pour que le pavé tactile soit reconnu comme un pavé tactile "simple", c’est-à-dire un pavé tactile qui ne soit pas multipoint. Certaines fonctionnalités comme le scrolling ne fonctionneront donc pas, mais vous pourrez toutefois déplacer le pointeur et les clics droit/gauche fonctionneront correctement.
Pour ce faire, il vous faudra éditer le fichier /etc/default/grub ; Ajoutez à la clé GRUB_CMDLINE_LINUX_DEFAULT le couple clé/valeur suivant "psmouse.proto=bare".
Par exemple si la ligne du fichier /etc/default/grub ressemble à ceci :
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Au final, elle devra ressembler à cela :
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash psmouse.proto=bare"
Ouvrez ensuite un terminal et entrez-y la commande suivante :
sudo update-grub
Une fois cette opération terminée, il vous faut redémarrer votre ordinateur et le tour est joué !