Touchpad ALPS
Explications
Si vous avez un portable récent et que votre touchpad est de marque ALPS, il est fort probable qu'il ne soit pas reconnu par le noyau : cela se traduit par un fonctionnement à minima (pas de scrolling ou de multitouch), voir un fonctionnement erratique. Il existe deux patches différents.
À l'origine, cela concerne les portables Dell Inspiron 15R N5110, la liste s'étend petit-à-petit à d'autres :
- le Dell Inspiron 17R 7720
- le Dell Latitude - série E6 (particulièrement le E6530), série E7
- le Fujitsu A512
ATTENTION : Les patchs en question ne sont aucunement officiels ! La confiance que vous engagez en ceux-ci, n'engage que vous ...
Versions
Le patch principal se trouve sur le site public de téléchargement de Dahetral.com
- v 0.1 à v 0.4 fonctionne avec les kernels 3.2 et >
- v 1.2 fonctionnerait pour les kernels 3.4 et > - il existe un deuxième patch
- v 1.3 fonctionne pour les kernels 3.7 et >
Détection
Justement sans ce patch le touchpad est mal reconnu par le système, puisqu'il est désigné comme étant un périphérique générique de type souris PS/2.
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ PS/2 Generic Mouse id=11 [slave pointer (2)]
Bien sûr, il faut avoir le paquet xinput installé ;-)
Installation
Avec les droits administrateur, il faut vous positionner dans le répertoire /usr/src/, puis télécharger le patch pour le décompresser.
Téléchargement
cd /usr/src
wget -O- http://www.dahetral.com/public-download/psmouse-alps-1.3.tbz/at_download/file > psmouse-alps-1.3.tbz
tar xjvf psmouse-alps-1.3.tbz
Usage de DKMS
Ensuite nous rentrons dans le répertoire source, puis utiliserons dkms pour compiler au kernel :
- /usr/src/$ mv psmouse-alps-1.3 psmouse-custom-1.3
- /usr/src/$ cd psmouse-custom-1.3
- /usr/src/psmouse-custom-1.3$ dkms add -m psmouse -v custom-1.3
Creating symlink /var/lib/dkms/psmouse/custom-1.3/source ->
/usr/src/psmouse-custom-1.3
DKMS: add completed.
Nous construisons le module avec dkms :
- /usr/src/psmouse-custom-1.3$ dkms build -m psmouse -v custom-1.3
Kernel preparation unnecessary for this kernel. Skipping...
Building module:
cleaning build area....
make KERNELRELEASE=3.8-0.slh.1-aptosid-amd64 -C /lib/modules/3.8-0.slh.1-aptosid-amd64/build M=/var/lib/dkms/psmouse/alps-1.3/build/src psmouse.ko......
cleaning build area....
DKMS: build completed.
Puis nous l'installons :
- /usr/src/psmouse-custom-1.3$ dkms install -m psmouse -v custom-1.3
psmouse:
Running module version sanity check.
- Original module
- Installation
- Installing to /lib/modules/3.8-0.slh.1-aptosid-amd64/updates/dkms/
depmod.......
DKMS: install completed.
Arrivé là, le touchpad devrait être fonctionnel !
Vérifications
xinput nous répond ainsi :
- /usr/src/psmouse-custom-1.3$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ PS/2 Mouse id=14 [slave pointer (2)]
⎜ ↳ AlpsPS/2 ALPS GlidePoint id=16 [slave pointer (2)]
Ce qui est confirmé par dmesg !
[15776.784495] psmouse serio1: alps: E6 report: 00 00 64
[15776.803631] psmouse serio1: alps: E7 report: 73 03 50
[15776.822904] psmouse serio1: alps: EC report: 73 01 0d
[15776.825501] psmouse serio1: alps: ALPS: E7=73 03 50, EC=73 01 0d
[15776.825511] psmouse serio1: alps: Model: proto=5 command_mode_byte3=0d
[15777.237996] psmouse serio1: alps: E6 report: 00 00 64
[15777.258557] psmouse serio1: alps: E7 report: 73 03 50
[15777.281826] psmouse serio1: alps: EC report: 73 01 0d
[15777.284378] psmouse serio1: alps: ALPS: E7=73 03 50, EC=73 01 0d
[15777.284384] psmouse serio1: alps: Model: proto=5 command_mode_byte3=0d
[15777.298488] input: PS/2 Mouse as /devices/platform/i8042/serio1/input/input18
[15777.315704] input: AlpsPS/2 ALPS GlidePoint as /devices/platform/i8042/serio1/input/input19
Problèmes connus
DKMS Build
Bad return status
Lors de la construction avec DKMS, il est possible que cela échoue avec un tel message :
- /usr/src/psmouse-custom-1.3$ dkms build -m psmouse -v custom-1.3
Kernel preparation unnecessary for this kernel. Skipping...
Building module:
cleaning build area....
make KERNELRELEASE=3.8-0.slh.1-aptosid-amd64 -C /lib/modules/3.8-0.slh.1-aptosid-amd64/build M=/var/lib/dkms/psmouse/alps-1.3/build/src psmouse.ko....(bad exit status: 2)
Error! Bad return status for module build on kernel: 3.8-0.slh.1-aptosid-amd64 (x86_64)
Consult /var/lib/dkms/psmouse/custom-1.3/build/make.log for more information.
Créez le lien symbolique suivant :
$ ln -sf /var/lib/dkms/psmouse/alps-1.3 /var/lib/dkms/psmouse/custom-1.3
Puis relancez la phase de compilation !
Install linux-headers
Lors de la construction avec DKMS, il est possible que cela échoue avec un tel message :
$ dkms build -m psmouse -v custom-1.2
Error! Your kernel headers for kernel 3.6-trunk-amd64 cannot be found.
Please install the linux-headers-3.6-trunk-amd64 package,
or use the --kernelsourcedir option to tell DKMS where it's located
Dans un premier temps, vérifiez que vous ayez bien les headers du kernel sur lequel vous cherchez à installer le patch !
- Si ce n'est pas le cas, installez-les !
- Si c'est le cas, il se peut qu'il manque des liens symboliques nécessaires, créez-les ainsi :
$ ln -s /usr/src/linux-headers-3.6-trunk-amd64 /lib/modules/3.6-trunk-amd64/build
$ ln -s /usr/src/linux-headers-3.6-trunk-common/ /lib/modules/3.6-trunk-amd64/source
Cela étant fait, relancez la phase de compilation ci-dessus !
DKMS Install
Bad return status
Si vous avez ce message :
$ dkms install -m psmouse -v custom-1.2
Kernel preparation unnecessary for this kernel. Skipping...
Building module:
cleaning build area....
make KERNELRELEASE=3.7-8.slh.1-aptosid-amd64 -C /lib/modules/3.7-8.slh.1-aptosid-amd64/build M=/var/lib/dkms/psmouse/custom-1.2/build/src psmouse.ko.....(bad exit status: 2)
Error! Bad return status for module build on kernel: 3.7-8.slh.1-aptosid-amd64 (x86_64)
Consult /var/lib/dkms/psmouse/custom-1.2/build/make.log for more information.
Vérifiez le fichier de journalisation en question : /var/lib/dkms/psmouse/custom-1.2/build/make.log
DKMS make.log for psmouse-custom-1.2 for kernel 3.7-8.slh.1-aptosid-amd64 (x86_64) vendredi 22 février 2013, 23:13:05 (UTC+0100) make: entrant dans le répertoire « /usr/src/linux-headers-3.7-8.slh.1-aptosid-amd64 » CC [M] /var/lib/dkms/psmouse/custom-1.2/build/src/psmouse-base.o /var/lib/dkms/psmouse/custom-1.2/build/src/psmouse-base.c: In function ‘__check_smartscroll’: /var/lib/dkms/psmouse/custom-1.2/build/src/psmouse-base.c:64:1: warning: return from incompatible pointer type [enabled by default] CC [M] /var/lib/dkms/psmouse/custom-1.2/build/src/synaptics.o /var/lib/dkms/psmouse/custom-1.2/build/src/synaptics.c: In function ‘set_input_params’: /var/lib/dkms/psmouse/custom-1.2/build/src/synaptics.c:1153:3: error: too few arguments to function ‘input_mt_init_slots’ In file included from /var/lib/dkms/psmouse/custom-1.2/build/src/synaptics.c:29:0: include/linux/input/mt.h:72:5: note: declared here /var/lib/dkms/psmouse/custom-1.2/build/src/synaptics.c:1165:3: error: too few arguments to function ‘input_mt_init_slots’ In file included from /var/lib/dkms/psmouse/custom-1.2/build/src/synaptics.c:29:0: include/linux/input/mt.h:72:5: note: declared here make[1]: *** [/var/lib/dkms/psmouse/custom-1.2/build/src/synaptics.o] Erreur 1 make: *** [psmouse.ko] Erreur 2 make: quittant le répertoire « /usr/src/linux-headers-3.7-8.slh.1-aptosid-amd64 »
Dans l'immédiat, nous ne savons pas répondre encore à ce problème !
Crédits
Je tiens à remercier ustilago, sans qui je ne me serais même pas inquiété de ce problème ;-)