Macberry Pi : utiliser un Raspberry Pi pour partager une bibliothèque iTunes

Antoine Collin |

Il y a quelques années, Apple a lancé une technologie de partage de bibliothèque avec un protocole maison, Digital Audio Access Protocol (DAAP), qui utilise notamment Bonjour. Au fil des années, DAAP a été amélioré et — parfois — modifié. Dans ce tutoriel, nous allons voir comment partager un dossier contenant de la musique et stocké sur le Raspberry Pi. Nous allons réutiliser certaines choses présentées dans les dossiers précédents, notamment celui sur la mise en place d'un serveur Time Machine.



Macberry Pi



Un souci d'implémentation



Le protocole DAAP est assez ancien, mais Apple le modifie régulièrement. Et à chaque fois, les implémentations libres utilisées par exemple dans les NAS se retrouvent dans les choux. Nous avons eu ce problème en rédigeant ce dossier : les implémentations de DAAP sous Linux sont rarement compatibles avec les dernières versions d'iTunes. Le logiciel qui semble le plus efficace est Forked-DAAPD, un logiciel open source assez récent. Le problème que nous avons eu est simple : il existe plusieurs branches (des versions) du logiciel, et seule la principale est totalement fonctionnelle avec iTunes 11 et l'application Remote d'iOS. Malheureusement, cette version ne fonctionne pas sur le Raspberry Pi, elle utilise en effet une implémentation libre de Grand Central (un logiciel… Apple) incompatible avec Raspbian. Nous avons donc dû nous rabattre sur une branche secondaire qui n'est pas compatible avec Remote sous iOS mais fonctionne parfaitement avec iTunes 11.



Gérer les données



Nous allons commencer par gérer l'espace de stockage où nous allons enregistrer les données. Il est nécessaire d'avoir installé Netatalk et d'avoir un serveur AFP fonctionnel, comme expliqué dans le premier article de notre série.



Connectons-nous sur le Raspberry Pi depuis un Mac.



ssh pi@MacberryPi.local


Nous allons maintenant créer un dossier pour la musique sur le disque dur utilisé pour les sauvegardes Time Machine, ainsi qu'un utilisateur dédié, itunes, avant de lui donner les droits. Il faut donner un mot de passe à l'utilisateur, il sera utilisé pour se connecter sur le point de partage.



mkdir /media/timemachine/musique
sudo useradd itunes
sudo chown itunes /media/timemachine/musique


Maintenant, nous allons configurer Netatalk pour qu'il partage ce dossier, comme dans notre tutorial précédent.



sudo nano /usr/local/etc/afp.conf


Il faut ajouter les lignes suivantes dans le fichier.



[Partage iTunes]
path = /media/timemachine/musique
valid users = itunes


Enfin, on redémarre Netatalk.



/etc/init.d/netatalk restart


Si tout se passe bien, le point de partage sera accessible depuis le Finder de Mac OS X et nous allons le tester en copiant quelques fichiers musicaux dans le dossier.





Installer Forked DAAPD



Le plus dur commence, nous allons devoir installer plusieurs dépendances et compiler quelques bibliothèques, Forked DAAPD étant assez tatillon sur ce point.



sudo apt-get update
sudo apt-get install libunistring-dev libconfuse-dev sqlite3 libsqlite3-dev
libavcodec-dev libavformat-dev libswscale-dev libmxml-dev libavl-dev libantlr3c-dev
libasound2-dev libevent-dev libplist-dev antlr3 autoconf gettext libtool gperf


Maintenant, compilons une version de LibEvent adaptée.



cd ~/Desktop
wget https://github.com/downloads/libevent/libevent/libevent-1.4.14b-stable.tar.gz
tar xvzf libevent-1.4.14b-stable.tar.gz
cd libevent-1.4.14b-stable
./configure
make
sudo make install


Ensuite, la bonne version de LibGCrypt.



cd ~/Desktop
wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.5.0.tar.bz2
tar xjf libgcrypt-1.5.0.tar.bz2
cd libgcrypt-1.5.0
./configure
make
sudo make install


Enfin, la bonne version de Forked DAAPD. Il existe d'autres versions, mais soit elles sont incompatibles avec iTunes 11, soit elles sont incompatibles avec le Raspberry Pi.



cd ~/Desktop
wget https://github.com/CBGoodBuddy/forked-daapd/archive/itunes_v10_5.zip
unzip itunes_v10_5.zip
cd forked-daapd-itunes_v10_5
autoreconf -i
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-itunes
make
sudo make install


Une fois le logiciel compilé et installé, il y a quelques petites manipulations à effectuer. La première consiste à créer un utilisateur dédié et lui donner les droits sur certains dossiers.



sudo useradd -r daapd
sudo chown daapd /var/cache/forked-daapd


Maintenant, nous allons éditer le fichier de configuration du logiciel.



sudo nano /etc/forked-daapd.conf


Il va falloir indiquer le nom de la bibliothèque partagée et son emplacement (/media/timemachine/musique). Il est aussi possible, même si nous ne l'avons pas fait, d'activer le support des fichiers FLAC. Comme iTunes est incapable de les lire, il est possible de demander au serveur de les réencoder à la volée dans un autre format, ce qui manque d'intérêt dans l'absolu.



name = "Ma musique"
directories = { "/media/timemachine/musique" }


Dernière étape, nous allons configurer Forked DAAPD pour qu'il démarre automatiquement.



cd /etc/init.d/
sudo wget https://raw.github.com/kohsuke/forked-daapd/master/debian/forked-daapd.init
sudo chmod u+x /etc/init.d/forked-daapd.init
sudo update-rc.d forked-daapd.init defaults


Si tout va bien (nous l'espérons pour vous), la bibliothèque partagée devrait être visible depuis iTunes 11 et afficher les morceaux stockés.





Attention, il est nécessaire de redémarrer le Raspberry Pi pour que la liste des fichiers se mette à jour sur le serveur distant.

avatar Anonyme (non vérifié) | 
Merci pour vos articles sur le Raspberry !! Une question toutefois sur la bibliothèque partagée: y'a-t-il la navigation par artiste/album comme sur la bibliothèque locale ?
avatar joneskind | 
Merci !
avatar iPadOne | 
Sympa cette série d'articles , question idiote pourquoi ne pas les regrouper tous ensemble histoires de les retrouver dans le futur
avatar skwale | 
le gros soucis de ce protocole lorsqu'il est géré par un tiers est l'impossibilité d'afficher ou de changer les jaquettes et de noter les morceaux ...
avatar shark09 | 
@Shor-T CMD B me semble ;)
avatar YARK | 
Question de profane : au niveau de l'interface graphique, on peut visualiser les graphismes iTunes LP - quoiqu'ils-sont-souvent-nases-et-inintéressants-mais-bon-tant-que-ça-anime-l'écran...?
avatar iCaramba | 
Ça me fait penser que j'ai perdu tout les articles sur le "macberry" que j'avait dans mes favoris… :/
avatar Terence993 | 
Y a-t-il moyen de faire fonctionner plusieurs choses en même temps et sur un seul Raspberry Pi ? Genre AirPrint + TimeMachine + AirPlay ?
avatar Antoine Collin | 
@Terence993 : Oui, sans soucis.
avatar Anonyme (non vérifié) | 
Ce qui serais sympa c'est de partager des vidéos également, apparemment cela ne marche que pour la musique.
avatar Antoine Collin | 
Si elles sont lisibles par iTunes (H.264 et AAC) et que le réseau suit, ça doit passer normalement.
avatar stéphane83 | 
La bibliothèque est accessible en partage sur l'Apple tv?
avatar Antoine Collin | 
Non, l'Apple TV utilise un autre système pour le partage, ce n'est pas compatible.
avatar poco | 
Super article encore une fois. A quand un article interaction avec le "monde extérieur"? (servos, moteurs, encoders etc...)
avatar Terence993 | 
@AntoineCollin : Et avez-vous déjà essayé de lui adjoindre un dongle Wi-Fi ? Étant donné que mon routeur est assez loin de mon bureau et de mon imprimante...
avatar Antoine Collin | 
J'ai pas de cartes sous la main, mais ça semble assez simple, supporté directement.
avatar M.S.O | 
SVP pouvez vous me dire c'est quoi exactement macberry pi et raspberry pi ???
avatar Link1993 | 
@Terence993 : Oui, sans souscis, tu peux en brancher un tout a fait tranquillement. J'ai acheter un belkin n150 à la fnac pour 25€. Tu branche, tu modifie un fichier, et ca roule ! ;) voici un lien si ca t'interesse, avec une liste des dongles comatible : http://www.generation-linux.fr/index.php?post/2013/02/18/Mise-en-place-du-WiFi-sur-le-Raspberry-Pi
avatar Link1993 | 
Dites, je crois bien que j'ai zappé une etape... daapd ne se lance pas, et si je tente de le lancer manuellement, je tombe sur un "starting RSP and DAAP media server: /usr/sbin/forked-daapd: error while loading shared libraries: libevent_core-1.4.so.2: cannot open shared object file: No such file or directory" j'ai pourtant tout fait correctement pour libevent_core, mais je sais pas d'ou viens le probleme... Faut que je creuse encore, mais si quelqu'un a une idée ?
avatar Antoine Collin | 
Faut chercher ce qu'il essaye d'atteindre exactement, mais normalement ça passe, c'est bizarre. Essaye de faire un apt-get install de la bibliothèque puis refais un make install de la compilée.
avatar ragmaxone | 

j'ai lu qu'il était possible d'utiliser les dépôt backports pour avoir une version fonctionnelle de Forked DAAP http://www.raspberrypi.org/forums/viewtopic.php?p=387756#p387756
pourriez mettre à jour le tuto? parce que ça simplifie graaaannndement tout l'bazar :D

CONNEXION UTILISATEUR