GPIOs et La Fonera
Tags : fonera
La Fonera dispose d'un port GPIO (port d'usage général) de 8 bits dont chacun des bits peuvent être individuellement configurés en entrée ou en sortie. Tous les ports ne sont pas utilisables directement. Parmi les 8, par exemple, un est dédié (câblé) à la led WAN. 4 des 8 sont facilement accessibles pour l'utilisateur et se trouvent entre le connecteur d'antenne et le port ethernet. L'emplacement est nommé SW1 sur le circuit. Facilement accessibles physiquement, il le sont également logiciellement depuis le système.

Mon routeur La Fonera a déjà été modifié. Les photos de ce billet montre donc, en plus de la nouvelle bidouille, le déport du port console interne vers l'arrière du routeur :

Juste dessous nous avons l'emplacement SW1 avec quelques bits du GPIO. Le montage d'essai est tout simple. On connecte les 4 bits à disposition sur une platine à essais et on regarde si la led reliée via une résistance de 220 Ohms s'allume sur commande.

Côté logiciel pas de coding nécessaire. Un module pour le noyau 2.6 existe déjà, il suffit de s'installer les sources d'OpenWRT, d'ajouter les fichiers du tarball qui va bien dans package/proc_gpio, de reconfigurer les sources pour enfin recompiler tout ça pour obtenir un paquet (oui, le paquet existe tout fait, mais il faut la bonne version du noyau). Personnellement, j'ai remplacé le système de La Fonera par un OpenWRT Kamikaze (branche de développement). Ca veux dire, construction d'un nouveau firmware à partir des sources puis flashage de La Fonera via Redboot et un serveur TFTP.
Cela me facilitera les choses pour la suite et je pourrai toujours voir s'il est possible de porter mes créations sur le firmware original par la suite (sur mon autre routeur tout propre). Le module, appelé proc_gpio se transfère via SSH (scp) sur le routeur sous forme d'un paquet et s'installe avec un :
ipkg install kmod-gpio_2.6.19.2-atheros-1_mips.ipk
De là, on peut expérimenter en :
- passant le bit qui nous intéresse en sortie :
echo 1 > /proc/gpio/7_dir
- passant sa valeur à 1 ou 0 :
echo 1 > /proc/gpio/7_out echo 0 > /proc/gpio/7_out
Si vous avez été propre dans vos soudures et dans le brochage, la led s'allume et s'éteint. Le tour est joué. La Fonera dit "bonjour" au monde de l'extérieur !
Des liens :