Table des matières

Serveur de son

Utiliser le raspberry en tant que serveur de son grâce au serveur Pulseaudio. Le raspberry sera connecté à la chaine Hifi. Tous les postes du réseau pourront rediriger leurs flux audios sur le serveur pulseaudio du raspberry afin que le son soit joué sur la chaine.

Installation des paquets

ALSA (Advanced Linux Sound Architecture) et Pulseaudio ne sont pas installés par défaut:

sudo -i
apt-get update
apt-get install alsa-base pulseaudio pulseaudio-module-zeroconf avahi-daemon

Les dépendances seront installés notamment le paquet alsa-utils contenant alsamixer (configuration du périphérique audio depuis l'espace utilisateur en console).

Charger le module

Charger le pilote du périphérique son

modprobe snd-bcm2835

Pour que le module soit automatiquement chargé lors du démarrage, l'ajouter dans le fichier /etc/modules.conf

root@raspberrypi:~# echo "snd-bcm2835" | tee -a /etc/modules

Configurer pulseaudio

Lancer automatiquement le serveur pulseaudio au démarrage de la raspberry. Modifier le fichier /etc/default/pulseaudio, passer la variable PULSEAUDIO_SYSTEM_START à 1.

# 0 = don't start, 1 = start
PULSEAUDIO_SYSTEM_START=1
Sous Jessy le fichier /etc/default/pulseaudio n'existe pas mais un fichier example est disponible dans /usr/share/doc/pulseaudio/examples. Copier ce fichier dans /etc/init.d
$ sudo cp /usr/share/doc/pulseaudio/examples/pulseaudio.init.example /etc/init.d/pulseaudio
$ sudo chmod 755 pulseaudio
$ sudo update-rc.d pulseaudio defaults 98 02

Remarque: Cette variable active le script de gestion du daemon dans /etc/init.d. Si cette variable est a zero le script init est sans effets.

Configurer le serveur pulseaudio pour qu'il écoute sur le réseau. Modifier le fichier de configuration /etc/pulse/system.pa. Décommenter ou ajouter les directive chargeant les modules zeroconf et native-protocol-tcp

### Utiliser raspeberry comme serveur de son
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.1.0/16 auth-anonymous=1
load-module module-zeroconf-publish
load-module module-rtp-recv
L'option auth-anonymous permet d’accéder au service fournit par le serveur Pulse Audion sans partage d'un cookies.

Démarrer le service

root@raspberrypi:~# service pulseaudio start

On peut vérifier que le serveur ecoute sur 5353 (RTP multicast)

$ netstat -anpe | grep 5353

Tester le son en local

alsamixer

Vérifier les niveaux sonores avec avec alsamixer (à l'installation, tous les canaux sont à 0). Sous Alsamixer le label <MM> indique que le canal est désactivé. la valeur <00> indique qu'il est actif mais d'intensité nulle. Ma touche M permet d'activer/désactiver le canal les touches ← et → permettent de sélectionner le canal et les touches haut et bas a modifier les intensités.

Si lors de l'appel de la commande alsamixer le message d'erreur suivant s'affiche: cannot open mixer: No such file or directory

Vérifier si root peut lancer la commande. Si c'est le cas, vérifier que l'utilisateur courant est dans les groupes audio et pulse-access. L'utilisateur doit être dans ce groupe pour contrôler les périphériques audios.

$ sudo usermod -a -G pulse-access pi

Vérifier que le pilote du périphérique audio est chargé

lsmod | grep snd

Vérifier que des périphériques audio existent

aplay -l

Test des hauts parleurs

speaker-test -c 2

lecteur audio en console

Pour jouer des sons(mp3) à partir de la ligne de commande plusieurs programmes existent:

sudo apt-get install mpg123

Configurer les clients

Il faut maintenant configurer les postes clients pour qu'ils se connectent au serveur pulseaudio du raspberry. Pour que pulseaudio puisse détecter automatiquement les périphériques présents sur le réseau il faut sur chaque poste:

cela installer les paquets suivants:

yoann@hermes:~$ sudo apt-get install paman paprefs pavucontrol padevchooser
Dans les distributions récentes, le paquet padevchooser n'existe plus.

Menu Applications » son et vidéo »Pulse audio device chooser. Selectionner Configure Local Sound Server… Activer l'option “Make discoverable PulseAudio network sound devices available locally” Onglet Multicast/RTP activer l'option “” et selectionner l'option create separate

Redirger les application ALSA Rediriger les application utilisant ALSA sur le serveur pulseaudio. Modifier le fichier /etc/alsa.conf pour tout le systeme ou ~/alsarc pour l'utilisateur courant

Coté client, inserer dans le fichier /etc/pulse/default.pa

load-module module-zeroconf-discover

Si le serveur n’apparaît pas dans les périphérique, on peut l'ajouter manuellement avec la commande:

pacmd load-module module-tunnel-sink server=192.168.1.10

Optimisations diverses

Réduire la mémoire GPU

Réduire la quantité de mémoire allouée exclusivement au GPU. Je l'ai passée au minimum 16 MO.

Désactiver les consoles ttyX

Les connexion se font via ssh, on peut désactiver les consoles ttyX. Éditer le fichier /etc/inittab et commenter les lignes puis pour forcer la relecture de inittab:

telinit q

Problèmes de son

Rapidement le son joué par le serveur saccade fortement. Le problème disparaît si le daemon est lancé en tant que root:

 /usr/bin/pulseaudio -D --system

Références