Termux Squeezelite

Un smartphone comme platine Squeezelite

Août 2022. Période difficile, il n'y a plus de Raspberry sur le marché, c'est la crise des composants. C'est très bien, il faut être inventif et appliquer les principes de la désobéissance technologique : détourner le matériel pour en faire ce que l'on veut !

Aujourd'hui, je vous propose de transformer gratuitement votre vieux smartphone - ou une vieille tablette - en lecteur squeezelite : en faire une platine audio qui se connecte au serveur audio "Logitech Media Serveur" (LMS).

On notera deux points :

  • le smartphone va utiliser un DAC externe (on a sous la main un Gustard X16) pour en faire un "drive" de haut niveau

  • comme le smartphone dispose d'un écran tactile, c'est aussi une interface très confortable : on choisi la musique avec les doigts !

  • Le smartphone continue à fonctionner comme avant, c'est seulement de l'installation de logiciel

Plateforme Technique

Les opérations à effectuer reposent sur les points suivants :

  • installer Termux

  • installer squeezelite dans Termux

  • connecter squeezelite au serveur LMS

Il existe déjà un player pour LMS sur Android (il existe déjà un logiciel) mais il est payant et nous sommes disposés à passer des heures à la recherche d'une solution alternative et Open Source !

L'astuce présentée ici repose sur Termux, c'est à dire installer un Linux dans le smartphone pour installer squeezelite, afin que le smartphone devienne une platine audio. Cette platine audio va utiliser le port USB du smarphone pour se connecter au DAC externe avec la garantie d'une qualité sonore exceptionnelle.

Qu'est ce que Termux ?

Termux est un environnement Linux sur Android. C'est Linux dans votre smartphone, sans rooter le smartphone. Je caricature et simplifie à outrance pour être compréhensible.

Termux est une solution élégante pour les "hackers éthiques". Termux est souvent utilisé pour du "pentesting" (test de pénétration de réseau), par exemple casser un mot de passe d'un routeur wifi.

Je fais ici une mise en garde solennelle : ne jouez pas avec les outils sans avoir conscience que les peines encourues sont terribles. Si vous êtes pris à hacker le réseau Wifi du voisin, c'est deux ans de prison et 30000€ d'amende, avec potentiellement 3 ans et 45000€ d'amende si vous supprimez des données ou modifiez le système cible.

Considérez que Termux est un outil qui permet de tester la sécurité des systèmes et de corriger les failles détectées, pas un outil pour "s'amuser" sur le réseau Wifi du MacDonald's au bout de la rue. Ne vous laissez pas attirer par le côté obscur de la Force.

Mise en garde réalisée, passons à la suite : vous avez besoin d'un smartphone avec une version d'Android récente, mais pas trop récente. En effet Android 12 "tue" les processus qui consomment "trop de ressources pendant trop longtemps" : pour l'instant Termux est susceptible de dysfonctionnements sur Android 12, en août 2022. Néanmoins j'ai effectué l'installation sur une machine Android 12 et cela fonctionne correctement.

Installer Termux

Vous pouvez installer Termux

  • via le playstore : c'est une vieille version qui est disponible

  • via FDroid qui est un repo alternatif au Play Store : installez FDroid qui permet ensuite d'installer Termux

  • via Github

Installer depuis Github est l'assurance d'avoir la dernière version !

Installation via github

Depuis le lien suivant on peut télécharger une apk.

Mon vieux Xiaomi Note 7 est un processeur ARM et donc je récupère la version armeabi.

Il se peut que sur votre téléphone vous deviez autoriser les sources non vérifiées ou quelque chose comme ça.

Premiers pas avec Termux

Il faut mettre à jour le système, configurer ssh, obtenir les renseignements pour savoir comment on s'appelle et à quelle adresse IP on habite, parce qu'ensuite on prendra la main depuis un PC pour une question de confort.

Comme d'habitude, on commence par faire un update upgrade pour être certain de bénéficier de la version la plus à jour :

apt update && apt upgrade

Sur la copie d'écran ci-contre vous remarquerez que Termux arrive avec un complément de clavier plutôt efficace. Flêche haut permet de répéter la dernière commande, comme sur un vrai clavier, le signe en dessous de ESC est "TAB" pour l'auto-complétion etc...

Ensuite, pour se faciliter la vie, on va installer de quoi prendre la main sur le téléphone via SSH. Ce n'est pas obligatoire mais ce sera plus confortable pour taper les lignes de commandes, depuis un vrai clavier !


Pour cela il faut installer openssh :

pkg install openssh

Une fois que cela est fait, il faut définir un password :

passwd

Ensuite il faut savoir quel est le nom du compte Termux à utiliser pour prendre la main à distance

whoami

Puis on démarre le service sur le smartphone

sshd

Si l'on ne connaît pas l'adresse IP du smartphone, on eut l'obtenir depuis la ligne de commande :

ifconfig

Et pour finir, pour pouvoir prendre la main sur le smartphone, il faudra taper (sous Linux ou zindoze) la commande suivante :

ssh <username>@<ip> -p 8022

et dans mon cas ce sera :


ssh u0_a0@192.168.1.100 -p8022

permet donc d'obtenir la ligne de commande sur le Linux que l'on vient d'installer dans le téléphone...

Je le répète, l'installation du serveur ssh et la prise en main à distance n'est pas obligatoire, c'est juste une question de confort pour taper les commandes depuis le clavier d'un PC plutôt que le clavier du smartphone !


Installer Squeezelite

Pour installer squeezelite :

apt install squeezelite

Et voilà ! C'est fait, c'est aussi simple que cela.

pour lancer squeezelite, il y a les paramètres habituels tels que le serveur (-s) et le nom du lecteur (-n) ... La sortie audio est celle par défaut (je n'ai pas encore bien compris comment elle fonctionne, mais ça fonctionne) :

squeezelite -s 192.168.1.120 -n XiaomiNote7

bon, si vous avez pris la main via une session SSH, quand vous fermez la session, la lecture va s'arrêter. Pour continuer à lire, il faut lancer la commande en envoyant en tâche de fond le lecteur : ajouter & à la fin de la commande, comme ceci :

squeezelite -s 192.168.1.120 -n XiaomiNote7 &

Quand on a souffert sur la ligne de commande, on mérite ensuite d'utiliser le navigateur du smartphone pour sélectionner la musique à écouter.

Pour cela il faut :

  • utiliser le navigateur du smartphone

  • en indiquant l'adresse IP + le port du LMS + /material, par exemple :

192.168.1.120:9000/material

N'oubliez pas que pour bénéficier de la superbe interface "Material" il faut installer le plugin Material Skin dans le LMS !

Voilà, en quelque sorte on a terminé : on a installé Linux sur le smartphone, installé squeezelite, on l'a lancé et maintenant on a une commande tactile, tout ça sur un vieux smartphone.

Quelques informations complémentaires

  • squeezelite fonctionne sur le haut parleur du téléphone ou aussi sur un DAC branché sur le port USB, comme c'est la sortie par défaut, on peut brancher ou débrancher un DAC, ça passe du HP du téléphone au DAC sans que squeezelite s'arrête

  • pour l'instant, pas de dysfonctionnement constaté sur Android 12 (squeezelite ne doit pas consommer assez de ressources pour que le système tue Termux)

  • en installant sur deux smartphones, le LMS ne voit qu'un seul smartphone : jc'est parce que Termux présente la même adresse MAC. En utilisant le paramètre -m au lancement de squeezelite on peut indiquer une adresse mac quelconque, par exemple

    • squeezelite -s 192.168.1.120 -n Note11 -m ab:12:34:56:78:99

  • heuu... Je n'ai pas encore trouvé comment éviter que tout soit transcodé en 48kHz, sauf à forcer un max frequency en 44, bha, pfff, désolé

  • ce n'est pas possible d'installer LMS sur le smartphone (jusqu'à preuve du contraire) parce qu'il y a trop de dépendances et que Termux n'est pas un Linux complet (en gros)... En plus, qui voudrait faire ça ?

Pour brancher le smartphone au DAC j'ai utilisé une adaptateur USB qui ressemble à celui de gauche, mais ce doit être possible d'avoir un adaptateur plus discret, tel que celui de droite sur le photo ci-contre.

On peut aussi utiliser le codec LDAC de Sony pour une connexion BT de bonne qualité.

En conclusion

Cet article représente une sorte d'alignement des planètes :

  • on me demande régulièrement comment faire une player LMS avec une interface tactile... Mais il n'y a plus de Raspberry sur le marché ! Alors maintenant je peux proposer une solution qui recycle un vieux smartphone ou une tablette pour faire "player" audio avec interface tactile. Et en plus c'est gratuit !

  • je peux lire mes fichiers de musique exposés par le LMS avec mon smartphone sans payer d'application avec une solution totalement Open Source. C'est une envie de plus de 10 années pour ma part

  • il y a des "players audio" avec interface "moisie" dans les 3000€ : ils sont moins bons aux mesures que le Gustard X16 ou un Sabaj A20d, ne seront jamais mis à jour par le constructeur. Au mieux le constructeur aura pioché dans la sous-traitance pour coder une IHM qui ne sera jamais mise à jour non plus : maintenant on a les moyens de proposer une solution simple (20 minutes ?) pour faire mieux gratuitement, hors le coût d'un DAC.

Je vous présente TermRice : c'est Maurice dans un Termux.

Merci Yoshi.