18
1 Y. BORNAT Rapport projet avancé SE : Réalisation d’un interphone IP Olivier ITEY Hadami RIAHI Jonathan GAMIETTE Tristan HAUTSON

Rapport projet avancé SE - kadionik.vvv.enseirb … · Pour cela on utilise une carte son USB Aureon compatible Linux. La ... Maintenant que le SLUG est en mode upgrade, on va pouvoir

Embed Size (px)

Citation preview

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