====== Une base Fonera 2g ====== Pour une quarantaine d'euro, nous pouvons avoir une petite machine : **La fonera 2g** : [[ http://wiki.fon.com/wiki/Fonera_2.0g_Specifications ]]. Elle tourne sous linux OpenWRT, a un port USB, un port ethernet et du wifi. C'est une base solide pour bricoler des automates, faire fonctionner un ou plusieurs arduinos, des capteurs gps, tracer les champs radio etc. **Specifications** # Model Name: FON2202 # Dimensions: 93.5 mm x 25.5 mm x 110 mm (excluding antenna) # Antenna Connector: RP-SMA connector (reverse SMA) # USB Port: USB A-type Receptacle (USB 2.0) # Antenna: External detachable antenna (1,5dBi) # Authentication: WEP 64bit/128 bit, WPA, WPA2, WPA mixed # Encryption: TKIP, AES, Mixed # Network Standard Support: IEEE 802.11b / 802.11g (up to 54 Mbps) # Frequency Range: 2412 ~ 2462 MHz (802.11b/g, Channel 1~Channel11) # Maximum output power: 112.460 mW # Ports: 1 Ethernet WAN port (10/100Mbps) for Internet + 1 Ethernet LAN port (10/100Mbps) for COMPUTER connections and other devices (network printer, storage, etc.) # SSIDs: One public (named FON_FREE_INTERNET by default) non-encrypted and one private (named MyPlace by default) encrypted with WPA-PSK # Platform / frequency: Atheros AR2315 @ 180 MHz # Flash: 8MB / Ram: 32MB # Wireless NIC: Atheros SoC, LAN Switch: Marvell 88E6060 # bootwait: Redboot # Serial: Yes JTAG: Yes USB: Yes ===== Préparation ===== * On déballe l'engin, connecte l'ethernet blanc sur son LAN perso et donc à Internet, le noir sur un switch ou directement sur un pc pour le paramétrage. * Rendez vous avec votre navigateur ( pas celui de microsoft!) sur http://192.168.1.10 * le mot d'usine de passe est 'admin' * Télécharger le firmware linux dernier crie sur votre bureau [[http://download.fonosfera.org/LATEST/fonera2.0g-FON2202/20090421_FON2202_2.2.5.0_Flipper_DEVELOPER.tar.gz ]] * mettre à jour dans la partie système en pointant le fichier téléchargé, ça dure 30 minutes ! ===== Préparatifs ===== Maintenant on peut se loger en ssh sur root@192.168.10.1 avec un mot de passe 'admin' * Mise à jour des listes de paquets cp /etc/opkg.conf /etc/opkg.conf.origin echo " src snapshots http://www.fonera.be/rep/FON2202/ #src snapshots2 http://downloads.openwrt.org/kamikaze/8.09.2/atheros/packages/ #src snapshots3 http://ipkg.nslu2-linux.org/feeds/openwrt/fon-ng/mips/ #src snapshots4 http://downloads.openwrt.org/snapshots/fonera2/packages dest root / dest ram /tmp dest usb /opt lists_dir ext /var/opkg-lists " > /etc/opkg.conf opkg update opkg list * mettre en place de la place, une cleUSB avec une swap(/dev/sda1),une partition /opt(/dev/sda2), et autre pour le stockage(/dev/sda3) # modification du fichier de montage fstab pour la cleUSB mv /etc/config/fstab /config/fstab.std echo " config mount option target /opt option device /dev/sda2 option fstype ext3 option options rw,sync option enabled 0 config swap option device /dev/sda1 option enabled 0 " > /etc/config/fstab echo "#!/bin/sh /etc/rc.common START=99 start() { # fstab, /etc/config/fstab => /dev/sda2 /opt ext noauto,rw,sync 0 0 mount /opt }">/etc/init.d/fini chmod 755 /etc/init.d/fini ln -s /etc/init.d/fini /etc/rc.d/S99fini # ajout des chemins vers /opt echo " export LD_LIBRARY_PATH=/lib:/usr/lib:/opt/lib:/opt/usr/lib export PATH=$PATH:/opt/usr/sbin:/opt/usr/bin " >> /etc/profile export LD_LIBRARY_PATH=/lib:/usr/lib:/opt/lib:/opt/usr/lib export PATH=$PATH:/opt/usr/sbin:/opt/usr/bin ===== Du son sur la fonera 2.0g ===== Une mini carte son USB ajoutée sur le hub connecté sur la fonera. opkg install kmod-usb-audio kmod-sound-core alsa-lib alsa-utils ===== Installation de la chaine de cross-compilation ===== Télécharger et décompresser l'archive donné par Fonera cd /usr/src wget http://download.fonosfera.org/Elan/20090921_fonosfera_GPL_tar.bz2 tar xvjf 20090921_fonosfera_GPL_tar.bz2 cd fonosfera_2.3.0.0_GPL sh install.sh cd openwrt make menuconfig Choisir fon2.0 en plateforme et lancer une première compilation générale, qui va préparer tous les outils nécessaire par la suite aux compilations. make V=99 Mettez à jour les paquets pour disposer de plus de programmes ./scripts/feeds update -a ; ./scripts/feeds install -a -p fon ===== TiMidity++ sur la Fonera ===== Le chalenge est de tester un player midi sur la bêbête , j'ai nommé TiMidity++. Ainsi nous pourrons générer et lire des fichiers midi directement pour les sortir en audio sur la carte son USB :-) . On imagine toute les nouvelles applications : orchestre midi en réseau, automate de composition. Et une idée nous est venue : utiliser un automate conversationnel ( le robot irc pyborg ) pour gérer non pas des mots mais des chaines de caractère MIDI ... [[http://timidity.sourceforge.net/#download]] J'ai crée un Makefile vitefait openwrt/package/TiMidity/Makefile # # Copyright (C) 2007 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # # blogic@openwrt.org include $(TOPDIR)/rules.mk PKG_NAME:=TiMidity PKG_VERSION:=2.13.2 PKG_RELEASE:=1 PKG_SOURCE:=TiMidity++-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=http://TiMidity++.s11.xrea.com/files/ PKG_BUILD_DIR:=$(BUILD_DIR)/TiMidity++-$(PKG_VERSION) include $(INCLUDE_DIR)/package.mk define Package/TiMidity $(call Package/TiMidity/Default) SECTION:=sound URL:=http://TiMidity++.s11.xrea.com/ TITLE:=TiMidity # MENU:=1 endef define Build/Configure $(call Build/Configure/Default) endef #define Build/Compile # $(MAKE) -C $(PKG_BUILD_DIR) \ # DESTDIR="$(PKG_INSTALL_DIR)" \ # all install #endef define Package/TiMidity/install # $(INSTALL_DIR) $(1)/usr/lib # $(CP) $(PKG_BUILD_DIR)/libltdl/.libs/libltdl.so.* $(1)/usr/lib/ $(INSTALL_DIR) $(1)/usr/bin $(CP) $(PKG_INSTALL_DIR)/timidity/timidity $(1)/usr/bin/ endef $(eval $(call BuildPackage,TiMidity)) Bon, ca ne se passe pas tout seul ... evidement. J'ai un peu galèré, il faut jongler entre les dénominations TiMidity et TiMidity++ ( qui pose problème sur la chaine de compilation ). Ensuite à un moment, il faut exécuter un binaire sur la fonera et en récupérer le résultat pour pouvoir continuer. Bref , voici le répertoire une fois la première compilation passée. {{:gnu:timidity_-2.13.2.bz2|timidity_-2.13.2.bz2 pour fonera 2g}} et {{:gnu:newton_table.c.bz2|}} J'ai eu besoin de alsa-lib, alsa-utils, ... ===== Trucs ===== aplay -Dplughw:0,0 /tmp/voice.wav de [[http://alsa.opensrc.org/Aplay]] Out of space When opkg runs out of space, it usually fails to elegantly recover. If the lock was not removed, Collected errors: * Could not obtain administrative lock it can be deleted from /usr/lib/opkg/lock. Additionally, opkg doesn't remove the files it was installing. One way to do this is get a list of the files it was installing, then delete them. mkdir /tmp/opkg_cleanup cd /tmp/opkg_cleanup opkg download gunzip -c *.ipk | tar -x gunzip -c data.tar.gz | tar -x find .