Si vous êtes l’heureux propriétaire d’un laptop, vous remarquerez la tripotée de câbles qui clouent votre portable au bureau. Ubuntu Server permet de se débarrasser de tout cela en créant un serveur d’impression, un serveur de fichiers et/ou un serveur web (LAMP) etc. mais malheureusement pas de serveur de son.

PulseAudio permet de transférer votre belle musique sur le réseau (local ou non) et de la jouer sur un autre PC en quelques clics. Malheureusement cela n’est pas (encore) intégré à Ubuntu Server et il faut donc bidouiller un peu la machine pour arriver à ses fins.

Ce tutoriel permet de configurer PulseAudio via la ligne de commande (SSH) et implique qu’il soit déja correctement installé sur le client et le serveur. Notez aussi que ce tutoriel n’a pas été testé sur d’autres machines que la mienne.

Coté serveur

Première chose: se logger sur le serveur (ssh utilisateur@IP) et installer Alsa ainsi que PulseAudio:

sudo apt-get install alsa-base pulseaudio pulseaudio-module-zeroconf

Tout se passe dans un seul fichier: /etc/pulse/default.pa (pour une config globale) ou ~/.pulse/default.pa (pour une config spécifique a un utilisateur). Tout d’abord faites une copie de sauvegarde, c’est un gros fichier, il vaut mieux etre prudent:

sudo cp /etc/pulse/default.pa /etc/pulse/default.pa_original

ou

cp ~/.pulse/default.pa ~/.pulse/default.pa_original

puis éditez l’un des fichiers:

sudo nano /etc/pulse/default.pa

ou

nano ~/.pulse/default.pa

Les passages en gras montrent les parties modifiées (commentées d’un « # » ou non) afin de se débarrasser des dépendances à X ou ESD qui ne sont pas installés sur un serveur:

(…)
### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)

#load-module module-esound-protocol-tcp #inutile puisque esound n’est pas installé
#ici 192.168.1.0/16 correspond à toutes les adresses du réseau local (192.168.1.*)
#vous pouvez la modifier selon votre configuration:

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.1.0/16
load-module module-zeroconf-publish

### Charge le module de réception du stream RTP
load-module module-rtp-recv #autorise l’acces du serveur par d’autres machine
(…)

#Commentez les lignes suivantes (dépendances à X)
(…)
#load-sample x11-bell /usr/share/sounds/gtk-events/activate.wav
(…)
#load-module module-x11-bell sample=x11-bell
(…)
#load-module module-x11-publish
(…)
#load-module module-gconf
(…)

Finalement, lancez PulseAudio en tapant « pulseaudio -Dv » dans la ligne de commande. L’option -D lance le démon et -v active le mode verbose afin de voir d’éventuelles erreurs. Notez que le message à propos de pulse-rt n’est pas une erreur, ce n’est qu’une notification. S’il n’y a pas d’autres erreurs c’est que vous avez réussi. Youpi!

Note Importante:

Par défaut le volume d’ALSA est à zéro, lancez la commande « alsamixer » dans un terminal et montez le son là où c’est nécessaire (généralement au niveau de Master, PCM et/ou Front).

Coté client

Cette partie assume que vous avez déja installé PulseAudio, si vous êtes sous Ubuntu Hardy c’est forcément le cas, sinon allez voir ici.

Ici tout est plus simple, on a un joli desktop, il n’y a qu’a cliquer où il faut. Mais d’abord il faut installer les outils graphiques:

sudo apt-get install paman paprefs pavucontrol padevchooser

Dans le Menu > Système > PulseAudio Preferences cochez la dernière case sous l’onglet « Network Access » et la deuxième case dans l’onglet Multicast/RTP puis fermez.

cliquez pour agrandir

Allez ensuite dans Menu > Applications > Son & Vidéo > PulseAudio Device Chooser. Une icône apparaît dans le tray. Cliquez dessus et dans Default Serveur, cliquez sur le nom du serveur qui apparaît en haut de la liste (voir notes plus bas).

Lancez votre musique favorite sans oublier de choisir PulseAudio comme serveur audio et voilà le travail: la musique est jouée sur le serveur! Pour renvoyer le son sur le portable, choisissez le serveur par défaut dans PulseAudio Device Chooser et redémarrez l’application.

Notes

Les utilisateurs de firestarter ayant des problèmes pour détecter le serveur, je conseille de purger et désinstaller firestarter (il s’agit vraisemblablement d’un bug avahi/firestarter).

Si vous préferez garder firestarter, allez voir ici pour le fix. Vous pouvez aussi spécifier le serveur a utiliser en choisissant « Autres » dans PulseAudio Device Chooser et en rentrant l’adresse du serveur en question.

Pour info, le protocole RTP/Multicast utilise le port 5353.

Renvoyer le son via le réseau est assez gourmand en bande passante: environ 50ko/s en download, 250ko/s en upload pour un fichier FLAC et vice-versa coté serveur.

Et si comme moi vous trouvez cette configuration soulante, allez donc plussoyer cette idée sur Ubuntu Brainstorm (cliquez sur l’image):