{"id":171,"date":"2013-02-27T09:33:50","date_gmt":"2013-02-27T08:33:50","guid":{"rendered":"http:\/\/mmed.roulleau.net\/?p=171"},"modified":"2013-02-27T09:33:50","modified_gmt":"2013-02-27T08:33:50","slug":"serveur-subsonic-sur-rapsberry-pi","status":"publish","type":"post","link":"https:\/\/mmed.roulleau.net\/?p=171","title":{"rendered":"Serveur Subsonic sur Rapsberry PI"},"content":{"rendered":"<p>Le <a href=\"http:\/\/www.raspberrypi.org\/\">Raspberry Pi<\/a> est un excellent petit engin pour bidouiller. Pas cher, peu consommateur, tout petit, des milliers d&rsquo;utilisateurs sur le web entier ne cesse de lui trouver des utilit\u00e9s.\u00a0 En effet, son co\u00fbt modique permet de l&rsquo;envisager un peu partout dans votre maison dans des r\u00f4les tr\u00e8s diff\u00e9rents et inattendus. Chez moi, j&rsquo;ai d\u00e9cid\u00e9 de m&rsquo;en servir en tant que serveur audio branch\u00e9 sur ma cha\u00eene. Pilot\u00e9 par les PCs ou des applications mobiles\/tablettes, on dispose ainsi d&rsquo;un jukebox de qualit\u00e9, ultra modulable, pour une fraction du prix dans le commerce d&rsquo;une machine d\u00e9di\u00e9e et propri\u00e9taire.<\/p>\n<p>Bien s\u00fbr, il faut prendre sur soi et faire un de peu de \u00ab\u00a0do it yourself\u00a0\u00bb, mais rien d&rsquo;insurmontable, surtout quand on aime apprendre.<\/p>\n<p>Commen\u00e7ons \u00e0 z\u00e9ro en allant t\u00e9l\u00e9charger la distribution. J&rsquo;ai choisi <a href=\"http:\/\/www.raspyfi.com\/\">Raspyfi<\/a>, en lieu et place de l&rsquo;habituel <a href=\"http:\/\/www.raspbian.org\/\">Raspbian<\/a>, car j&rsquo;ai eu des difficult\u00e9s avec cette derni\u00e8re. Si vous suivez un peu la communaut\u00e9 Raspberry, vous \u00eates peut-\u00eatre d\u00e9j\u00e0 tomb\u00e9 sur des fils de discussion interminables parlant des probl\u00e8mes du Raspberry avec l&rsquo;USB. En effet, il semblerait qu&rsquo;ils soit victime de perte de paquets lorsque l&rsquo;<a href=\"http:\/\/www.raspberrypi.org\/phpBB3\/viewtopic.php?f=28&amp;t=12097\">USB est trop charg\u00e9<\/a>. Ce qui est assez p\u00e9nible, vous l&rsquo;avouerez, quand c&rsquo;est une cl\u00e9 wifi qui fait la connexion avec votre r\u00e9seau, et que vous cherchez depuis 4 heures pourquoi vous venez de subir une \u00e9ni\u00e8me d\u00e9connexion. Raspyfi adresse en partie ce probl\u00e8me, avec un peu de \u00ab\u00a0tunning\u00a0\u00bb : quelques options dans les\u00a0 modules charg\u00e9s au d\u00e9marrage, on fait passer l&rsquo;USB en 1.1, dans un futur proche un noyau RT sera rajout\u00e9 et hop, le syst\u00e8me est optimis\u00e9 pour une utilisation sans \u00ab\u00a0jutter\u00a0\u00bb et autres barbarismes que les audiophiles adorent.<\/p>\n<p>L&rsquo;installation de Raspyfi est un jeu d&rsquo;enfant, je vous conseille de vous orienter vers le site officiel ainsi que sur celui de Raspbian pour plus de d\u00e9tails.<\/p>\n<p>Ensuite cot\u00e9 logiciel, pour remplir ce r\u00f4le nous avons le choix entre plusieurs solutions. Ampache, Subsonic, mpd, tous permettent de g\u00e9rer une biblioth\u00e8que de sons et de contr\u00f4ler la lecture \u00e0 distance. Quelques points :<\/p>\n<ul>\n<li>Ampache se fait vieux, les applications mobiles qui vont bien ne sont pas tr\u00e8s belles ou n&rsquo;ont pas bonne r\u00e9putation<\/li>\n<li>J&rsquo;avais besoin d&rsquo;un jukebox faisant aussi office de serveur de streaming, et que l&rsquo;application mobile soit capable de g\u00e9rer les deux modes. mpd et ses applis d\u00e9riv\u00e9es ne g\u00e8rent pas \u00e7a nativement. Dommage, mpd est install\u00e9 de base avec Raspyfi.<\/li>\n<li>Subsonic adresse ces deux pr\u00e9c\u00e9dents points. Cependant, \u00e0 sa d\u00e9charge il n&rsquo;est pas tout \u00e0 fait gratuit. En effet, pour utiliser les applications mobiles au del\u00e0 d&rsquo;un mois d&rsquo;essai, il faut \u00ab\u00a0acheter\u00a0\u00bb une \u00ab\u00a0licence de soutien\u00a0\u00bb (prix libre). Le surco\u00fbt d&rsquo;une \u00ab\u00a0licence\u00a0\u00bb de soutien ne me g\u00eanant pas particuli\u00e8rement (je suis bien plus attach\u00e9 au concept de libert\u00e9 de l&rsquo;open source qu&rsquo;\u00e0 la gratuit\u00e9 qui est souvent pouss\u00e9 en tant que premier argument), j&rsquo;ai donc choisi Subsonic. Au passage, si vraiment vous \u00eates allergiques au \u00ab\u00a0soutien\u00a0\u00bb, il est tout \u00e0 fait facile de trouver un patch d\u00e9sactivant les limitations, ou m\u00eame d&rsquo;utiliser Supersonic, un fork cr\u00e9\u00e9 \u00e0 cette occasion. Et l&rsquo;application mobile Andro\u00efd sans publicit\u00e9 est disponible sur le site des d\u00e9veloppeurs sous forme d&rsquo;un apk.<\/li>\n<\/ul>\n<p>Subsonic \u00e9tant en java, on commence par installer un JRE. De pr\u00e9f\u00e9rence open source, on ne se refait pas. Ne faites pas les malins (comme moi qui a perdu deux heures&#8230;) et n&rsquo;installez pas la version headless en pensant \u00e9conomiser des ressources : les librairies pulseaudio sont dans la version desktop&#8230; On installe au passage ffmpeg parce qu&rsquo;on en aura besoin apr\u00e8s :<\/p>\n<pre>sudo apt-get install openjdk-7-jre ffmpeg<\/pre>\n<p>Ensuite, on r\u00e9cup\u00e8re et installe le paquet sur le site officiel (v\u00e9rifiez si de nouvelles versions ne sont pas disponibles au lieu de recopier mon lien, petits fain\u00e9ants) :<\/p>\n<pre>wget http:\/\/downloads.sourceforge.net\/project\/subsonic\/subsonic\/4.7\/subsonic-4.7.deb\n\ndpkg -i *.deb<\/pre>\n<p>Ensuite, on \u00e9dite le fichier de conf de subsonic (\/etc\/default\/subsonic) pour le faire d\u00e9marrer avec un utilisateur autre que root. Ici on prend l&rsquo;utilisateur mpd, puisque \u00e7a nous \u00e9vite d&rsquo;avoir \u00e0 en configurer un nouveau (l&rsquo;ajouter, le mettre dans le bon groupe, etc) :<\/p>\n<pre>SUBSONIC_USER=mpd<\/pre>\n<p>Si vous utilisez le chip audio du Raspberry plut\u00f4t qu&rsquo;un dongle audio USB avec sortie optique, alors il faut r\u00e9activer le module. Je ne sais pas pourquoi, \u00e9diter le fichier \/etc\/modules pour rajouter la ligne \u00ab\u00a0snd_bcm2835\u00a0\u00bb n&rsquo;a pas march\u00e9 chez moi. Si vous avez une id\u00e9e, faites le moi savoir dans les commentaires. En attendant un coup de g\u00e9nie, rajoutez une ligne dans \/etc\/rc.local juste avant le exit 0 :<\/p>\n<pre>modprobe snd_bcm2835<\/pre>\n<p>Configurer votre sortie audio par d\u00e9faut (dans mon cas &lsquo;1&rsquo; pour le jack):<\/p>\n<pre>sudo amixer cset numid=3 1<\/pre>\n<p>Vous utilisez une cl\u00e9 wifi ? Avec WPA-2 parce que vous n&rsquo;\u00eates pas un insouciant ? Au plus simple, \u00e9ditez \/etc\/network\/interfaces :<\/p>\n<pre>auto lo\n\niface lo inet loopback\niface eth0 inet dhcp\n\nallow-hotplug wlan0\niface wlan0 inet dhcp\nwpa-ssid \"MonSSID\"\nwpa-psk \"masuperpassphrase\"\niface default inet dhcp<\/pre>\n<p>Dans mon cas, j&rsquo;utilise le DHCP avec des baux statiques pour mes IPs, si ce n&rsquo;est pas votre cas vous devrez utiliser une configuration statique. Vous vous attendiez \u00e0 ce que je vous m\u00e2che le travail en vous donnant les bonnes directives ? D\u00e9cid\u00e9ment vous \u00eates vraiment fain\u00e9ants aujourd&rsquo;hui ! Cherchez vous-m\u00eame sur le net !<\/p>\n<p>Ensuite : stockez-vous vos fichiers de musique sur le r\u00e9seau ? Faites un montage depuis \/etc\/fstab. Pour ma part, j&rsquo;ai utilis\u00e9 ma freebox en tant que stockage et partage Samba : tout simplement parce que je suis certain que celle-ci est toujours allum\u00e9e. Voil\u00e0 la ligne qui va bien chez moi (remplacez l&rsquo;IP par celle qui va bien chez vous)<\/p>\n<pre>\/\/192.168.0.254\/Disque\\040dur\\Musiques \/media\/music cifs username=anonymous,password=,uid=mpd,file_mode=0644,dir_mode=0755,iocharset=utf8,rsize=130048,wsize=4096,_netdev,sec=ntlmv2 0 0<\/pre>\n<p>Tiens, on apprend au passage qu&rsquo;on utilise le caract\u00e8re sp\u00e9cial \\040 pour faire un espace dans un point de montage, ou encore qu&rsquo;il faut utiliser _netdev pour que le syst\u00e8me comprenne qu&rsquo;il faut que le r\u00e9seau soit initi\u00e9 compl\u00e8tement avant de faire les montages. On dit merci qui ?<\/p>\n<p>Pour que le mode jukebox fonctionne, il faut pr\u00e9ciser \u00e0 Subsonic quelle sortie audio utiliser. \u00c9diter le fichier &lsquo;\/usr\/bin\/subsonic&rsquo; et rajouter le param\u00e8tre suivant dans la liste des param\u00e8tres de lancement java (qui repr\u00e9sente le jack chez moi) :<\/p>\n<pre>'-Djavax.sound.sampled.SourceDataLine=#ALSA [plughw:0,0]' \\<\/pre>\n<p>Allez on a presque fini. La version de ffmpeg livr\u00e9e avec subsonic n&rsquo;est pas adapt\u00e9e \u00e0 l&rsquo;architecture ARM du Raspberry, il faut donc la remplacer :<\/p>\n<pre>sudo rm \/var\/subsonic\/transcode\/ffmpeg\nsudo cp \/usr\/bin\/ffmpeg \/var\/subsonic\/transcode<\/pre>\n<p>Red\u00e9marrez Subsonic (\/etc\/init.d\/subsonic restart), et ensuite rendez-vous sur http:\/\/&lt;ip_du_raspberry&gt;:4040. Subsonic est tr\u00e8s long \u00e0 se lancer sur le petit Raspberry, donc pas de panique si il ne se passe rien les premi\u00e8res minutes. De plus les pages jsp sont tr\u00e8s tr\u00e8s longues \u00e0 charger les premi\u00e8res fois, rassurez vous l\u00e0 aussi, apr\u00e8s c&rsquo;est tout \u00e0 fait fluide.<br \/>\nJe ne vais pas d\u00e9crire en d\u00e9tail la configuration de Subsonic, c&rsquo;est assez simple et vous trouverez plein de tutos sur internet. Par contre, pour vous \u00e9vitez de chercher inutilement, voil\u00e0 quelques points pas \u00e9vidents pour utiliser Subsonic en mode Jukebox (car par d\u00e9faut il stream vers votre navigateur) :<\/p>\n<ul>\n<li>Configurez un \u00ab\u00a0lecteur\u00a0\u00bb (Param\u00e8tres &#8211;&gt; lecteur) de type \u00ab\u00a0Jukebox\u00a0\u00bb<\/li>\n<li>Configurez un utilisateur en lui donnant les droits d&rsquo;utiliser le \u00ab\u00a0jukebox\u00a0\u00bb (Param\u00e8tres &#8211;&gt; Utilisateurs)<\/li>\n<li>Pour le contr\u00f4le en jukebox depuis l&rsquo;application mobile\/tablette, il faut utiliser le bouton \u00ab\u00a0RC\u00a0\u00bb accessible depuis le player (en bas \u00e0 gauche).<\/li>\n<\/ul>\n<p>Voil\u00e0 !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le Raspberry Pi est un excellent petit engin pour bidouiller. Pas cher, peu consommateur, tout petit, des milliers d&rsquo;utilisateurs sur le web entier ne cesse de lui trouver des utilit\u00e9s.\u00a0 En effet, son co\u00fbt modique permet de l&rsquo;envisager un peu partout dans votre maison dans des r\u00f4les tr\u00e8s diff\u00e9rents et inattendus. Chez moi, j&rsquo;ai d\u00e9cid\u00e9 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[7,8],"tags":[38,46],"_links":{"self":[{"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=\/wp\/v2\/posts\/171"}],"collection":[{"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=171"}],"version-history":[{"count":0,"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=\/wp\/v2\/posts\/171\/revisions"}],"wp:attachment":[{"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mmed.roulleau.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}