En attendant Godot (USB inside)

Sur le front de la Raspberry Pi Zero 2, il s'en est passé des choses ces deux derniers mois. Une mise à jour de l'OS (Operating System) par la fondation puis du rétropédalage pour un Legacy, l'attente de piCorePlayer et l'attente d'un HUB USB sur port OTG et la découverte de petits problèmes. Je crois qu'il va falloir un peu de patience !

piCorePlayer : patientez !

Pour transformer une Raspberry Pi en lecteur audio le plus simplement (et efficacement) possible on utilise piCorePlayer. C'est une distribution fantastique qui existe depuis plusieurs années, robuste, élégante et à citer en exemple. Mais c'est aussi un hobby pour les développeurs de la solution et début décembre 2021, la Orange Pi Zero 2 n'est pas utilisable sauf quelques contorsions dont on n'a pas trop envie.

Le point fort de piCorePlayer, c'est la simplicité de mise en oeuvre : si c'est pour se compliquer la vie, on va attendre ! Passons pour piCorePlayer.

Quel OS installer ?

Récemment la fondation Raspberry a proposé une nouvelle version de Linux pour ses cartounettes : Bullseye. Après deux semaines environ, et face aux complications, la fondation a fait "machine arrière". Le nouveau système est toujours proposé, mais l'ancien rebaptisé "Legacy" est désormais mis à jour (patchs de sécurité) afin de permettre à tout le parc existant de continuer à fonctionner correctement avec les mises à jour de sécurité.

Une grosse partie de la communauté des utilisateurs pense que le nouveau système Bullseye va être dédié au 64 bits et que le Legacy restera disponible pour les versions ARM32 bits.

Le nouveau système est Bullseye intéressant techniquement mais aussi est très handicapant pour le secteur de l'éducation parce que certaines choses ne fonctionnent plus comme avant ou plus du tout : ça remet en cause les tutos et des ressources éducatives construites patiemment au fil des années. Idem pour les industriels utilisant des Raspberry : ils ne doivent pas mettre à jour sous réserve que leurs installations ne fonctionnent plus !

Heureusement la fondation a proposé très rapidement la Legacy : c'est une réaction pragmatique, un peu le contraire de ce que fait Microsoft par exemple qui n'en a rien à foutre de forcer les possesseurs de PC vieux de 3 ans à les mettre à la poubelle, par ce que Zindoze 11 ne s'installe que sur des processeurs très récents (bien entendu on peut contourner leur système de validation si l'on en a envie).

Pour revenir à la Raspberry et continuer à tester quelques bricoles avec la RPI02, j'installe la version Lite Legacy avec le Raspberry Pi Imager.

La version Lite est celle qui ne propose pas d'interface graphique (pas besoin pour un simple lecteur audio) et donc économise des ressources processeur.

Et la Legacy, parce que pour l'instant je préfère des choses qui marchent que de me battre tel Don Quichotte contre les moulins à vent de la technologie.

Mon idée est de tester l'installation de JiveLite, que je n'ai pas réussi à faire fonctionner avec la Odroid Go Advance (par incompétence et perte de patience).

Vais-je y parvenir avec la RPI02 ? Qui sait, mais l'important c'est d'essayer même si à la fin c'est un échec.

Lorsque le système est installé, vous pouvez perdre 15 minutes en étant tête en l'air comme moi, ou bien ne pas les perdre. Pour ne pas perdre de temps, avant de retirer la carte du lecteur de cartes, vous pouvez effectuer les deux opérations suivantes :

  1. créer un fichier ssh dans la partition de boot pour vous autoriser à prendre la main à distance (obligatoire avec un système "headless"

  2. modifier le fichier wpa_supplicant.conf pour configurer votre connexion WIFI (obligatoire avec la RPI02).

Pour prendre la main à distance on utilise ssh pi@192.168.1.4 et le mot de passe est "raspberry".

Comme d'habitude un petit sudo apt update puis upgrade permettent de garantir que l'on a bien la dernière version du système.

Jivelite

Tant que l'on n'a pas de version de piCorePlayer, on doit installer JiveLite "à la main". Il y a des chances qu'avec le système Legacy, cela fonctionne. Voyons cela.

Jivelite d'appuie sur LuaJit qu'il faut installer et compiler pour le système. C'est donc une opération en deux parties.

On commence par LuaJit, installe les bibliothèques requises :

sudo apt-get install git libsdl1.2-dev libsdl-ttf2.0-dev libsdl-image1.2-dev libsdl-gfx1.2-dev libexpat1-dev

mkdir luajit

cd luajit

git clone http://luajit.org/git/luajit-2.0.git

cd luajit-2.0

makesudo make install

sudo ldconfig


Ensuite on installe Jivelite

cd ~

mkdir jivelite

cd jivelite

git clone https://github.com/ralph-irving/triode-jivelite.git

cd triode-jivelite

sudo make PREFIX=/usr/local

./bin/jivelite

Ca fonctionne...

Je suis assez content de constater que la vieille recette pour transformer une Raspberry Pi en lecteur avec JiveLite fonctionne. D'autant que sur la OGA (Odroid Go Advance je ne suis parvenu à rien du tout après avoir passé des heures à tenter de corriger une partie du code).

Maintenant j'attends impatiemment la nouvelle version de piCorePlayer qui représente vraiment la solution la plus rapide et la plus élégante pour transformer une Raspberry en client LMS.

USB et USB OTG

Je n'ai pas bien compris ce qu'est l'USB OTG. En plus des quatre connecteurs de l'USB + et - et D+ D-, il me semble avoir vu une cinquième papatte à relier au GND. Comme j'ai peur de ma propre sottise, pour une fois je ne fais rien avec le fer à souder.

J'ai commandé ce truc sur Amazon parce que je n'avais pas la patiente d'attendre une livraison AliExpress pour un équivalent moins cher.

D'autre part, pour mes essais, j'ai aussi soudé un câble USB sur les pastilles de la Raspberry, parce que quand on aime le fer à souder, on trouve toujours toutes les excuses possibles pour se brûler les doigts.

Et donc, pour mes essais (retenez bien cela) j'ai deux HUB USB : le premier est connecté sur le port OTG, le second sur les pastilles de la Raspberry.

Le port OTG est spécifique, le port USB "normal" est un port classique.

Lorsque les périphériques sont tous branchés sur le port USB "normal" que j'ai bricolé en soudant, tous les périphériques sont reconnus : le clavier, la souris, le SABAJ D5 (Thesycon...) et le HUB USB.

La photo ci-dessous montre les connexions USB, alim et HDMI.

Si je branche en même temps le port HUB USB OTG, alors je perds tous les périphériques (et même le SABAJ D5), je n'ai plus de clavier, plus de souris, plus rien. Et si je branche sur le HUB USB OTG, je n'ai rien de rien.

Là ça semble vouloir dire que c'est ou l'un ou l'autre. D'accord, mais qu'est ce qui se passe quand on se branche sur l'OTG (moyennant un reboot) ?

Je ne prends pas la peine de faire une copie d'écran : si vous utilisez le HUB OTG et en même temps le HUB USB normal comme sur la photo ci-dessous... Rien n'est reconnu ! Du coup, il nous reste un troisième test (le premier c'était seulement le HUB USB normal, le second c'était avec les deux HUB, le troisième c'est seulement avec le HUB OTG.

Alors quand on connecte seulement le port USB OTG, seul le SABAJ D5 est reconnu (je suppose que le SABAJ est d'accord pour être drivé par un smartphone en OTG). Par contre la souris et le clavier ne sont pas reconnu par la Raspberry.

Je ne connais pas le monde des "gadget OTG" et je ne vais pas investiguer plus que cela.

J'ai déjà quelques constatations à vous proposer (et ça ne va pas vous faire plaisir) !

Conclusions du soir sur l'USB

En soudant sur les pastilles

Il me semble que la seule solution pour tout avoir en USB (clavier, DAC, souris etc...) est de souder sur les pastilles pour avoir un vrai port USB, partageable avec un HUB.

Port USB OTG

S'il s'agit de seulement connecter un DAC, alors le port OTG est utilisable, à condition que le périphérique soit compatible. Je suppose que les appareils avec un XMOS XU208 ou XU216 sont compatibles, pour les autres, il faudra vérifier.

Port OTG + USB "normal"

C'est la configuration dans laquelle rien ne fonctionne ! Cela n'a aucune utilité.

Pour finir

En conclusion, si vous ne voulez brancher qu'un DAC sur la Raspberry, vous pouvez utiliser un HUB OTG : seule les périphériques OTG sont reconnus. Personnellement je n'ai aucune difficulté à souder : en récupérant un vieux câble on ajoute le port USB physique qui manque à la Raspberry et tout est reconnu, c'est gratuit.

Ci contre, petite photo d'écran en connectant un SABAJ D5 et un Topping D10 sur le port OTG en même temps : pas de soucis, les deux DACs sont reconnus.

La soudure sur les pastilles, comme un cochon ! Mais finalement c'est le seul moyen d'avoir tous les périphériques USB reconnus correctement.