FreeRunner GTA-02 FSO/Debian et mode USB host

Après de nombreux essais de différents firmwares pour le FreeRunner, je me suis finalement tourné vers FSO (FreeSmartphone.Org) qui reprend pas mal d’éléments de configuration de Debian/OpenWrt. Les images sont disponibles ici : http://downloads.freesmartphone.org/fso-stable/milestone4.1/.

Tout ceci se flash exactement comme les autres firmwares et après reboot on accède au FreeRunner via USB. Par défaut, son IP est 192.168.0.202. Comme mes interfaces réseau sur ma machine de travail sont bridgées, j’ajoute simplement usb0 au bridge :
% brctl addif br0 usb0
% ifconfig usb0 up
% ping 192.168.0.202
PING 192.168.0.202 (192.168.0.202) 56(84) bytes of data.
64 bytes from 192.168.0.202: icmp_seq=1 ttl=64 time=216 ms
64 bytes from 192.168.0.202: icmp_seq=2 ttl=64 time=29.9 ms
^C
Ce qui me permet un accès SSH sur le FreeRunner (root, pas de mot de passe). Ainsi, je peux configurer le Wifi en ajoutant simplement ce qu’il faut dans /etc/network/interface comme sur une Debian :
iface eth0 inet dhcp
        wireless-mode Managed
        wireless-essid dalefwrt
        wpa-conf /etc/wpa_supplicant/openwrthome.conf
Ainsi qu’un /etc/wpa_supplicant/openwrthome.conf qui va bien :
network={
        ssid= »dalefwrt »
        psk= »laphrasedepass »
}
Un petit ifup eth0 et le tour est joué. Plus besoin de l’interface usb0, ifdown usb0 donc. Le Freerunner est accessible en SSH par Wifi à condition de modifier la configuration de dropbear qui n’écoute que sur l’IP de l’interface usb0 par défaut. On édite /etc/default/dropbear pour avoir ceci :
DROPBEAR_PORT=22
Comme le port USB n’est plus vraiment utile en mode device autant le passer en mode host pour pouvoir utiliser des périphériques USB avec le FreeRunner. Ceci se fait très simplement avec :
echo host > /sys/devices/platform/s3c2410-ohci/usb_mode
On repasse en mode device avec :
echo device > /sys/devices/platform/s3c2410-ohci/usb_mode
Par défaut le FreeRunner est en mode device et utilise l’USB comme source de courant pour se recharger. En mode host il lui faut normalement alimenter les périphériques USB. Le GTA-02, aka FreeRunner, peut basculer d’un mode à l’autre de manière logicielle. Avec ceci :
echo 1 > /sys/devices/platform/neo1973-pm-host.0/hostmode
le FreeRunner alimente le port USB avec un courant de 500mA, exactement comme une machine standard. Des résistances de rappel de 15K à la masse sont activées sur les lignes D+ et D- de l’USB. Malheureusement, ceci consomme énormément de courant et vide rapidement la batterie.

Avec :
echo 0 > /sys/devices/platform/neo1973-pm-host.0/hostmode
on repasse en mode standard. Les résistances sont désactivées et la charge depuis l’USB est réactivé. Notez que ceci est indépendant du mode USB device/host. Et justement, c’est ce qui permet d’utiliser le courant fourni par un hub USB pour charger le FreeRunner alors qu’il est en mode host.

Attention, tout les hub USB fournissent du courant aux périphériques mais pas nécessairement à l’hôte. Le plus simple est d’avoir quelques hub sous la main et de faire les essais. Une autre solution consiste, tout simplement à récupérer du +5V en sortie du hub et de le connecter au Vcc du connecteur côté hôte. Enfin, une autre solution est de jeter un oeil au hub. Souvent, une simple diode est utilisée pour bloquer le courant du hub vers l’hôte.

Regardez http://wiki.openmoko.org/wiki/Neo1973_USB_host et http://wiki.openmoko.org/wiki/Specialized_USB_cables pour plus d’informations.

De mon côté j’ai la chance de disposer d’un pauvre hub sans marque acheté en supermarché, mais qui alimente effectivement l’hôte en courant. Il m’a donc suffit de bricoler un connecteur me permettant de brancher le hub sur du le connecteur mini type B jack du FreeRuner.

On trouve ce type de câble (mini type B plug vers type A jack) sur le net (eBay). J’ai opté pour une autre solution :
un câble mini type B plug vers type A plug
un double déporteur type A jack provenant d’un PC que j’ai ponté avec des cavaliers
le connecteur type A plug du hub

Je peux ainsi alimenter le FreeRunner tout en utilisant le mode host et le hub USB pour y connecter plein de choses :

# lsusb
Bus 001 Device 001: ID 0000:0000
Bus 001 Device 082: ID 05e3:0606 Genesys Logic, Inc.
Bus 001 Device 085: ID 0951:1603 Kingston Technology
Bus 001 Device 086: ID 0718:0286 Imation Corp.
Bus 001 Device 087: ID 9710:7830
Bus 001 Device 088: ID 4348:5523
Tout ne fonctionne pas par défaut faute de drivers. Il faut installer les modules adéquates sous forme de paquets avec opkg (qui est déjà configuré). Exemple :
# opkg update
# opkg install kernel-module-cp2101 kernel-module-pl2303 kernel-module-ftdi-sio
[…]
Configuring kernel-module-cp2101
Configuring kernel-module-pl2303
Configuring kernel-module-ftdi-sio
# dmesg
[…]
ftdi_sio 1-2.3:1.0: FTDI USB Serial Device converter detected
drivers/usb/serial/ftdi_sio.c: Detected FT232RL
usb 1-2.3: FTDI USB Serial Device converter now attached to ttyUSB0
Un convertisseur USB/série permet d’étendre les sorties du FreeRunner. Il suffit de lui ajouter un AVR (Attiny2313) pour disposer de plein de GPIO. Le FreeRunner dispose d’un GPS, d’un modem GSM/GPRS, du Wifi, du BlueTooth, d’un écran, d’un périphérique audio… En utilisant le port USB en mode host on lui offre tout ce qui manque. Je ne parle plus de téléphone mais d’un système embarqué autonome accessible en IP et GSM/GPRS. Imaginez deux secondes ce qu’il devient possible de faire si je dis, par exemple, «domotique».

Idem pour la robotique. Le FreeRunner peut devenir le cœur d’un drone très efficace…

3 commentaires sur “FreeRunner GTA-02 FSO/Debian et mode USB host

  1. Je viens de flasher mon freerunner avec FSO (après avoir essayé OM2008) et j'avoue que je suis un peu déçu … Après deux minutes de manipulation illume a planté, et l'interface même si elle est moins flashy que OM2008 n'en est pas forcément plus fonctionnel … Je vais essayer FDOM qui a l'air pas mal fournie.
    Petite remarque : Le flashage sous Windows et vraiment trés lent.

Les commentaires sont fermés.