Mouse Mysteries
Par Petaramesh le lundi 25 septembre 2006, 15:38 - Informatique non-duelle - Lien permanent
Un billet plein de geekitude, qui narre l'une de ces bizarrouilleries informatiques qui font le bonheur des petits et des grands.... Et l'arrachage de cheveux des professionnels.
J'ai un vieux portable Compaq Presario 1200 12XL307 que je traîne depuis quelques années, et dont la lenteur n'a d'égale que le manque de rapidité. Vu que c'est pas du tout jeune.
Le jour lointain où j'entrai en possession de cette chose, la première chose que je fis fut de virer totalement le Windows qui était dessus d'un bon coup de fdisk, bon débarras, et d'installer une distribution GNU / Linux à la place.
Or, l'objet possède, comme la plupart des portables, un Touchpad Synaptics tenant lieu de souris, cette espèce de surface rectangulaire sur laquelle on déplace le doigt.
A l'époque où j'installai mon premier Linux dessus, j'utilisais un noyau de la série 2.2 si mes souvenirs sont exacts. Le noyau n'avait pas de difficulté particulière à gérer le Touchpad Synaptics et ses deux boutons, vus et traités comme une souris PS/2 à deux boutons ordinaire.
Par contre, le Touchpad Synaptics de mon portable comporte aussi deux touches fléchées bleues haut/bas, censées offrir la fonction de la molette de défilement des souris à molette, et ces deux touches étaient purement et simplement ignorées par Linux. Après bien des tentatives sans succès (installation de divers drivers Synaptics qui ne m'apportèrent jamais grand-chose de bien intéressant), je finis par abandonner tout espoir de faire marcher ces putains de touches bleues de la pseudo-molette.
Je pouvais aussi, si l'idée m'en prenait, brancher une véritable souris PS/2 au cul du portable, et utiliser une combinaison de touches [Fn]-[F2][1] pour basculer entre l'utilisation du Touchpad ou celle de la souris externe.
Je passai un jour aux noyaux de la série 2.4, sans changement.
Puis vint la série 2.6, et un protocole tout différent de gestion de la souris. La première chose que je remarquai, c'est que, miracle, les deux touches fléchées bleues du Touchpad marchaient enfin par enchantement, et accomplissaient leur fonction de "molette" virtuelle.
La deuxième chose que je remarquai, c'est que le Touchpad lui-même était désormais plus intelligemment géré, car il intégrait (en douce, le bougre) deux zones correspondant aux "ascenseurs" de défilement, verticale à droite, horizontale en bas. Bien-bien !
La troisième chose que je vis est que, désormais, lors du démarrage, le noyau logguait quelques trucs intéressants, et différents du passé, dans /var/log/messages :
Sep 25 10:44:46 silenus kernel: Linux version 2.6.12-12mdk (apatard@n1.mandriva.com) (gcc version 4.0.1 (4.0.1-5mdk for Mandriva Linux release 2006.0)) #1 Fri Sep 9 18:15:22 CEST 2005 Sep 25 10:44:46 silenus kernel: PNP: No PS/2 controller found. Probing ports directly. Sep 25 10:44:46 silenus kernel: serio: i8042 AUX port at 0x60,0x64 irq 12 Sep 25 10:44:46 silenus kernel: serio: i8042 KBD port at 0x60,0x64 irq 1 Sep 25 10:44:46 silenus kernel: Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing enabled Sep 25 10:44:46 silenus kernel: io scheduler noop registered Sep 25 10:44:46 silenus kernel: io scheduler anticipatory registered Sep 25 10:44:46 silenus kernel: io scheduler deadline registered Sep 25 10:44:46 silenus kernel: io scheduler cfq registered Sep 25 10:44:46 silenus kernel: mice: PS/2 mouse device common for all mice Sep 25 10:44:46 silenus kernel: Synaptics Touchpad, model: 1, fw: 4.6, id: 0xf42a1, caps: 0x80471b/0x0 Sep 25 10:44:46 silenus kernel: input: SynPS/2 Synaptics TouchPad on isa0060/serio1 Sep 25 10:44:46 silenus kernel: ts: Compaq touchscreen protocol output
On voit tout de suite que le bestiau est beaucoup mieux reconnu que par le passé, et qu'il n'est donc pas surprenant qu'il fonctionne de manière plus complète.
Mais la quatrième chose que je remarquai, hélas, c'est qu'il n'était plus du tout possible d'utiliser une souris PS/2 externe, que ce soit en plus, ou à la place, du Touchpad.
Le fait de brancher une souris externe ne semblait absolument plus produire le moindre résultat, la combinaison de touches [Fn]-[F2] devenue désormais totalement inopérante (Je précise que j'ai évidemment tenté d'utiliser tous les pilotes et réglages possibles et imaginables, logiques ou illogiques...).
On aurait pu croire que la souris externe n'était pas vue du tout, si ce n'est qu'un coup d'oeil dans /var/log/messages m'apprit que, dès que l'on déplaçait la souris externe, le noyau se mettait à logguer des kilomètres de :
Sep 25 09:10:50 silenus kernel: psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 4 Sep 25 09:10:50 silenus kernel: psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 1 Sep 25 09:10:50 silenus kernel: psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 1 Sep 25 09:10:50 silenus kernel: psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 4 Sep 25 09:10:50 silenus kernel: psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 1 Sep 25 09:10:50 silenus kernel: psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 1 Sep 25 09:10:50 silenus kernel: psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 4 Sep 25 09:10:50 silenus kernel: psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 1 Sep 25 09:10:50 silenus last message repeated 28 times Sep 25 09:10:50 silenus kernel: psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 4 Sep 25 09:10:50 silenus kernel: psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 1 Sep 25 09:10:50 silenus kernel: psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 1 Sep 25 09:10:51 silenus kernel: psmouse.c: TouchPad at isa0060/serio1/input0 - driver resynched. Sep 25 09:10:51 silenus kernel: psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 1 Sep 25 09:12:53 silenus last message repeated 49 times
Etc.
Whoooups ! Les octets tombent du tuyau et inondent la moquette...
C'est par le plus grand des hasards que, pour essayer d'aider Mademoiselle Patâpatî aux prises avec Pingus, et qui avait du mal à s'en dépatouiller avec le Touchpad, que j'essayai, de guerre las, de brancher sur le portable non pas une souris PS/2, mais une souris USB, celle de Mâ Anandaramesh.
Et que croyez-vous qu'il arriva ? La souris fonctionna aussitôt, impeccable. Sans nécessiter l'usage de la moindre combinaison de touches spéciales. Et simultanément au Touchpad. On peut brancher ou débrancher la souris USB à la volée, elle est immédiatement prise en compte, et peut alors être utilisée conjointement au Touchpad, elle est pas belle, la vie ?
Du coup, ce matin, j'ai acheté une mini-souris USB optique, et ça fonctionne (aussi) du Feu de Dieu.
Quand on la branche, le système loggue :
Sep 25 12:18:40 silenus kernel: usb 1-2: new low speed USB device using uhci_hcd and address 2 Sep 25 12:18:41 silenus kernel: usbcore: registered new driver hiddev Sep 25 12:18:41 silenus kernel: input: USB HID v1.10 Mouse [04d9:0499] on usb-0000:00:07.2-2 Sep 25 12:18:41 silenus kernel: usbcore: registered new driver usbhid Sep 25 12:18:41 silenus kernel: drivers/usb/input/hid-core.c: v2.01:USB HID core driver Sep 25 12:18:41 silenus kernel: usbcore: registered new driver usbmouse Sep 25 12:18:41 silenus kernel: drivers/usb/input/usbmouse.c: v1.6:USB HID Boot Protocol mouse driver Sep 25 12:18:41 silenus udev[6064]: run_program: exec of program failed Sep 25 12:18:41 silenus udev[6065]: run_program: exec of program failed Sep 25 12:18:42 silenus pam_console.dev[6082]: Restoring console permissions for /dev/input/mouse1 Sep 25 12:18:42 silenus pam_console.dev[6094]: Restoring console permissions for /dev/input/ts1 Sep 25 12:18:42 silenus hal.hotplug[6102]: DEVPATH is not set Sep 25 12:18:42 silenus pam_console.dev[6111]: Restoring console permissions for /dev/input/event2
Et voilou.
J'ai pensé que cette info pouvait intéresser d'autres utilisateurs de portables qui se désoleraient de ne pouvoir utiliser de souris PS/2 externe sur leur machin équipé d'un Touchpad : Essayez donc avec une souris USB, ça a des chances de le faire !
Etonnant, non ? © Desproges
Notes
[1] Gérées, je suppose, par le BIOS.










Commentaires
euh ... chuis nullos, mais je savais ... pisque quand j'ai acheté mon portable, mon assembleur m'avais assuré que le jour ou je souhaitais passer coté linux c'était no problem, même qu'il m'avait fait essayer son ASUS avec souris usb ... pasque y a que les djeunz qui aiment les touch-pad et autres ... gadgets pour adeptes du joystick ....
Les histoires de souris, c'est toujours un peu compliqué ...:-)
Bon, cher Swami, tout d'abord, je ne prétends pas t'apprendre quelque chose en configuration de manchot, loin de moi cette idée. Mais comme chez moi ça marche (c'est à dire, j'ai une souris PS/2 et un Touchpad, mais qui fonctionnent pas en même temps), je ne résiste pas à te transmettre un bout de mon xorg.conf, des fois que.
La Configured mouse correspond à ma souris PS/2, et l'autre évidemment au Touchpad. Et selon le device que j'active dans la section ServerLayout, ben j'ai l'un ou l'autre (et même, il me semble que si je lance mon X sans ma souris branchée, le touchpad fonctionne, à vérifier).
Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" Option "CorePointer" Option "Device" "/dev/input/mice" Option "Protocol" "ImPS/2" Option "Emulate3Buttons" "true" Option "ZAxisMapping" "4 5" EndSection Section "InputDevice" Identifier "Synaptics Touchpad" Driver "synaptics" Option "SendCoreEvents" "true" Option "Device" "/dev/psaux" Option "Protocol" "auto-dev" Option "HorizScrollDelta" "0" EndSectionVoili voilou...
Intéressantes infos, Julien, puissent-elles être utiles à quelqu'un !
En ce qui me concerne, je n'ai plus de problème ayant choisi la solution radicale d'acheter une souris USB plutôt que PS/2, oui, je sais, c'est bourrin, mais en plus elle est miniature et optique, alors c'est définitivement mieux que la vieille souris PS/2 pourave que je traînais dans un coin.
Je ne pense par ailleurs pas que le problème était exactement similaire au tien, probablement nos configs hardware sont-elles différentes. Quoi qu'il en soit, le problème ne concernait pas uniquement X11, mais également gpm, aussi une solution purement X11ienne n'aurait-elle pu me satisfaire.
Et, d'autre part, le problème est apparu sur mon portable en passant des noyaux de la série 2.4 à 2.6 (incorporant un pilote Synaptics antérieurement absent), et je suppose très fort que le malaise est lié à ce pilote...
Enfin quoi qu'il en soit merci pour tes suggestions, mais j'ai par ailleurs ma solution, qui pour être bourrine n'en est pas moins efficace ;-)