Cet article décrit comment utiliser le Raspberry Pi comme sortie son ( sink ) distante ( en réseau ), pour un ordinateur sous Linux.
Il exploite les capacités réseau de PulseAudio, tant coté Raspberry que sur l’ordinateur source.
2 méthodes de connexions sont proposées :
- La découverte automatique du Raspberry par Pulseaudio, simple et pratique, mais pas toujours très fiable
- La configuration manuelle du Raspberry comme sortie son « tunnel » sur l’ordinateur source
Configuration du Raspberry Pi
Installer les packages nécessaires :
$ apt-get install pulseaudio avahi-daemon dbus-x11
Configurer PulseAudio, en ajoutant à la fin du fichier /etc/pulse/system.pa, la ligne suivante (dans ce cas, tous les clients du réseau 192.168.0.0/24 sont autorisés à se connecter)
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24
Ajouter ensuite un service systemd pour PulseAudio, en créant le fichier /etc/systemd/system/pulseaudio.service, avec pour contenu :
[Unit]
Description=PulseAudio Daemon
[Install]
WantedBy=multi-user.target
[Service]
Type=simple
PrivateTmp=true
ExecStart=/usr/bin/pulseaudio --system --realtime --disallow-exit --no-cpu-limit
Il ne rester qu’à activer le service, puis à le démarrer :
$ systemctl enable pulseaudio
$ systemctl start pulseaudio
A ce stade, la mise en place du coté du Raspberry Pi devrait être achevée. Cependant, chez moi, cette configuration produisait des craquements très audibles.
Le problème a été résolu en éditer le fichier /etc/pulse/system.pa, et en remplaçant la ligne
load-module module-udev-detect
Par
load-module module-udev-detect tsched=0
A partir de là, 2 choix (qui ne sont pas mutuellement exclusifs, les 2 cohabitent très bien) s’offrent à vous :
Découverte manuelle :
Plus fiable que la découverte automatique, mais plus contraignante (nécessite de configurer chaque ordinateur voulant exploiter la sortie son du Raspberry, et ne fonctionne pas si le Raspberry n’est pas joignable au démarrage de l’ordinateur source)
Sur l’ordinateur source, ajouter dans le fichier /etc/pulse/default.pa la ligne suivante :
load-module module-tunnel-sink-new server=XXX.XXX.XXX.XXX sink_name=Remote sink_properties="device.description='Raspberry'" channels=2 rate=44100
En indiquant l’adresse IP du Raspberry
Découverte automatique
Sur le Raspberry, installer les packages nécessaires :
$ apt-get install pulseaudio-module-zeroconf
Toujours sur le raspberry, configurer PulseAudio, en ajoutant à la fin du fichier /etc/pulse/system.pa, la ligne suivante
load-module module-zeroconf-publish
Sur l’ordinateur source, installer le paquet de configuration du PulseAudio
$ apt-get install paprefs
Exécuter paprefs, puis activer la découverte des appareils en réseau :
Redémarrer ensuite l’ordinateur cible, le Raspberry devrait être disponible comme nouvelle sortie son !
Conclusion
En commençant cette manipulation, j’avais peur que la latence de l’audio ne la rende inutile.
Si un peu de latence se fait en effet sentir (+200ms mesurés par rapport à une sortie sur la carte son interne du PC), elle est toutefois suffisamment faible pour ne pas perturber un usage d’écoute musicale.
Pour une utilisation Home Cinéma en revanche, il se peut que cette latence pose problème, à vous de juger !
Source :
- https://manurevah.com/blah/en/p/PulseAudio-Sound-over-the-network (Simple, mais obsolète depuis systemd)
- http://serendipity.ruwenzori.net/index.php/2015/06/01/sending-an-audio-stream-across-the-network-to-a-remote-raspberry-pi-with-pulseaudio-the-easy-way (très détaillé)
- https://askubuntu.com/questions/497887/ubuntu-14-04-pulseaudio-in-hdmi-sound-crackling/529137 (pour résoudre les craquements)
Commentaires récents