Vous êtes ici : Accueil > Brock ’N Brol > Informatique > Arduino > USB > USB otg : comment rendre un appareil android "host"
Publié : 1er novembre 2012
Format PDF Enregistrer au format PDF

USB otg : comment rendre un appareil android "host"

USB otg = USB On The Go

Par défaut, un appareil android est un "device". A partir d’android 3.1, la possibilité existe qu’il soit un "host". Comment faire ?

Introduction : ne pas se tromper de bus !

Dans la logique d’un bus informatique, une des connections peut être un "maître" et les autres des "esclaves" [1].

Avec le bus USB, le PC est le "host" et les autres appareils des "devices".

Mais si on ne veut pas utiliser de PC ?

L’ arduino Mega ADK a un prise USB qui joue le "host" et qui permet par exemple de connecter un appareil android comme un device.

Mais, si je veux utiliser monarduinio uno avec le tinkerkit, shield et néanmoins le connecter à un "android" !?!!

Comment faire ? Plusieurs solutions existent. Je vais explorer ici la solution de l "’USB otg".

USB otg = USB On The Go

Comme la lecture de l’article de wikipedia sur le sujet vous l’apprendra, l’idée est d’utiliser un câble usb modifié pour que l’appareil connecté à une des deux extrémités se comporte comme un "host" alors qu’à priori il decrait se comporter comme un "device".

Une modification dans le câblage est possible à priori. On trouve des vidéos sur youtube expliquant comment faire.

Comme expliqué par ailleurs, il faut connecter le "pin" numéro 4 (sense) du micro-usb au numéro 5 (la masse) sur la prise micro-USB.

La prise mâle du côté "connecteur de type A doit aussi être transformée en prise A femelle. Un adaptateur femelle-femelle n’est pas difficile à trouver : le moindre magasin d’électro-ménager en possède.

Il est aussi possible de commander sur le net de telles prises toutes faites.

I’ve got the power !

Ou plutôt non ! Le host fourni le bus USB en énergie électrique. Le voltage est de 5 volts. Certains des câbles OTG du commerce possèdent une alimentation. sinon il peut être utile de brancher le câble sur un "hub" alimenté de l’extérieur. Autrement il faut courir le risque de voir la batterie de l’appareil android se vider très vite.

Le noyau du problème

Bon, après celui-ci, j’arrête les titres idiots pour au moins cinq minutes. Promis.

Ce n’est pas tout. Il faut encore que le kernel de l’appareil android soit capable de charger les modules qui vont permettre à l’appareil d’être "host".

Certains appareils hauts de gamme récents font cela nativement.

Sinon, ceci requiert que votre appareil ait été "rooté". Si les modules sont présents, ils faut les charger "à la main".

insmod drivers/usb/core/usbcore.ko

et

insmod drivers/usb/host/ehci-hcd.ko

Si ces modules ne sont pas installé sur votre appareil, il est probable que votre kernel soit incapable de les charger. Une alternative est alors d’installer une "custom rom" comme cyanogenmod.

Bref, ce n’est pas gagné.

Post-scriptum

Plein d’infos ici

Notes

[1] D’autres possibilités existent. Je ne les envisage pas ici