One Rasp / Two players

Le contexte

Il y a les petits joueurs. Ceux qui ont une HiFace connectée à la Rasp, ou alors ceux qui ont un DAC PCM5102 connecté à la Raspberry.

Et puis il y a vous.

Vous voulez écouter avec la HiFace sur votre DAC "NOS PCM1541A Double Crown" la plupart du temps, parce qu'il déchire, mais il est limité au Red Book, au format audio CD, aux 16 bits à 44 kilos...

Et vous voulez aussi écouter sur votre DAC à 10 balles, le PCM5102 qui permet de se régaler avec des fichiers en 24 bits à 192kHz.

Tout ça sur le même Raspberry : oui ! Un seul Raspberry et deux lecteurs sur la même machine ! Alors vous, vous n'êtes pas un petit jouer, non non non, vous êtes un Pure Player !

Blague à part

Bon, les lignes qui suivent sont un peu techniques. Pour réaliser les opérations vous devez prendre la main sur votre lecteur en SSH (avec PUTTY) et si ça ne vous parle pas, vous êtes un petit joueur et ce n'est pas la peine d'aller plus loin.

Allez sur votre Raspberry avec Putty. Les paramètres de connexion sont : user = tc, pwd = piCore.

En supposant que vous avez un DAC PCM5102A connecté sur le port I2S et une HiFace sur un port USB, la commande aplay-l vous permet de voir les deux périphériques

Si vous ne voyez pas les deux périphériques, ce n'est pas la peine d'aller plus loin, quelque chose cloche. Redémarrez et configurer la HiFace par défaut.

La commande pour SqueezeLite

SqueezLite est le lecteur audio intégré à PicorePlayer. Le logiciel est lancé avec une commande au niveau système.

Pour savoir quelle commande, dans les paramètres du SqueezeLite, vers le bas de la page, vous pouvez consulter les paramètres de la commande qui permet de lancer le lecteur (et la copier dans une fichier texte pour la sauvegarder)

Quelques remarques :

  • -n signifie "nom" pour nommer le lecteur Si vous voulez lancer deux lecteurs, il faudra définir deux noms différents
  • "piCoreLala" est entre guillemets : il faudra les supprimer dans la suite des opérations !
  • -o pour "output" et ensuite les paramètres de la carte "hw:CARD=hiFace" : bien entendu on changera ce paramètre pour l'autre sortie audio !

La commande pour le second périphérique

En gros, vous devez configurer votre lecteur pour avoir le PCM5102A opérationnel. Lorsque cela fonctionne, vous pouvez récupérer la commande avec la méthode expliquée ci-dessus.

Ensuite, voici ma proposition. Ci-dessous les lignes que j'ai récupérées et modifiées :

  • /usr/local/bin/squeezelite -n piCoreLaLa -o hw:CARD=hiFace -a 80:4::1: -v
  • /usr/local/bin/squeezelite -n piCore5102a -o hw:CARD=pcm5102a -a 80:4::1 -v -m b8:27:eb:12:25:63

J'ai configuré "par défaut" le Squeezelite dans l'interface avec la HiFace. Le second lecteur sera le PCM5102. POur cela :

  • j'ai supprimé les parenthèses autour du nom du lecteur
  • je rajoute une adresse MAC (la partie -m xxxx) pour faire croire au serveur qu'il s'agit d'un autre lecteur physique

Et je teste en tapant la seconde ligne sur la ligne de commande :


Si aucun message d'erreur n'est affiché, c'est que cela fonctionne.

Vérifions que côté serveur c'est bien reconnu...

Et voilà, les deux lecteurs sont opérationnels !


Résistance au reboot ?

Bon, par contre si je coupe l'alimentation, je perds le second lecteur. Comment faire ?

Et bien je vais dans la partie Tweaks de l'interface de PicorePlayer et tout en bas de la page j'ajoute une "User Command" qui sera exécuté au lancement.

Bon, cela ne fonctionne pas. Pourquoi ? Parce que la carte PCM5102 n'est plus visible dans la liste des périphériques.

La ruse consiste à :

  • configurer pour le 5102 pour que le driver soit monté en mémoire
  • reconfigurer pour la sortie USB, piCorePlayer ne reboote pas, il se contente de relancer SqueezePlayer
  • à ce moment, ouvrir une session PUTTY et passer la ligne de commande (suivie d'un &) pour que le process soit exécuté en arrière plan, sinon lorsque l'on ferme la session SSH le process est tué et on perd le lecteur.