Rasperry Pi: installer un player AirPlay + un serveur iTunes / DAAP

Multiroom_DAAP

Cet article à pour but de vous expliquer comment mettre en place un ensemble audio multiroom basé sur les protocoles propriétaire DAAP /RAOP sur lesquels repose AirPlay le système de diffusion sans fil d’Apple. (Appelé en 2004 AirTunes / AirPort avant de devenir AirPlay fin 2010)

Cette solution est très avantageuse car elle marie le meilleur de deux mondes:
– d’un côté l’ergonomie, la cohérence et la polyvalence de l’AirPlay d’Apple
– de l’autre de la bidouille basé sur des outils open source qui permettent de simuler facilement le fonctionnement d’un iDevice. Ainsi vous pourrez utiliser au choix: un Rasperry Pi, un PC, un NAS pour joueur le rôle du client ou du serveur selon votre besoin. Il s’agit d’une solution lowcost mais de qualité audiophile qui vous permettra de diffuser de la musique depuis et vers différents appareils de manière synchroniser ou non entre plusieurs zones.

En suivant ce tuto, vous serez en mesure d’installer un système audio multizone dont les possibilités sont les suivantes:

1. Envoyer de la musique ou n’importe quel son de votre iPhone via AirPlay vers n’importe quel haut parleur de votre maison. (compatible iOS 9)
2 . Utiliser votre iPhone ou votre iPad comme télécommande pour diffuser de la musique de manière synchroniser dans votre installation multi-room (sans que votre appareil mobile est besoin de rester connecté grâce à un serveur de fichier centralisé)
3. Lire la musique depuis votre PC / Serveur / NAS sur votre iPhone /iPad.
4. Avoir accès à toutes ces options depuis n’importe quel plateforme Android ou Windows en installant les apps de lecture compatile AirPlay

Vous devez disposer du matériel suivant:

  • Un ou plusieurs Raspberry Pi (un par pièce que vous voulez sonoriser (bien sur cela fonctionne aussi avec n’importe quel autre Singleboard computer ou PC classique ou encore avec les appareils Apple (Airport Express, Apple TV….)
  • Un réseau filaire (ethernet) ou disposé d’un adaptateur wifi qui fonctionne avec Raspbian comme l’Edimax EW-7811UN.
  • Une machine faisant office de serveur: soit un PC Windows ou un Mac avec iTunes, ou encore un ordinateur sous Linux (singleboard computer, NAS, Serveur…)
  • Un smartphone / tablette avec une App télécommande (ex: iPhone/iPad avec l’app Apple Remote.)
    Un ampli et des enceintes raccordées au Raspberry Pi (directement au jack stéréo du RPi ou via un DAC pour une meilleur qualité. Vous pouvez aussi utiliser la sortie HDMI)

Configuration du serveur de fichiers: forked-daapd

Le serveur est au cœur du système audio et doit toujours rester allumer car c’est lui qui va stocker votre collection musicale. Le serveur utilise le protocole de diffusion DAAP (Digital Audio Access Protocol) pour fournir les informations sur le contenu de votre médiathèque (Artistes, albums, chansons, jaquette…) à votre iDevice. Le serveur peut être contrôlé par votre smartphone/tablette pour envoyer la musique directement sur vos haut parleurs via un récepteur Air Play.

N’importe quel PC ou MAC peut servir de serveur il suffit de laisser iTunes ouvert et d’activer la configuration du partage à domicile (Home Sharing) qui permet l’accès à la collection et  le contrôle distant. (votre smartphone devient une simple télécommande). Pour activer le partage, faire CTRL + B pour afficher: Menu > Partage à domicile > Activer le partage à domicile

Home Sharing

Si vous utiliser un serveur dédié sous Linux, il faut installer forked-daapd qui supporte non seulement la protocole Apple DAAP mais aussi MPD (Music Player Daemon) et RSP (Roku Server Protocol):

Les étapes d’installation sont simple:

1a. Si vous utilisez Debian / Raspbian Jessie alors ajoutez dans /etc/apt/sources.list:
deb http://www.gyfgafguf.dk/raspbian jessie/armhf/
ou
1b. Si vous utilisez Wheezy then alors ajoutez /etc/apt/sources.list:
deb http://www.gyfgafguf.dk/raspbian wheezy-backports/armhf/
2. Lancez la commande sudo apt-get update et ensuite sudo apt-get install forked-daapd
3. Editez le fichier /etc/forked-daapd.conf pour définir vos préférences (exemple indiqué le répertoire ou se trouve vos fichiers)
4. Redémarré le daemon pour prendre en compte les modifs avec un sudo /etc/init.d/forked-daapd restart

Attention, si votre collection de MP3 est très volumineuse, le premier démarrage peut être très long le temps que le scan des répertoires se fasse. Vous pouvez suivre la progression en regardant dans les logs:
tail -f /var/log/forked-daapd.log

Vous trouverez tous les détails sur les paramètres du fichier de conf sur le Site officiel et GitHub hébergeant ce fork open source.

Utilisation de la télécommande
Pour appairer une télécommande (iPhone/iPad ou App Android / Windows Phone), vous devez suivre les étapes suivantes:

  1. lancer forked-daapd
  2. lancer l’app Remote, aller dans les réglages, Ajouter une librairie (Add Library)
  3. Rechercher dans les logs en message de ce type:
    "Discovered remote 'iPhone_Eric' (id 71624..."
    

    Cela vous permet d’obtenir le nom exact de votre périphérique (iPhone_Eric dans cet exemple).

  4. Créer un fichier texte terminant en .remote (le nom du fichier n’a pas d’importance, seul l’extension compte et doit terminer en .remote ). Le fichier doit contenir deux lignes: la première ligne indique le nom de périphérique, le second correspond au 4 digit qui compose le code d’appairaige affiché par l’application Remote.Si votre iPod/iPhone/iPad est nommé « iPhone_Eric » et que Remote affiche le code 5387, le fichier doit contenir:
    iPhone_Eric
    5387 
    
  5. Placer le fichier créer dans votre bibliothèque

Voilà si l’application Remote affiche le nom de votre serveur forked-daapd l’appairage est maintenant fait, vous pouvez supprimer le fichier.

iTunes_Remote_Retune
iTunes_Remote_WindowsPhone

Sélectionner la sortie audio

L’application Remote affiche la liste de tous les périphérique audio visible depuis le serveur. Cette liste inclue tous les périphériques compatible présent sur le réseau (Matériel officiel AirPlay: AirPort Express, Apple TV ou simulé avec un Raspberry Pi … Les sorties audio locale de votre carte son peuvent aussi apparaître). forked-daapd mémorise votre sélection d’appareils et le volume définit pour chaque, ce qui permet de reprendre dans les même réglage au démarrage suivant.

Périphérique AirPlay et haut parleurs

forked-daapd découvre automatiquement les périphériques sur le réseau mais si l’un d’eux est protégé par un mot de passe, il faut indiquer ses identifiants dans le fichier de conf pour pouvoir diffuser dessus

streaming du flux audio sur le réseau
Vous pouvez sur n’importe quel lecteur MP3 écouter la musique en cours de diffusion depuis le serveur DAAP. Il suffit d’ouvrir le fichier suivant:
http://[votre hostname/adresse IP]:3689/stream.mp3

Transformer un Raspberry Pi en récepteur AirPlay

Pour cette partie du tuto, vous devez déjà disposer d’un Raspberry Pi avec Raspbian installé et déjà connecté au réseau (filaire ou Wifi). Vous pouvez bien sur le faire avec n’importe quel autre appareil sous Linux.

Pour que votre appareil soit détecté en tant que récepteur vous devez installer un logiciel qui simule le comportement d’un périphérique Apple. Il existe, shairport qui émule l’AirPort Express sur Linux. Une fois installé, votre client reçoit le flux audio depuis votre iPhone ou votreserveur DAAP et le diffuse sur les haut parleurs. Il existe de nombreuses fork de shairport. Personnalement, je préfère utilsié le dérivé nommé: shairport-sync. Le projet est encore maintenu et assure la compatibilité avec le dernier iOS. Il se montre plus réactif, la lecture démarre plus rapidement et réagit plsu rapidement au changement de volume et surtout permet de synchroniser la diffusion entre plusieurs récepteur. Ce qui est parfait pour une utilisation multi-room. L’inconvénient c’est que contrairement à shairport, vous aurez besoin de compiler vosu même les sources (rien de compliqué, je vous explique tout ici) mais plus long

Si vous voulez aller au plus simple, lancez simplement:
sudo apt-get install libshairport1

Si vous préférez shairport-sync et je vous le recommande, suivez les étapes suivantes:

1. Installer les dépendences:

sudo apt-get install autoconf libtool libdaemon-dev libasound2-dev libpopt-dev libconfig-dev
sudo apt-get install avahi-daemon libavahi-client-dev
sudo apt-get install libssl-dev

2. Télécharger les sources de shairport-sync :

cd ~
git clone https://github.com/mikebrady/shairport-sync.git

3. Build et installer:

cd shairport-sync
autoreconf -i -f
./configure --with-alsa --with-avahi --with-ssl=openssl
make
sudo make install

Maintenant, il ne vous reste plus qu'à modifier la configuration
sudo vi /etc/init.d/shairport-sync

Trouver la ligne suivante:

start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- -d || return 2

Et faire la modification suivante:

start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- -d -a "Salon" -- -d hw:0 -t hardware -c "PCM" || return 2

Vous pouvez bien sur remplacer Salon par le nom de votre choix pour mieux identifier la pièce ou se trouve le récepteur/diffuseur (cuisine, salle de bain, chambre…)

Il faut ensuite éditer le fichier suivant pour que le  daemon de shairport s’initialise automatiquement au démarrage

sudo update-rc.d shairport-sync defaults

Redémarrer pour terminer

sudo reboot

Si vous utilisez un iPhone / iPad comme récepteur vous pouvez utiliser l’application Simple DAAP Client qui est compatible avec votre serveur DAAP (pas de configuration tout est détecté via Apple Bonjour)

5 Comments

  1. re deplus il manque le v dans
    sudo apt-get install autoconf libtool libdaemon-dev libasound2-dev libpopt-de
    c est donc
    sudo apt-get install autoconf libtool libdaemon-dev libasound2-dev libpopt-dev
    tu ne configure rien d autre ?
    moi jessay depuisplusieurs semaine en sivant le git mais je galere lol

  2. Salutation
    Premièrement Merck pour le travail effectué, c’est claire et j’ai vraiment hâte de le tester. Mais j’ai une question (dont je pense connaître la réponse).
    Je souhaiterais savoir si le froked-daap ne sert que pour les médias son ou si il est possible de le faire fonctionner pour des médias tel que les vidéos.
    En effet je cherche a partager (en domicile) sur mon aTv3 (par exemple) ma bibliothèque vidéo iTunes tout en utilisant un raspberry (pour qu’il puisse tourner 24/24). Je sais qu’il y a une alternative avec minidnla mais comme indique le nom il s’agit de dnla et non pas de partage apple.
    Merci de m’éclairer sur ce point.

    • Bonjour,

      Je proposes d utiliser les raspberry pi comme client car cela ne revient pas cher.

      On pourrait imaginer utiliser un raspberry pi sur la partie serveur mais la petite carte n est pas très adapté pour cela. (Le contrôleur est partagé entre le port réseau et le port USB ce qui divise les débits donc ça fonctionne mais ce n est pas optimal)

      De plus, je parts du principe que le serveur central sert a de multiples choses (serveur web, serveur audio / vidéo, client torrent…)
      Donc un petit raspberry pi est un peu juste niveau perf pour supporter tout en même temps de manière performante

1 Trackback / Pingback

  1. Raspberry Pi : mise en place d'un système audio Multi-zone - Geek Mag

Répondre à Eric78 Annuler la réponse

Votre adresse de messagerie ne sera pas publiée.


*