====== 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 .