Cette semaine c'était ma rentrée au taf... et bien y a pas à dire, c'est vraiment mieux les vacances ;-)Du coup, ce soir, je suis allé me défouler à la rando roller et j'ai croisé plein de monde : Seb_la_Chèvre ; Mr. J, son frère et sa copine ; et un camarade de maîtrise.
J'ai reçu ma dernière commande "geek" (sur SplitReason) :
Ma souris est tombée en panne donc j'ai récupéré la souris sans fil optique que j'avais acheté pour le boulot.
J'ai eu un peu de mal à la faire fonctionner sous Linux, en cherchant sur le net j'ai fini par trouver une solution, je vais faire un résumé ici pour mes futurs visiteurs via Google ;)
Déjà les identifiants USB de ma souris sont :
0x062a:0x0000 (Amarina S1500 Surf Mouse).Quand je la branchait au PC j'avais les erreurs USB suivantes :
Aug 27 00:28:51 royale kernel: usb 1-1.3: new low speed USB device using address 3 Aug 27 00:28:51 royale kernel: usb 1-1.3: config 0 descriptor?? Aug 27 00:28:57 royale kernel: usb 1-1.3: control timeout on ep0in Aug 27 00:28:57 royale kernel: usb 1-1.3: string descriptor 0 read error: -110 Aug 27 00:29:02 royale kernel: usb 1-1.3: control timeout on ep0out Aug 27 00:29:12 royale kernel: drivers/usb/input/hid-core.c: ctrl urb status -2 received Aug 27 00:29:12 royale kernel: drivers/usb/input/hid-core.c: timeout initializing reports Aug 27 00:29:12 royale kernel: Aug 27 00:29:17 royale kernel: usb 1-1.3: control timeout on ep0out Aug 27 00:29:17 royale kernel: input: USB HID v1.10 Mouse [062a:0000] on usb-0000:00:07.2-1.3Et bien sûr *prout* :-/
En fouilant un peu donc, je suis tombé sur ce patch. En l'adaptant un peu pour le noyau 2.6.8.1 voilà ce que j'obtiens :
royale@royale:/usr/src/linux-2.6.8.1/drivers/usb/core$ diff -u message.bak.c message.c
--- message.bak.c 2004-08-27 18:30:33.000000000 +0200
+++ message.c 2004-08-27 18:54:14.000000000 +0200
@@ -689,7 +689,7 @@
/* get langid for strings if it's not yet known */
if (!dev->have_langid) {
- err = usb_string_sub(dev, 0, 0, tbuf);
+ err = usb_get_string(dev, 0, 0, tbuf, dev->epmaxpacketin[0]);
if (err < 0) {
dev_err (&dev->dev,
"string descriptor 0 read error: %d\n",
@@ -708,7 +708,7 @@
}
}
- err = usb_string_sub(dev, dev->string_langid, index, tbuf);
+ err = usb_get_string(dev, dev->string_langid, index, tbuf, 256);
if (err < 0)
goto errout;
Ca suffit pour que ça marche chez moi :-D