Macberry Pi : utiliser un Raspberry Pi comme récepteur AirPlay

Antoine Collin |

Après le Raspberry Pi en tant que « Time Capsule » et le Raspberry Pi en tant que serveur AirPrint, attaquons-nous à une solution souvent demandée : le Raspberry Pi en tant que récepteur AirPlay.



Macberry Pi



AirPlay audio



Nous allons ici nous intéresser à ce qu'Apple a longtemps appelé AirTunes : AirPlay audio. Cette technologie est apparue avec la première borne AirPort Express en 2004 et permettait — à l'origine — de diffuser de l'audio d'iTunes vers la sortie audio d'une borne. Au fil des années, Apple a amélioré la technologie : prise en charge par iOS avec iOS 4.2, prise en charge dans le système avec Mountain Lion, ajout d'autres récepteurs (Apple TV, appareils sous licence, etc.). Techniquement, le fonctionnement est assez simple : l'émetteur encode l'audio en ALAC — un codec sans pertes et open-source — et envoie le son au récepteur, qui décode. AirPlay a l'avantage d'être sans pertes, contrairement au Bluetooth A2DP, par exemple.



ShairPort et le Raspberry Pi



Depuis 2011 et la découverte par rétroingénérie de la clé de chiffrement des bornes AirPort Express, il est possible de proposer des implémentations logicielles de la réception AirPlay. Nous allons utiliser le programme le plus courant, ShairPort.



Nous allons supposer que vous avez un Raspberry Pi fonctionnel, accessible en SSH via Bonjour, ce que nous avons décrit dans les articles précédents.



ssh pi@MacberryPi.local


L'installation



Installons d'abord les paquets nécessaires.



sudo apt-get install git libao-dev libssl-dev libcrypt-openssl-rsa-perl libio-socket-inet6-perl avahi-utils libmodule-build-perl


Ensuite, il faut installer un petit script en Perl pour que la compatibilité iOS 6.x soit totale.



git clone https://github.com/njh/perl-net-sdp.git perl-net-sdp
cd perl-net-sdp
perl Build.PL
./Build
./Build test
sudo ./Build install


Enfin, il faut installer ShairPort, le logiciel qui va permettre à notre Raspberry Pi de devenir un récepteur AirPlay.



git clone https://github.com/hendrikw82/shairport shairport
cd shairport
make
sudo make install


La configuration



Maintenant que ShairPort est installé, les commandes suivantes vont permettre de lancer le logiciel à chaque démarrage.



sudo cp shairport.init.sample /etc/init.d/shairport
cd /etc/init.d
sudo chmod a+x shairport
sudo update-rc.d shairport defaults


Enfin, nous allons éditer un fichier de configuration pour donner un nom à notre récepteur AirPlay.



sudo nano /etc/init.d/shairport


Il suffit de modifier la ligne qui commence par DAEMON_ARGS= de cette façon : DAEMON_ARGS="-w $PIDFILE -a AirMacberryPi". Il faut ajouter le -a ainsi que le nom de votre serveur AirPlay.





La sortie audio



Maintenant, le plus important, la sortie audio. Il existe trois possibilités : utiliser la (mauvaise) sortie audio analogique du Raspberry Pi, utiliser la sortie HDMI du Raspberry Pi ou utiliser une carte son (ou des enceintes) USB. Chaque solution a ses avantages et ses inconvénients.



La sortie jack



La sortie jack a l'avantage de fonctionner avec pratiquement n'importe quelle enceinte, mais sa qualité laisse franchement à désirer. Pour ceux qui veulent l'utiliser, la commande suivante permet de forcer son usage.



amixer cset numid=3 1


La sortie HDMI



Le Raspberry Pi propose une sortie HDMI capable de prendre en charge l'audio. Elle permet de transporter un flux stéréo et de travailler avec un taux d'échantillonnage de 44 kHz ou de 48 kHz en fonction de la source, alors que même l'Apple TV ne travaille qu'en 48 kHz. Pour ceux qui veulent utiliser la sortie HDMI, la commande suivante permet de forcer son usage.



amixer cset numid=3 2


Si jamais la sortie reste silencieuse, une solution existe. Il faut modifier le fichier config.txt et décommenter (en enlevant le #) la ligne #hdmi_drive=2.



sudo nano /boot/config.txt  


Une carte son USB



La troisième solution consiste à utiliser une carte son USB ou des enceintes USB. Attention, les enceintes alimentées par le bus USB risquent de ne pas fonctionner ou de produire un son très faible, le Raspberry Pi étant assez capricieux au niveau de l'alimentation du bus USB. Nous avons testé avec une carte son USB noname achetée sur eBay et avec des enceintes USB LaCie alimentées par une alimentation séparée.



Le plus simple avec une carte son USB est de forcer le système à l'utiliser comme périphérique de sortie par défaut. Il suffit de modifier un fichier, en allant commenter (en ajoutant un #) la ligne options snd-usb-audio index=-2.



sudo nano /etc/modprobe.d/alsa-base.conf


Dans ce fichier, nous pouvons aussi ajouter à la fin la ligne suivante, qui permet dans certains cas d'améliorer la latence.



options snd-usb-audio nrpacks=1


Une fois que c'est fait, il suffit de redémarrer le Raspberry Pi et le serveur AirPlay devrait fonctionner.



sudo reboot
avatar Teghime | 
Juste pour info, j'ai du installer aussi libwww-perl (requis par shairport) : sudo apt-get install libwww-perl sinon erreur HTTP/Request.m pas trouvé
avatar dazz | 
!!! génial de faire une borne airpay avec un raspberry, vais en commander direct ! merci des tutos !!!
avatar Antoine Collin | 
@rbhack : le mirroring marche pas, j'ai essayé. A priori, y a une question de chiffrement ou un truc dans le genre, alors que pour de la vidéo, aucune vérification.
avatar Anonyme (non vérifié) | 
@AntoineCollin : Merci pour ta réponse ;)
avatar Anonyme (non vérifié) | 
bonsoir j ai suivi le tuto a la lettre mon rpi et connecter par câble , je n et eu aucune erreur pendant l instalation et pourtant mon iphone ne le detecte pas
avatar MacGyver | 
bon, a quand le kit tout-en-un avec soft libre pour se faire une borne AppleTV/airplay/airprint/ avec ce rapsberry dans une boite d'allumettes ? c'est Tim cook qui va faire la gueule
avatar joneskind | 
Super boulot les mecs ! Comme d'hab ! Chapeau ! J'ai quand même une question. Comment se fait-il qu'il soit aussi "facile" d'utiliser les technologies Apple alors qu'on a plutôt l'impression que l'entreprise verrouille son écosystème autour du matériel Apple. Bientôt un serveur iCloud maison ? ^_^ PS: Je trouve d'ailleurs qu'Apple devrait permettre de configurer son propre serveur iCloud sur OSX Server, ou au moins permettre une synchro OTA directement depuis le Web et pas simplement sur le même réseau Wifi.
avatar Anonyme (non vérifié) | 
Il me semble qu'il est possible d'utiliser l'airplay vidéo en installant xbmc sur le Raspberry, quelqu'un peut confirmer ?
avatar Tom.P | 
@rbhack : Oui XBMC le fait mais j'ai quelque doute sachant déjà que XBMC sur mon MacBook est capricieux ! Après ça vient de moi, peut être ^^
avatar YARK | 
Bon, moi j'attends "utiliser un raspberry pi à la place d'un MacPro". A 30 euro la bête ça peut valoir le coup ;-)
avatar chriseg | 
Bonjour, Tuto très intéressant et bien fait. Je suis de plus en plus tenté par ce petit appareil à la fois comme récepteur AirPlay audio et vidéo mais aussi comme MédiaCenter avec Xmbc par exemple. Je ne sais pas par contre s’il peut faire les 3 choses en même temps
avatar Funigtor | 
@ShowMeHowToLive : 'un OS acceptable... Ça fait tourner Chrome OS ce machin ?' Chrome OS ? Je sais pas si on peut parler d'OS acceptable. Sinon, doit bien y avoir des environnements graphique compilés pour le Raspberry Pi, à coupler avec un Navigateur
avatar Garzak | 
@chriseg J'en possède un. Mes contenus sont sur un NAS Synology, le raspberry pi y accède via le protocole NFS (il y a 3 lignes de commande à taper sur le NAS pour le rendre compatible avec le pi, tout expliqué sur le wiki raspbmc). Le Raspberry tourne sous RaspBMC, et il se comporte de base comme un récepteur Airplay.
avatar Khadgare | 
C'est super ce que vous faites.. Et vous restez le meilleur site Apple que je connaisse.... Mais moi qui suis pas malin, et un novice dans le monde de la pomme ( j'ai eut tous les iPhone quasiment ) et 4 iPad différent) Bien j'ai strictement Rien compris dans votre article... Même les 2 premières phrases... On instal quoi et ou? Lol! Bravo a vous et continuez surtout car vous touchez tout type de lecteur et ça, c'est cool!
avatar Antoine Collin | 
@joneskind : pour AirPlay, la clé privée de la borne AirPort Express 11g a été choppée par un gars qui a récupéré le firmware. Le protocole en lui-même est assez simple, donc avec la clé, on peut recevoir facilement. @rbhack : oui, mais pas vraiment besoin de tuto pour ça, c'est vraiment très simple. Par contre, on reçoit de la vidéo, pas la copie d'écran iOS ou Mac OS X. @ShowMeHowToLive et @Funigtor : ils fournissent un environnement graphique avec un navigateur, mais c'est horriblement lent.
avatar _Tido_ | 
J'avais un eepc dont le disque dur a cramé, et je m'en sers comme borne airplay J'ai installé un live cd debian persistant sur une sdcard (via lili sur un PC), les paquets, perl et ensuite shairport (la version hendrikw82 pour iOS 6), et ça fonctionne également parfaitement... si ça intéresse qqn, je peux envoyer mon history
avatar chriseg | 
@Garzack Je vais regarder, merci.
avatar macintosh_plus | 
Le raspberry dispose d'un système d'exploitation complet avec interface graphique. De plus il est possible d'avoir des pack avec un boitier et tout le matériel utile pour le faire fonctionner. http://www.mactronique.com/store/product_info.php?products_id=35 Merci pour les tuto qui sont très bien fait ! J'ai hâte de pouvoir les mettre en oeuvre.
avatar RomanoPingu | 
Pour ceux qui posaient la question : je confirme que RaspBMC fait ça très bien aussi. Simple à installer, et ça permet de faire autre chose du Raspberry Pi qu'un "simple" récepteur airplay (super avec un nas synology pour lecteur de vidéo/photos/son, un iphone/ipad pour airplay, etc ...) ;)
avatar Anonyme (non vérifié) | 
Super cette série d'articles "Macberry Pi". C'est possible d'avoir un article qui explique comment dédier un Rasberry Pi à la sauvegarde avec CrashPlan?
avatar Anderson69s | 
C'est bien de démocratiser le raspberry pi mais pourquoi utiliser raspbian qui n'hécessite de tout installer la ou raspbmc et xbian propose une solution complete est beaucoup plus simple à utiliser et surtout à mettre en place... Personnellement, j'ai acheté mon pi y'a un mois pour remplacer un pc windoWs qui servait de serveur pour mes disques durs, cela m'a aussi permis de revendre mon apple tv 2g... Et purée je le regrette vraiment pas plus de priblème de mise-à-jour et plus besoin d'attendre le jb... Si vous voulez plus d'infos c'est sur mon site : http://anderson69s.com/2013/03/16/raspberry-pi-utilisation-domestique/
avatar Cyberju | 
Ce qui serait top, ce serait de l'installer dans une voirure puis le brancher avec un autoradio !!! Mais comment l'alimenter ?
avatar i-han | 
ben en 12V avec un convertisseur
avatar Odysseus | 
C'est d'une simplicité enfantine ! Exactement le genre de truc pour lequel j'ai choisi le Mac depuis mon Mac 128. Ne pas avoir à taper une seule ligne de code pour utiliser un ordinateur...
avatar béber1 | 
joneskind "Bientôt un serveur iCloud maison ? ^_^ PS: Je trouve d'ailleurs qu'Apple devrait permettre de configurer son propre serveur iCloud sur OSX Server, ou au moins permettre une synchro OTA directement depuis le Web et pas simplement sur le même réseau Wifi." + j'avais pensé à une solution d'un MacMini Server en NAS (avec extension cube ou tour carrée variable selon le nombre de baies) pour faire un iCloud domestique qui pourrait tout autant être en liaison avec l'iCloud d'Apple. La logique est que tout devient numérique, les docs persos comme les factures, etc., qu'il manque un centre de stockage conséquent pour des médias de plus en plus lourds et importants (vidéos persos ou films HD - bientôt en 4k demain) et que donc il manque un centre nerveux dans la maison, celui-ci pouvant même être en relation, en plus des ordis et mobiles dans un iCloud domestique, avec une iTV (même en boitier évolué). On voit bien qu'Apple rechigne à cette idée qui est pourtant plus conforme à sa tradition matérielle (si on doit la comparer à celle d'un Google), certainement pour assoir son -marché global d'- iCloud en ligne, sa vente de médias par iTunes, etc. et aussi parce qu'en tant que promoteur de l'ère post-pc incarnée par les mobiles, les logiques vont vers l'externalisation des documents pour un accès performant partout, etc. Simplement, on buttera toujours sur la confidentialité de pas mal de documents, et je ne vois pas de contradiction entre un iCloud domestique et un iCloud en ligne, les 2 pouvant tout à fait fonctionner de concert avec le choix à la carte de ce qui doit rester dans le domaine du "domestique-privé" (non-externalisé mais accessible directement) et ce qui peut être du nuage général. Cela demanderait du développement, mais je pense pas que ce soit insurmontable pour eux, ni que ce soit un risque produit majeur, car je suis sûr que cette solution de serveur domestique correspondrait à une demande et aurait du succès
avatar poco | 
J'adoore vos articles sur le Pi! On attend avec impatience le week end maintenant sur MacG ;-) Encore encore!!!
avatar Antoine Collin | 
@Anderson69s pour une bonne raison : on n'a pas vraiment besoin de tuto pour utiliser Raspbmc ou autre. Ici, on a la satisfaction de l'avoir fait et accessoirement, on peut installer les trois tutos actuels sur le même.
avatar Phiphi | 
@Funigtor : 'Sinon, doit bien y avoir des environnements graphique compilés pour le Raspberry Pi, à coupler avec un Navigateur' Heu vu que déjà à la base la distrib Raspbian comprends l'environnement graphique lxde ça fait au moins un sans chercher trop longtemps, hein !
avatar Anonyme (non vérifié) | 
@AntoineCollin Oui je demandais plutôt en prévision d'acheter un raspberry pour utiliser le mirroring airplay notamment. Si j'ai bien compris ton message, c'est justement impossible ? Pourtant à priori je vois pas de différence technique entre un streaming de contenu vidéo (disons un film mp4) et le streaming airplay intégré à Mountain Lion. Tu peux me confirmer à 100% que le mirroring airplay de Mountain Lion ne marche pas avec le xbmc du raspberry ? Merci ;)
avatar Anonyme (non vérifié) | 
J'ai un Raspberry Pi, je vais PEUT-ÊTRE essayer d'en faire un MacBerry Pi, mes grands-parents pourraient bien aimer avoir un serveur personnel.
avatar pomme man | 
De mon côté je cherche à transformer le raspberry en air port express pour diffuser du wifi depuis une confection ethernet... Une idée?

CONNEXION UTILISATEUR