rapport projet avancé se - kadionik.vvv.enseirb … · pour cela on utilise une carte son usb...
TRANSCRIPT
1
Y. BORNAT
Rapport projet avancé SE :
Réalisation d’un interphone IP
Olivier ITEY
Hadami RIAHI
Jonathan GAMIETTE
Tristan HAUTSON
2
Index
I) Introduction ………………………………………………… p3
I.1) Utilisation initiale du NSLU2 …………………………………………………. p3
I.2) Particularité ………………………………………………………………......... p4
I.3) Architecture matérielle ……………………………………………………….... p4
II) Cahier des charges…………………………………………… p6
III) Les distributions ………………………………… …………… p7
III.1) Linksys ……………………………………………………………………… p7
III.2) Unslung ……………………………………………………………………… p7
III.3) SlugOS ……………………………………………………………………… p8
III.4) OpenWrt …………………………………………………………………….. p8
III.5) Debian ………………………………………………………………………. p8
III.6) Conclusion sur les distributions …………………………………………….. p9
IV) Installation de la Debian……………………………………… p10
IV.1) Mode Upgrade……………………………………………………………… p10
IV.2) Flashage ……………………………………………………………………… p10
IV.3) Préparation de la clef USB…………………………………………………… p10
IV.4) Installation……………….…………………………………………………… p11
V) ESD …………………………………………………………… p12
V.1) Présentation de ESD………………………………………………………… p12
V.2) Commande client (Ordinateur)……………………………………………… p12
V.2) Configuration serveur (slug)………………………………………………… p12
VI) VLC……………………………………………………………. p13
V.1) Présentation de VLC ………………………………………………………… p13
V.2) Diffusion multimédia…………………………………………………………. p13
V.3) Diffusion UDP unicast ……………………………………………………….. p14
VII) Conclusion ……………………………………………………. p16
Bibliographie……………………………………………………………. p17
3
I) Introduction :
I.1) Utilisation initiale du NSLU2 :
NSLU2 est l’acronyme de Network Storage Link for USB 2.0, mais est également connu sous
le raccourci “slug”. C’est une unité de stockage en réseau fabriqué par Linksys. Ce périphérique
permet de rendre accessible n’importe quels clés USB ou disque dur externe USB sur le réseau.
La figure 1 présente un exemple de contexte dans lequel ce périphérique peut être utilisé.
Figure 1 : Exemple d’utilisation du NSLU2
Initialement le NSLU2 formate les disques durs avec le système de fichiers EXT3. Une mise à
jour du firmware de Linksys offre la possibilité d'utiliser les disques formatés en NTFS et FAT32.
Une interface web permet d'administrer l'appareil, avec une gestion des utilisateurs, des
groupes et des configurations réseau. Les disques connectés au NSLU2 sont partagés sur le réseau
TCP/IP à l'aide du protocole SMB.
4
I.2) Particularité :
Le NSLU2 fonctionnant sous Linux, Linksys a publié le code source utilisé suivant les termes
de la licence GNU. En raison de cette publication et du coût peu élevé de l'appareil d’environ 100
euros, plusieurs projets communautaires sont nés autour du NSLU2.
Un grand nombre de projets, tutoriaux et explications sont disponibles à l’adresse suivante :
http://www.nslu2-linux.org/
I.3) Architecture matérielle :
Pour réaliser cette fonction de stockage en réseau, le NSLU2 comporte:
-Un processeur Intel IXP420 fonctionnant à 266MHz
-32 Mo de SDRAM
-8 Mo de mémoire flash
- Deux ports USB 2.0
-Un port Ethernet (10 /100)
-Quatre LED de statut (Ethernet, USB port 1, USB port 2, Prêt)
La figure 2 présente l’intérieur du NSLU2.
Figure 2 : Aperçu de l’architecture matérielle
Pour les versions antérieures à Avril 2006, Linksys a réduit la fréquence du processeur à
133MHz. Une manipulation très simple sur la carte mère de l'appareil (résistance pull down à enlever
5
pour changer l’état d’un registre de configuration du processeur) permet d'annihiler cette restriction
qui n’est d’ailleurs plus effective sur les versions ultérieures à Mai 2006.
L’intérêt de connaître cette limitation, est de pouvoir éventuellement l’enlever si la fréquence
de travail du processeur est insuffisante pour notre application.
6
II) Cahier des charges Le projet consiste à réaliser un périphérique capable de rendre une entrée/sortie sonore
accessible depuis un réseau IP. Pour cela on utilise une carte son USB Aureon compatible Linux. La
sortie sonore de la carte son pourra être reliée à des haut-parleurs, un casque ou une chaîne hifi. La figure 3 suivante présente l’utilisation du NSLU2 et le trajet du son à travers le réseau
jusqu’à la source sonore en sortie de la carte son USB.
Figure 3 : Utilisation du NSLU2
Pour se faire, il est nécessaire que le « Slug » transfert les paquets provenant du réseau vers la
carte son USB. Il est demandé que le serveur permettant de créé le lien sonore soit présent sur le
NSLU2 auquel un client distant peut se connecter pour envoyer un flux audio.
Plusieurs étapes sont nécessaires :
– choisir une distribution appropriée et l'installer.
– installer les différents outils et services logiciels nécessaires en limitant les ressources qu'ils utilisent.
– configurer les différentes interfaces disponibles et mettre en œuvre leurs APIs.
– définir les méthodes d'accès au périphérique depuis le poste client.
C’est pour cela que notre projet a commencé par le choix éventuel d’une nouvelle distribution.
En fonction du temps disponible, le projet évoluera vers la réalisation de “haut parleurs IP”.
Le développement sera alors orienté vers les méthodes pour :
– récupérer le flux audio d'une carte son sur la machine cliente
– envoyer ce flux vers le serveur.
7
III) Les distributions :
Il existe cinq distributions pour le SLUG. Bien qu’elles soient toutes basées sur un noyau
Linux, elles ont des caractéristiques bien différentes. Celles-ci sont :
Linksys
Unslung
SlugOS
OpenWrt
Debian
III.1) Linksys :
On n’utilisera pas Linksys du tout car c’est une distribution faite par le constructeur qui n’est
pas configurable.
III.2) Unslung :
Unslung est une des distributions créées pour remplacer le firmware du NLSU2. Elle étend les
capacités du NSLU2, sans pour autant perdre les fonctionnalités standard du produit et en étant
toujours 100% compatible avec les produits Linksys. La dernière version d’Unslung (version 6.x)
apporte de nouvelles fonctionnalités telles que le support de systèmes de fichiers (NTFS par
exemple). Pour pouvoir installer les applications disponibles (plus de 800), il faut utiliser un moyen de
stockage externe. Basé sur un noyau 2.4, la gestion du son n’est pas aussi complète qu’avec les
dernières versions du noyau, mais il est cependant possible de faire fonctionner la carte son USB en
installant ces paquets :
mpd
kernel-module-audio
kernel-module-soundcore
madplay
usbutils
8
III.3) SlugOS :
SlugOS est le nom d’un groupe de distributions qui dérivent tous d’une source commune.
Les distributions qui découlent de SlugOS sont :
SlugOS/BE (anciennement connu sous le nom OpenSlug), qui utilise le dépôt de
paquets de OpenEmbedded. Cet OS est spécialement conçu pour l’utilisation d’un
disque externe de stockage en étant le plus compact possible pour pouvoir tourner sur
la mémoire interne du SLUG. Cependant, si l’on veut ajouter une des quelques 3500
applications pour systèmes embarqués, il peut être nécessaire d’utiliser un
périphérique de stockage externe.
SlugOS/LE (anciennement appelé DebianSlug) n’est plus utilisée. Elle était le seul
moyen de faire tourner des applications disponibles dans le dépôt de Debian. Elle est
aujourd’hui remplacée par la distribution officielle Debian pour le slug
(Debian/NSLU2).
III.4) OpenWrt :
OpenWrt est issue d’un projet open source ayant pour but de créer un OS gratuit pour des
périphériques réseau. Elle est dédiée pour l’installation sur la mémoire interne seule. Cet OS est très
compact (avec une image minimale, busybox, uClibC et les outils « sans fil », il prend 832kB).
L’image étant en lecture seule, OpenWrt utilise du JFFS2 pour l’espace d’écriture, rendant ainsi
possible l’installation de programmes après la configuration de l’image système.
III.5) Debian/NSLU2
Debian/NSLU2 est le nom donné à la distribution officielle Debian pour processeur
ARM qui tourne sur le NSLU2. Le but de cette distribution est d’apporter un support complet
pour le SLUG et ses équivalents du noyau linux officiel et de la distribution GNU/Linux.
Ainsi, tous les utilisateurs peuvent profiter complètement du dépôt de paquets (et avoir aussi
des paquets et des patchs spécifiques pour les périphériques matériels comme le port Ethernet
intégré, les leds, etc…) Contrairement aux autres distributions, il est absolument nécessaire
d’avoir un périphérique externe de stockage pour pouvoir utiliser cette distribution (>560Mo)
9
III.6) Conclusion sur les distributions :
On peut résumer les caractéristiques de ces distributions par le tableau de la figure 4.
Figure 4 : Tableau récapitulatif des caractéristiques des distributions envisagées
Remarque : ALSA (Audio Linux System Architecture) est le composant noyau de base
pour les versions de Linux strictement supérieures à 2.4. Il a été développé en remplacement
d’OSS (Open Sound System). Il est plus complexe que son prédécesseur mais permet une
configuration automatique du matériel et gère le mixage de plusieurs sources audio. De plus,
il est capable d’émuler OSS pour les applications utilisant ce dernier.
Avec les éléments que l’on vient de voir, notre choix de distribution a été celui de la
Debian. En effet, celle-ci gère nativement le son et permet de disposer du dépôt officiel
Debian qui contient plus de 17000 paquets, ce qui nous laisse un choix important quand à
l’outil que nous pourrons utiliser pour le projet.
Ce choix étant fait, il reste à installer la Debian sur le NSLU2.
Version
du noyau
linux
Nombre de
paquets
accessibles
Composant
noyau pour la
gestion du son
Support du
son par défaut
Taille de
l’installation
basique
Linksys 2.4.22 0 OSS No ~8MB
Unslung 2.4.22 800+ OSS No <8MB
SlugOS 2.6.16 3500+ ALSA No <8MB
OpenWrt 2.6.21 800+ ALSA No <8MB(832kB)
Debian 2.6.26 17000+ ALSA Yes >560MB
10
IV) Installation de la Debian Nous avons donc choisi la distribution Debian. Mais pour l’instant, nous ne savons pas
comment l’installer. Donc dans cette partie, nous allons voir comment installer la Debian dans le
SLUG.
IV.1) Mode upgrade
Avant de pouvoir installer la distribution, il faut mettre le SLUG en mode upgrade. Pour mettre le
SLUG dans cet état là, il faut réaliser les étapes suivantes :
Déconnecter tous les périphériques USB.
Eteindre le SLUG.
Appuyer et rester appuyer sur le bouton reset.(A l’arrière du SLUG, à coté de l’alimentation, il
y a le bouton reset.)
Appuyer sur le bouton d’alimentation.
Attendre 10 secondes, jusqu’à voir la LED ready/status passé en rouge ou en orange. Dès ce
moment, lacher immédiatement le bouton reset.
La LED ready/status va clignoter entre le rouge et vert toutes les seconds. Le slug est en mode
upgrade.
Maintenant que le SLUG est en mode upgrade, on va pouvoir flasher la nouvelle image.
IV.2) Flashage
On utilise pour cela un petit programme qui s’appelle upslug2 qui va permettre de flasher la
nouvelle image di-nslu2.bin . Ce petit programme doit être au préalable installé.
La commande à utiliser pour flasher est la suivante :
$ sudo upslug2 -i di-nslu2.bin
Par défaut, upslug2 cherche le SLUG sur le réseau à partir de l’interface eth0 de notre
machine. Si le slug n’est pas connecter sur le port eth0, il faut signaler à upslug2 quelle interface
utiliser. On peut le spécifier avec la commande –d (exemple –d eth1).
Lorsque le SLUG a bien était flashé, il redémarre automatiquement.
Maintenant, le slug est près à installer la Debian. Comme on a pu le voir précédemment, la
mémoire interne du SLUG n’est pas suffisante, c’est pour cela qu’il faut brancher la clé USB ou
disque Dur USB, pour pouvoir continuer l’installation.
IV.3) Préparation de la clé USB
Au préalable, il faut formater la clé avec fdisk, il faut au moins une partition ext3 et une partition
swap.
11
Lancement de fdisk : fdisk /dev/sda si sda est l’entrée qui pointe sur la clé. Sinon remplacer sda
par la bonne entrée.
Ensuite on a les commandes suivantes :
p :pour afficher la table des partitions
d : pour supprimer une partition
n :pour créer une partition (choisir p pour primaire)
t : pour changer le type d'une partition (linux swap : 82)
Ensuite on formate, voici l'exemple qui sera utilisé par le suite : 1 disque avec 2 partitions ( 1 linux
et 1 linux Swap).
mkfs.ext3 /dev/sda1
mkswap /dev/sda2
IV.4) Installation
Après avoir flashé l’image d’installation de la Debian, le SLUG a démarré et près à installer la
Debian. Comme le SLUG n’a pas de clavier/souris, ni d’affichage, nous allons utiliser une installation
réseau par SSH. L’image que nous avons mise démarre le SLUG avec un serveur SSH. Mais il faut
attendre environ 5 minutes avant de pouvoir se connecter par SSH. Lorsque le SLUG est prêt la led de
ready/status passe au vert et le SLUG bip 3 fois. On peut donc maintenant se connecter à partir de
SSH.
Si le SLUG était configuer en DHCP, alors son IP a été attribué dynamiquement. Il faut donc
trouver quelle adresse IP lui a été attribuée.
Pour se connecter au SLUG, il faut taper la ligne de commande suivante, en changeant
l’adresse IP par celle de votre SLUG. Le mot de passe pour la connexion SSH est : install
$ ssh [email protected]
Ensuite, il faut suivre les indications de l’installateur. Par contre l’installation prend un peu de temps.
Figure : Image installation
12
V) ESD
1) Présentation de ESD
Beaucoup d’applications à l’heure d’aujourd’hui utilise la carte son. Cela va de la notification
d’email à regarder un film en passant par écouter de la musique. Sans ESD ou équivalent, si deux
applications tentent d’utiliser la carte son en même temps, c’est la première arrivé, la première servie.
ESD change tout ça.
ESD qui signifie Enlightened Sound Daemon mixe plusieurs flux audio pour jouer sur la carte
son. Il permet aussi de faire jouer de la musique par un ordinateur et de l’écouter sur un autre.
2) Commande client (ordinateur)
Le client peut utiliser des grands player Multimedia comme VLC ou Xmms. L’utilisation sous
VLC , n’ayant jamais fonctionner, on ne présentera que celle de xmms.
Pour l’utiliser avec xmms, il faut récupérer son plugin esd qui est contenu dans :
# apt-get install libesd0
Ensuite il faut configurer Xmms. Pour cela, on lance xmms, on fait un clic-droit sur la fenêtre
-> options -> préférences. Dans le bas de la fenêtre, il y a une zone « Greffon de sortie ». Une liste
déroulante donne accès au greffon eSound. Ensuite il faut cliquer sur le bouton configurer et cliquer
sur « utiliser l’hôte distant », donner l’adresse IP du SLUG, le bon numéro de port, et tout sera
bon.
Lorsque sur cette machine cliente, on désire à nouveau écouter en local, il suffit de modifier la
configuration de xmms et choisir à nouveau « Pilote OSS... » plutôt que « greffon eSound » dans la
fenêtre des choix des greffons de xmms.
3) Configuration serveur (Slug)
Comme on a pu le dire précédemment le serveur utilise un daemon nommé esd qui est contenu
dans un paquetage nommé esound.
La commande d’installation :
# apt-get install esound-common
Pour lancer le deamon sur le serveur, il faut utiliser la ligne de commande suivante :
# esd -tcp -port 16001 -bind 192.168.1.2 &
On peut choisir un autre port que le port 16001. En revanche, il faut utiliser le même port de
chaque côté. L’option -bind adresse_ip_client est obligatoire.
13
A ce stade, le serveur de son est opérationnel. Il ne reste plus qu’à lui envoyer du son. Ce que vont
faire les clients.
14
VI) VLC
1) Présentation de VLC
VLC media player (VLC) (à l'origine VideoLAN Client) est un lecteur multimédia libre issu
du projet VideoLAN. Ce logiciel est multiplateformes puisqu'il fonctionne sous Windows, toutes les
tendances GNU/Linux, BSD, Mac OS X, BeOS, Solaris, QNX et même Pocket PC, soit en tout près
de 20 plateformes. Il est distribué sous licence GNU/GPL.
Un des grands atouts de VLC est qu'il intègre les codecs nécessaires à la lecture de la plupart
des formats audio et vidéo. De plus, le lecteur est capable de lire un grand nombre de flux réseaux.
VLC media player était au début le client pour le projet VideoLAN qui avait pour but la
création d'un logiciel permettant la diffusion de vidéos à travers un réseau informatique. Il était à
l'origine développé par les étudiants de l'École centrale Paris et a été diffusé pour la première fois le
1er février 2001 sous licence GNU GPL. Il est aujourd'hui développé par des contributeurs du monde
entier. Le projet reste toutefois coordonné par des élèves de deuxième année et plus.
2) Diffusion multimédia
VLC est à la fois un lecteur et un serveur multimédia multiplateformes. Il permet de diffuser
ou d'encoder différentes sources multimédias sur le réseau.
En effet VLC permet de diffuser à peu près n'importe quel flux audio/vidéo/texte sur un réseau ou en
local.
Figure : Schéma fonctionnel du système
15
En entrée, on peut donc avoir:
n’importe quel fichier audio/vidéo lisible par VLC
un flux audio/vidéo venant d’une Webcam ou mieux d’une carte d’acquisition vidéo
En sortie, VLC va générer un streaming IP pouvant se baser sur les protocoles suivants:
HTTP (c’est du TCP, donc adapté pour des streaming de basses qualités sur des réseaux sans
qualité de service. ex: Internet)
MMSH (MMS sur HTTP, même remarque que pour le HTTP. Le principal avantage de ce
protocole est qu’il peut être lu par des clients Windows Media Player)
UDP (permet une diffusion simple et sans overhead d’un streaming. Par contre, il n’y aucun
contrôle… en cas de problème sur le réseau, les clients recevrons une vidéo dégradée ou plus
de vidéo du tout)
RTP (c’est un bon compromis. basé sur UDP il permet d’avoir des statistiques sur le flux. Les
prochaines versions de VideoLAN devraient inclure la prise en compte du protocole RTCP
permettant de modifier dynamiquement le flux en fonction des contraintes du réseau)
3) Diffusion UDP unicast
La diffusion par UDP ressemble notablement à celle par HTTP si ce n'est que les données ne sont pas
encapsulées dans le protocole HTTP, mais directement envoyées sur le socket.
VLC propose une interface graphique qui nous permet de choisir le mode ainsi que les options de
diffusion pour le client.
16
Figure : Diffusion UDP
Ainsi, on choisit l'option diffusion et on choisit le fichier audio à envoyer, VLC lui applique
les filtres nécessaires aux fichiers audio.
On choisit ensuite le mode de diffusion UDP unicast et on indique l'adresse IP du client.
Sur le serveur, il suffit simplement de choisir l'option: ouvrir un flux réseau dans l'interface graphique
et d'indiquer le mode de diffusion, en l’occurrence UDP:
Figure : Réception UDP
Nous avons testé cette méthode de PC à PC sous distribution Ubuntu et cela fonctionne bien.
Sur le slug, on ne peut pas avoir d’interface graphique pour recevoir le flux audio, il suffit donc de
diffuser le flux audio comme fait précédemment depuis un PC, puis de le recevoir sur le slug grâce à la
commande:
Figure : Ligne de commande pour recevoir le flux audio sur le slug
Ou le @ signifie l'adresse IP courante de la machine (en l’occurrence, le slug).
17
VII) Conclusion
Les outils que nous avons étudiés, utilisés et fait fonctionner (Debian +VLC) nous ont amené
à une solution fonctionnelle mais qui souffre du défaut de la qualité des outils, un trop grand
généralisme. Pour pouvoir être en complète adéquation avec l’idée du projet, il nous faudrait
maintenant optimiser la taille mémoire de la Debian, voire utiliser une autre des distributions.
Cependant, l’outil VLC serait alors à changer pour un autre plus petit et moins gourmand.
C’est là alors une autre dimension du projet et le travail même d’un ingénieur concepteur de systèmes
embarqués, proposer une solution fonctionnelle satisfaisant aux trois conditions suivantes (faible
empreinte mémoire, faible consommation et petite taille).
18
Bibliographie
Sites internet :
www.nslu2-linux.org
et plus particulièrement :
www.nslu2-linux.org/wiki/HowTo/SlugAsAudioPlayer www.nslu2-linux.org/wiki/FAQ/FirmwareMatrix www.nslu2-linux.org/wiki/HowTo/UseAMemoryStickAsMainDrive
www.tux.org/~ricdude/dbdocs/introduction.html
Enlight Sound Deamon : http://www.tux.org/~ricdude/EsounD.html http://mdvmondelinux.tuxfamily.org/Redirection-du-flux-audio Debian : http://www.nslu2-linux.org/wiki/Debian/HomePage http://www.cyrius.com/debian/nslu2/ http://blog.fabroce.info/post/2006/10/07/30-debian-gnu-linux-sur-le-nslu2