Installation de Squeezelite sur le RaspberryPi

Squeezelite est un émulateur pour Squeezebox pour Linux, OSX et Windows. Les Squeezebox font partie de la gamme des lecteurs audio de Logitech qui se connectent au serveur Logitech Media Server. L’ensemble permet de créer un système audio disposant de plusieurs lecteurs pouvant être ou non synchronisés. On peut ainsi mettre en place un système audio multi-pièces en connectant un ou plusieurs lecteurs (Squeezebox de Logitech, par exemple) avec un dispositif faisant tourner le serveur Logitech Media Server.

Il s’agit là de solutions commerciales, mais il faut savoir que le Logitech Media Server est disponible sous les termes de la licence ´GNU General Public License´_. Cela signifie qu’il s’agit d’un logiciel open-source. De plus, plusieurs implémentations de la partie lecteur sont disponibles, dont Squeezelite.

Et, mieux encore : le tout est parfaitement fonctionnel sur le RapsberryPi! Je me base d’ailleurs sur ce duo LMS-Squeezelite pour mon projet Touchradio!

Afin de tester les possibilités de la fonctionnalité de synchronisation des lecteurs, j’ai mis en place le setup suivant :

Un RaspberryPi connecté en wifi, exécutant Logitech Media Server et Squeezelite
Un disque dur réseau possédant l’ensemble de ma collection musicale, connecté au réseau l’interface ethernet
Un deuxième RaspberryPi, connecté via un câble réseau lui aussi, qui exécute uniquement Squeezelite.

Ce setup décentralisé montre la flexibilité qu’il est possible d’atteindre: les fichiers audio peuvent se trouver autant en local sur le server que n’importe où sur le réseau, le serveur peut fonctionner sur n’importe quelle machine du réseau, et on peut disposer d’autant de clients (lecteurs) que l’on souhaite (tant que le serveur peut tenir la charge). Notez bien que tout ceci est multi-plateforme. Tant LMS que Squeezelite sont disponible pour Linux, Windows, OSX, et fonctionnent sur du x86/x64, du ARM,… Il est dont possible de lancer le serveur sur un RaspberryPi, d’avoir un lecteur sous Windows et un autre sous OSX, par exemple. Mais moi, je laisse faire mes RaspberryPi, ils font ça très bien!

Je vais expliquer dans ce billet comment installer Squeezelite. D’autres billets suivront pour détailler l’installation de Logitech Media Server, ainsi que certaines fonctionnalités telle que la synchronisation des lecteurs.

Installation de Squeezelite

Je tiens à préciser que je n’ai rien inventé, et que je me suis largement inspiré de documents trouvés sur le net, et notament celui-ci (sur le forum de la communauté RaspberryPi). L’installation est excessivement simple vu que le site de Squeezelite fournit des binaires déjà tout prêts pour le RaspberryPi.

Il faut d’abord commencer par installer quelques dépendances :

sudo apt-get install libflac-dev libfaad2 libfaad2

Ensuite, créer un répertoire pour télécharger Squeezelite, le télécharger, le copier dans /usr/bin et le rendre exécutable :

mkdir squeezelite
cd squeezelite
wget http://squeezelite.googlecode.com/files/squeezelite-armv6hf
sudo mv squeezelite-armv6hf /usr/bin
cd /usr/bin
sudo chmod u+x squeezelite-armv6hf

Et voilà! Squeezelite est installé! Facile, non?

Utilisation de Squeezelite

On peut ensuite vérifier qu’une carte son est bien détectée (la carte son intégrée au RaspberryPi est bien détectée chez moi):

pi@malinka ~ $ squeezelite-armv6hf -l
Output devices:
null                           - Discard all samples (playback) or generate zero samples (capture)
default:CARD=ALSA              - bcm2835 ALSA, bcm2835 ALSA - Default Audio Device
sysdefault:CARD=ALSA           - bcm2835 ALSA, bcm2835 ALSA - Default Audio Device

Cette commande est surtout utile si vous possédez une carte son USB, par exemple, afin de voir si elle est bien détectée elle aussi.

Le paramètre -h permet d’avoir une idées des paramètres que l’on peut donner au programme:

pi@malinka ~ $ squeezelite-armv6hf -h
Squeezelite v1.3, Copyright 2012, 2013 Adrian Smith. See -t for license terms
Usage: squeezelite-armv6hf [options]
  -s <server>[:<port>]  Connect to specified server, otherwise uses autodiscovery to find server
  -o <output device>    Specify output device, default "default"
  -l                    List output devices
  -a <b>:<p>:<f>:<m>    Specify ALSA params to open output device, b = buffer time in ms or size in bytes, p = period count or size in bytes, f sample format (16|24|24_3|32), m = use mmap (0|1)
  -b <stream>:<output>  Specify internal Stream and Output buffer sizes in Kbytes
  -c <codec1>,<codec2>  Restrict codecs to those specified, otherwise load all available codecs; known codecs: flac,pcm,mp3,ogg,aac (mad,mpg for specific mp3 codec)
  -d <log>=<level>      Set logging level, logs: all|slimproto|stream|decode|output, level: info|debug|sdebug
  -f <logfile>          Write debug to logfile
  -m <mac addr>         Set mac address, format: ab:cd:ef:12:34:56
  -n <name>             Set the player name
  -p <priority>         Set real time priority of output thread (1-99)
  -r <rate>             Max sample rate for output device, enables output device to be off when squeezelite is started
  -z                    Daemonize
  -t                    License terms

Personnellement, j’ai dû chipoter un peu avec le paramètre -a afin d’avoir un son normal. Sinon, j’avais un son soit déformé, soit entrecoupé de petit clics très désagréables. Voici comment je lance Squeezelite:

squeezelite-armv6hf -z -a 500:10:24:0 -n Malinka 192.168.0.14

Explications:

Le paramètre -z permet de le lancer sous forme de démon (en arrière plan)
Le paramètre -a détermine la taille de certains buffers. Je n’ai pas trop compris la signification des valeurs, mais cela fonctionne parfaitement chez moi!
Le paramètre -n permet de donner un nom au lecteur
Enfin 192.168.0.14 est l’adresse du RaspberryPi qui fait fonctionner le serveur Logitech Media Server.

Enfin, via l’interface web (http://192.168.0.14:9000), je peux choisir des chansons à jouer, et synchroniser les deux lecteurs. Et cela fonctionne parfaitement, c’est un réel plaisir d’entendre ma musique partout dans mon appartement sans aucun décalage!

Pour que cela fonctionne, il faut bien entendu que vous ayiez installé le Logitech Media Server le Raspberry, ou sur une autre machine du réseau. Je détaillerai cela dans un prochain billet.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *