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
Maintenant on peut se loger en ssh sur root@192.168.10.1 avec un mot de passe 'admin'
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
# 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
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
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
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. timidity_-2.13.2.bz2 pour fonera 2g et newton_table.c.bz2
J'ai eu besoin de alsa-lib, alsa-utils, …
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 <package> gunzip -c *.ipk | tar -x gunzip -c data.tar.gz | tar -x find .