DIY: Configuration de Runeaudio, un lecteur de musique réseau

J’ai reçu à mon anniversaire une petite chaîne hifi pour le salon du haut/chambre d’amis, et j’ai voulu lui adjoindre un lecteur réseau pour pouvoir lire notre musique facilement, comme dans la salle de vie en bas.

En bas, j’avais eu la chance de tomber sur un Pioneer N-30 d’occasion, parce qu’à 500€ neuf, pas moyen que je l’achète autrement. Par contre pour haut ça n’a pas été possible car

  • y’en avait pas à un prix acceptable
  • ça aurait été moche comme tout avec ce petit set Sony TA-88/ST-88, non ?
Sony TA-88, ST-88 (et casque Pioneer SE-L40)

Je me suis donc décidé à en monter un moi-même. Pour faire un truc comme ça, la meilleure solution, c’est un Raspberry. Les Raspberry, c’est, en gros, un ordinateur de la taille d’une carte de crédit et de la puissance d’un ordinateur de 2010. Ça fonctionne sous Linux, il y a énormément de ressources sur Internet sur le sujet et, bien que je n’irai pas jusqu’à dire que tout le monde peut s’y mettre, c’est quand même une des portes d’entrées les plus larges pour commencer à adapter du logiciel à ses besoins. 

Les courses

J’ai donc fait une liste de courses (dans laquelle j’avais déjà quelques éléments qui traînaient, mais je mets tout pour celleux qui partent de zéro) :

Mise à jour : l’alimentation 12V n’était pas une bonne idée (plus de câble, l’écran reste alimenté après extinction du Raspberry, Mieux vaut utiliser une alim 5V 3A directement. 

L’installation

J’ai choisi de tester (puis j’ai adopté) Runeaudio, une distribution Linux Raspberry qui fait exactement ce que je cherche : lecture de fichiers audio à travers un partage réseau, et « récepteur » AirPlay et DLNA. 

J’ai téléchargé la version Runeaudio 0.5 beta 20180903, qui supporte le Pi 3B+. Attention, il y a plusieurs liens de téléchargements. Bien prendre la version pour le Pi 3B+, à savoir 20180903_runeaudio_rpib2.img.gz.

Ce fichier se dézippe, puis on l’écrit tel quel sur la carte microSD à l’aide d’un logiciel spécialisé (dd sous Linux). Raspberry fournit des documentations pour le faire à partir de Linux, Windows ou OS X. Ils le disent clairement mais ça ne fait pas de mal de le répéter : faites très attention au périphérique de destination, ou vous pourriez écraser le mauvais disque.

Il faut ensuite configurer deux choses : l’écran tactile, et le DAC. Pour le DAC, c’est très facile : il n’y a rien à faire.

Pour l’écran tactile, le manuel très fin qui vient avec nous indique de modifier et/ou ajouter quelques lignes au fichier /boot/config.txt, qui se trouve à la racine de la première partition de la carte SD (d’environ 100Mo) :

max_usb_current=1
hdmi_group=2
hdmi_mode=87
hdmi_drive=1
hdmi_cvt=1024 600 60 6 0 0 0

Attention, certaines de ces lignes sont déjà là et doivent être modifiées ou décommentées. Personnellement j’ai aussi ajouté :

display_rotate=3
lcd_rotate=3

Car je voulais mettre l’écran en mode paysage. Ces paramètres pivotent l’écran, mais pas la matrice tactile, pour laquelle il faut modifier le fichier /etc/X11/xinit/xinitrc, qui se trouve dans la deuxième partition de la carte SD (d’environ 4Go), pour y ajouter la ligne :

xinput --set-prop "WaveShare WS170120" "Coordinate Transformation Matrix" 0 -1 1 1 0 0 0 0 1

Mise à jour: il n’est plus nécessaire de paramétrer la rotation de l’écran de manière statique. J’ai écrit raspi-rotate, un petit utilitaire pour lancer Xorg dans le sens qu’on veut facilement, et l’équipe Runeaudio l’a intégré (il suffit de passer en mode dev après installation). La rotation de l’écran peut maintenant se régler dans les paramètres Runeaudio.

Il reste à pré-configurer le Wifi, pour ne pas avoir à brancher de câble réseau. Cela se fait dans le fichier /etc/netctl/wlan0 (à créer, sans extension) :

Description='wlan0 connection'
Interface=wlan0
Connection=wireless
Security=wpa-configsection
IP=dhcp
WPAConfigSection=(
'ssid="
VOTRE_POINT_DACCES"'
'psk="
VOTRE_CLE_WPA"'
'key_mgmt=WPA-PSK'
'proto=WPA'
'group=TKIP'
'pairwise=TKIP'
'priority=3'
)

On peut maintenant assembler les différents éléments et démarrer le Pi !

Connexions et démarrage

La première étape sera de souder les broches du DAC, ainsi que ses prises RCA, et de souder le jack d’alimentation sur l’entrée du convertisseur 12-5V (ne pas confondre le plus et le moins surtout, utilisez un multimètre si nécessaire). J’ai utilisé des câbles pour pouvoir les faire sortir où je le voudrai sur le châssis.

Ensuite, on branche le DAC sur le port d’extension du Raspberry.

Installation du DAC

On branche un câble USB – Micro USB du convertisseur vers l’entrée du Pi.

Le câble d’alimentation

On branche le côté data (fil épais) du doubleur de puissance USB sur un port du Pi, puis le côté « power only » sur une autre sortie du convertisseur (ceci est nécessaire car l’écran consomme plus que ne peut fournir le Pi sur un port USB).

Doubleur de puissance USB

On branche un câble USB – Micro USB du doubleur vers l’entrée USB de l’écran.

Le câble USB de l’écran

On branche le câble HDMI.

Le câble HDMI

On met la carte SD, et on branche l’alimentation. L’écran n’est pas utilisé par défaut sur Runeaudio; il faut donc, une fois le Pi démarré, se connecter par un navigateur à http://runeaudio.local/ (ou http://runeaudio.lan/ ou http://runeaudio/, cela dépend des box internet. Au pire, il faudra aller récupérer son IP sur la box, puis s’y connecter directement.

De là, on peut aller activer l’écran LCD par le Menu, puis Settings : Local browser :

Choix du local browser

On peut aussi en profiter pour activer le DAC (choisir HifiBerry DAC dans la liste dans Settings, puis redémarrer le Pi) :

Choix du module noyau hifiberry-dac

(Il faut aussi régler la sortie de MPD sur le DAC après redémarrage).

Et voilà, la partie informatique/logicielle est prête. Il reste à mettre tout cela dans une belle boîte, ce qui fera l’objet d’un deuxième article.

Ensuite, j’ai attendu patiemment l’arrivée d’un tuner identique et défecteux, et quand il est arrivé, j’ai installé le Raspberry dedans : Partie deux, intégration esthétique d’un lecteur de musique réseau.

Mise à jour : après fabrication d’un deuxième lecteur, j’ai repris et upgradé la partie alimentation afin de pouvoir éteindre proprement le lecteur via le bouton power. Partie trois, un système d’extinction propre pour RuneAudio.