Raspberry Pi : Du son en réseau avec PulseAudio

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 :

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.