Leonardo: Librairie HID avec Android

Bonsoir a tous,
Pour faire court, j'ai écrit un sketch qui me permet, à travers le port serie (Pin 0 et 1) de faire bouger la souris avec les coordonnées absolues et cliquer.

Tout fonctionne parfaitement sur Windows, je tape <100;100> (Coordonnées <X;Y>) sur le bus UART, la souris se deplace aux bonnes coordonnées et clique, de meme avec MacOSx
Par contre quand je branche L'arduino Leonardo sur une Box Android (2.3), rien ne se passe, quelques fois le souris clique, mais au centre de l'ecran,sans prendre en compte les coordonnées.

Si quelqu'un a une piste ..
Merci D'avance !
Abientot !

Question bébête : est-ce qu'une souris USB fonctionne avec ta box Android ?

Salut, oui une souris usb fonctionne, ce qui est bizarre quand je branche mon leonardo sur la box, le curseur de souris n'apparait pas...

Bonjour,

As tu un accès console sur ta box Android ?
Si oui il faudrait regarder les logs noyau.

Je ne connais pas trop Android, j'ai acces au Terminal (console), quelle commande des-je taper ?
Merci

EDIT: J'ai telechargé Log Viewer et voila ce que ca donne (les premiers lignes sont quand je branche ma souris USB et ensuite mon Arduino) :

2013-08-28 16:38:12.358 E 113/EventHub: could not get driver version for /dev/input/mouse2, Not a typewriter
2013-08-28 16:38:12.358 E 113/EventHub: could not get driver id for /dev/input/mouse2, Not a typewriter
2013-08-28 16:38:12.358 I 113/EventHub: New keyboard: device->id=0x70000 devname='Microsoft Microsoft® Comfort Mouse 4500' propName='hw.keyboards.458752.devname' keylayout='/system/usr/keylayout/qwerty.kl'
2013-08-28 16:38:12.358 I 113/EventHub: New device: path=/dev/input/event3 name=Microsoft Microsoft® Comfort Mouse 4500 id=0x70000 (of 0x5) index=4 fd=85 classes=0x101
2013-08-28 16:38:12.358 I 113/InputReader: Device added: id=0x0, name=Microsoft Microsoft® Comfort Mouse 4500, sources=00002103
2013-08-28 16:38:12.358 W 113/InputReader: Ignoring spurious device added event for deviceId 0.
2013-08-28 16:38:12.358 I 113/InputManager-Callbacks: No input device calibration properties found for device Microsoft Microsoft® Comfort Mouse 4500.

2013-08-28 16:38:29.963 I 113/EventHub: New keyboard: device->id=0x70004 devname='Arduino LLC Arduino Leonardo' propName='hw.keyboards.458756.devname' keylayout='/system/usr/keylayout/qwerty.kl'
2013-08-28 16:38:29.963 I 113/EventHub: New device: path=/dev/input/event4 name=Arduino LLC Arduino Leonardo id=0x70004 (of 0x5) index=5 fd=164 classes=0x23
2013-08-28 16:38:29.963 I 113/InputReader: Device added: id=0x70004, name=Arduino LLC Arduino Leonardo, sources=00000301
2013-08-28 16:38:29.963 I 113/InputManager-Callbacks: No input device calibration properties found for device Arduino LLC Arduino Leonardo.

Les logs (android) de la souris qui marche ne semblent pas dire que la souris est détecté ... bizarre.
Concernant la Leonardo seul le clavier est manifestement détecté (mais est-ce bien le cas ?).

Console -> "su" (pour passer en root, si ton android est rooté bien sur) -> "dmesg" (pour avoir les logs du noyau Linux)

Merci Skywodd, alors voila pour dmsg
Avec souris Microsoft :

<6>[ 844.060000] usb 1-1.2: new low speed USB device using dwc_otg and address 10
<6>[ 844.304000] input: Microsoft Microsoft® Comfort Mouse 4500 as /devices/lm0/usb1/1-1/1-1.2/1-1.2:1.0/input/input8
<6>[ 844.309000] generic-usb 0003:045E:076C.0006: input,hidraw0: USB HID v1.11 Mouse [Microsoft Microsoft® Comfort Mouse 4500] on usb-lm0-1.2/input0

Avec Arduino Leonardo :

<6>[ 948.770000] usb 1-1.3: new full speed USB device using dwc_otg and address 12 (mode bootloader)
<6>[ 956.448000] usb 1-1.3: USB disconnect, address 12 (quitte le mode bootloader CDC Arduino)
<6>[ 956.710000] usb 1-1.3: new full speed USB device using dwc_otg and address 13 (Programme Arduino)
<6>[ 956.893000] input: Arduino LLC Arduino Leonardo as /devices/lm0/usb1/1-1/1-1.3/1-1.3:1.2/input/input10
<6>[ 956.897000] generic-usb 0003:2341:8036.0008: input,hidraw0: USB HID v1.01 Mouse [Arduino LLC Arduino Leonardo] on usb-lm0-1.3/input2

D'après les logs tout marche sans probléme ...
Essaye de mettre un hub usb entre ton usb otg et l'arduino leonardo.

Salut Sky, j'ai mis un HUB USB entre les 2 toujours pareil, les logs on l'air ok, le hub est bien detecté .. mais pas de souris qui bouge.
Est!ce que je peux t'envoyer mes fichiers pour que tu test ?
Merci

Toine45:
Est!ce que je peux t'envoyer mes fichiers pour que tu test ?

Ça servirait à rien vu que j'ai une version de compilateur AVR-GCC personnalisé et pas la même box android que toi :wink:

Ok, meme si je t'envoie la version compilé (hex) ? Meme si tu essayes sur une autre version ca me donnera toujours une idée si ca marche chez les autres et pas chez moi, au pire je peux acheter une autre box ...
Merci

Toine45:
Ok, meme si je t'envoie la version compilé (hex) ? Meme si tu essayes sur une autre version ca me donnera toujours une idée si ca marche chez les autres et pas chez moi, au pire je peux acheter une autre box ...

Tomber sur le même processeur, même version d'android et même hardware ... Avec une box android c'est pas franchement simple.

Essaye de "cat" le périphérique /devices/lm0/usb1/1-1/1-1.3/1-1.3:1.2/input/input10 qui est créé par la leonardo.
Si il ce passe quelque chose quand tu bouges la positions de la souris c'est que la souris marche mais que ta box android ne la gère pas pour le graphique.

J'ai esayé cat /devices/usb1/etc... repertoire inconnu
J'ai reussi a trouvé mais dans /sys/devices/usb1/etc...

Mais ca me donne invalid lengh
input9 est un repertoire .. je peux encore rentrer dans et il y a d'autres repertoires :
uevent, subsystem, device, name, phys, uniq, modalias,id, capabilities, power et event3
Je suis un peu perdu :s

Quand tu branches ta leonardo ça doit t'afficher une ligne qui se fini en /input/inputN (avec N = un chiffre) dans les logs noyau.
Si tu "cat" ce fichier tu doit voir les événements, de mémoire c'est bien un fichier et non un répertoire.