====== 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 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: * mpg123 * mpg321 * mp3baster 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: * pulseaudio et le module zeroconf * avahi 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 ===== * http://libordux.org/doc/debian/sound-and-video.php * http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=11124 * https://wiki.archlinux.org/index.php/Alsa#Installation * http://fluoblog.wordpress.com/2008/04/06/stream-audio-sur-un-serveur-pulseaudio/ * http://fluoblog.wordpress.com/2007/12/14/installation-de-pulseaudio/ * http://www.crazy-audio.com/projects/raspberry-pi-for-audio-distribution/ * http://raspberrypi.stackexchange.com/questions/639/how-to-get-pulseaudio-running * https://doc.ubuntu-fr.org/pulseaudio#pulseaudio_en_tant_que_demon_systeme * https://wiki.archlinux.org/index.php/PulseAudio/Examples * http://wiki.openwrt.org/doc/howto/pulseaudio