(modifié le 10 juin 2024 à 1:50)

Comme moi vous utilisez Ycast pour profiter des radios gratuitement sur votre ampli de salon Yamaha (et pas que). J'utilise ycast en tant que service sur mon Raspberry Pi (Debian 11).

Problème : quand mon Raspberry Pi démarre le service Ycast est bien lancé mais ne fonctionne pas si je ne relance pas le service (ycast).

✅ Voyons comment régler le problème.

La cause du problème

J'ai un peu galéré à comprendre pourquoi ce fichu service ycast démarrait sans pour autant avoir de démon en écoute. Jusqu'à ce que je me rende compte que le service démarre avant la stack réseau. Donc le script python n'arrive pas à ouvrir le port qui permettra à l'ampli de s'y connecter.

J'ai testé plusieurs pistes : la modification du fichier ycast.service pour ajouter une condition de démarrage (réseau), ça ne marchait pas. J'ai essayé d'ajouter un sleep de plusieurs secondes pour temporiser le lancement du service : pareil (et ce n'est pas propre).

Finalement je me suis tourné vers le code Python. Ne connaissant pas trop python je me suis aidé de ChatGPT et j'ai réussi à quelque chose de fonctionnel.

J'ai trouvé un fix

Pour vérifier que la connexion réseau fonctionne bien j'ai ajouté un ping vers un serveur DNS de Google (8.8.8.8).

C'est un choix discutable et je l'ai fait pour 2 raisons :

  • cette adresse répond rapidement au ping de partout (tant que Google le permet)
  • si internet ne fonctionne pas alors les webradios non plus

En bref dans mon cas ça fait le job.

Ce n'est pas l'idéal, et vous pouvez mettre l'IP interne de votre routeur/box/passerelle si c'est plus judicieux pour vous. Par exemple si vous souhaitez que ycast démarre même si vous avez une coupure de connexion internet au moment ou il se lance.

La solution

Sans plus tarder voici le fichier ➡️ ycast/server.py.

De mon côté ce fichier est stocké dans :

/usr/local/lib/python3.9/dist-packages/ycast/server.py

Ce chemin varie suivant la version de Python installée sur votre machine, à vous d'adapter.

Attention : si vous faites une mise à jour ycast à l'aide de pip3 il faudra remettre le patch car il est conçu pour la version 1.1.0 de ycast. Oui bon, je n'allais pas créer un module python forké... et l'auteur ne semble pas hyper ouvert aux PR.

Conclusion

Depuis que j'ai corrigé ce petit bug je n'ai plus été embêté par les reboots de mon RPI. Le service Ycast démarre bien 🙂

Je me suis rendu compte d'un autre souci de démarrage : le service nginx sur mon routeur Tomato. J'ai également trouvé et publié la solution dans le post original (cherchez "màj 06.2024). Mais c'est un bug propre à Tomato, si vous utilisez autre chose vous n'êtes pas concerné.

A vous la musique 🎵

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter