OPZ2 - Août 2022

Orange Pi Zero 2 : le point en Août 2022

Les articles récents publiés sur le site font le constat de la crise des composants : impossible de conseiller une Raspberry Pi, malgré le splendide écosystème, quand le produit n'est plus disponible depuis plusieurs mois. Avec la crainte que la pénurie dure encore une ou deux années.

Par contre de nombreuses entreprises chinoises ont des produits disponibles. Il y a trois ans environ on avait sorti du lot la Orange Pi Zero 2 (OPZ2) et cette carte continue à être présente sur le marché. Le tarif a doublé, passant de 18 à 36€, cependant le ratio perfs / prix est toujours favorable.

Cet article permet de faire le point sur la carte et explique, comme d'habitude, comment installer le Logitech Media Server et tout le reste, en août 2022.

La nouveauté c'est que l'on inaugure aujourd'hui asciinema, un produit gratuit et open source qui enregistre des vidéos de la ligne de commande, de quoi montrer aux débutants à quoi ça ressemble !

C'est qui la plus belle ?

Le site Bret's Tech propose un comparatif de 7 différentes cartes "SBC" (Single Board Computer) qui ont "ZERO" dans leur nom.

La carte la plus puissante est la Radxa Zero, mais elle est à 60€ environ. La seconde carte la plus puissante est la Orange Pi Zero 2.

Par contre, la OPZ2 explose toutes les autres cartes sur la partie réseau, parce que c'est la seule à disposer d'un connecteur RJ45, c'est à dire d'un connecteur pour le câble, plus rapide et fiable que le Wifi.

Cela convient à notre projet parce que le logiciel que nous allons installer ne consomme pas énormément de ressources, mais sollicite le réseau. Pour un serveur audio nous voulons la vitesse et la stabilité d'un câble. En résumé, la OPZ2 est toujours la plus belle !

En vérité la Orange Pi Zero LTS dispose d'un RJ45 aussi. La carte est à peine moins chère que la OPZ2 (genre 5€), par contre elle rame vraiment. Pour un player audio pourquoi pas, mais pas pour le serveur !

Un OS dans la soupe ?

Un Operating System, c'est la couche entre le matériel et les applications que l'on va installer. C'est le logiciel "système d'exploitation" du matériel. Pour Linux, on a le choix entre des systèmes "serveur" (CLI) ou graphique :

  • serveur indique que vous n'avez qu'une ligne de commande en mode texte (CLI, Command Line Interpreter) pour réaliser les opérations, c'est ce que nous voulons pour un serveur Logitech Media Server

  • graphique indique que vous avez un système pour l'utilisateur final avec des fenêtre, des icones et la souris pour cliquer : inutile de charger le processeur avec des fonctions que nous n'allons pas utiliser, nous voulons un serveur "headless", qui n'a pas d'écran et que nous controlons via la ligne de commande par ssh.

Quand la carte est sortie, il n'y a avait pas d'autre solution que de prendre le système proposé par Xunlong, le fabricant de la carte. Aujourd'hui plusieurs alternatives sont possibles :

  • Armbian propose plusieurs versions à base de Debian ou Ubuntu

  • Orange Pi propose son propre système.

En vérité OrangePi OS est une annonce qui date de plusieurs mois. En pratique le système n'est pas encore disponible.

Et pour Armbian, même si le système fonctionne, il est par exemple aujourd'hui impossible de faire fonctionner les GPIOs (je n'ai pas trouvé rapidement, j'ai abandonné). Armbian est excellent pour plein d'autres cartes, et incomplet pour la OPZ2.

Une fois que l'on a fait le tour, on revient sur le système initial proposé par Xunlung, fort heureusement maintenu et mis à jour.

Le sytème proposé par Xunlung pour la OPZ2 n'est pas facile à (re)trouver, c'est dans un google drive auquel on peut accéder par ce lien. Deux saveurs sont possible, la Debian ou la Ubuntu.

La Debian fonctionne correctement, allons-y pour cette version :

  • On la télécharge

  • On la dézippe

  • On "flashe" une carte SD avec Balena Etcher

  • On installe la carte dans la OPZ2, mise à feu et on attend 5 minutes (le temps que le système démarre, se connecte au réseau, fasse un expand fs, boive un café).

SSH : Secure Shell Protocol

Je suis désolé, pour le débutant c'est certainement déroutant de ne rien faire à la souris, mais voilà : on va gérer un serveur sur la ligne de commande (CLI). Le serveur n'a ni clavier, ni écran, ni souris. Il a seulement un câble réseau branché.

On va "prendre la main" sur le serveur, à distance, avec un autre PC qui a un écran, un clavier, une souris, sur le même réseau. L'outil qui permet cela se nomme SSH. Imaginez que vous êtes un hacker et que vous accédez au serveur de la NASA qui gère le "James Webb Telescop" : c'est autant rigolo.

Vous pouvez regarder la vidéo de la première connexion via SSH à la OPZ2 (sur un smartphone faites défiler horizontalement jusqu'à voir le bouton "Play").

Pour une connexion à distance, sous Linux ou Windows c'est la même chose, on utilise la commande SSH.

Dans la vidéo, depuis ma machine "ryzen7" je lance la commande

ssh root@192.168.1.120

Cela veut dire que je connecte l'utilisateur "root" à la machine qui est à l'adresse ip "192.168.1.120" sur mon réseau.

Pour connaître l'adresse IP, connectez vous sur votre box pour voir la liste des adresses attribuées.

A la connexion, je dois saisir un mot de passe (je me trompe la première fois) qui est "orangepi".

Ensuite, comme d'habitude, je mets à jour à la première connexion le système, avec les deux commandes :

apt update

apt upgrade

Vous pouvez sortir d'une connextion SSH en tapant la commande

exit

Voilà, vous avez un système tout propre et tout neuf, vous avez effectué votre première connexion SSH !

Dans SSH vous n'êtes pas obligé de tout taper :

  • la flèche vers le haut récupère la dernière commande tapée : si elle n'a pas fonctionné, vous pouvez la corriger en utilisant flèche à droite par exemple

  • l'autocomplétion existe : tapez le début d'un nom de fichier par exemple et la touche TAB permet de compléter la saisie.

Ces deux petits trucs sont super importants, sans cela il y aurait de quoi devenir fou sur la ligne de commande, essayez par vous même. Et la commande "history" vous montre tout ce que vous avez tapé depuis le début !

Installer bpytop

bpytop est un petit utilitaire qui permet d'avoir des informations sur le système : occupation processeur, mémoire, réseau, liste des processus en cours. Bpytop est un super outil de monitoring sur la ligne de commande.

Nous n'en avons pas vraiment besoin, mais son installation est un exemple typique des petites difficultés que l'on peut rencontrer en fonction de la distribution que l'on utilise : on ne sait jamais exactement ce qu'il faut faire, mais le système parfois propose la solution de lui même. Bien souvent, la résolution d'un problème correspond à la lecture de l'écran ou d'un fichier de log.

Essentiellement, on garde le sourire et on essaye jusqu'à ce que ça marche.

Donc, voici un exemple avec bpytop !

L'outil bpytop "normaaaallllement" (d'après le github) s'installe avec la commande suivante

pip install bpytop

mais pip n'est pas installé, donc on l'installe :

apt install python3-pip

Quand pip est installé, on retente une installation de bpytop :

pip install bpytop

Là on a un message d'erreur parce que pip n'arrive pas à installer bpytop...

Par contre, si je tape bpytop sur la ligne de commande, le système nous dit "non trouvé" mais nous dit que l'on peut l'installer avec la commande :

apt install bpytop

On la tape, bpytop est installé et on peu le lancer !

A la fin ça finit par marcher...

La vidéo n'est pas top-top pour montrer le résultat, c'est plus beau en vrai.

Bon, pour dire la vérité, si j'avais RTFM j'aurai su tout de suite que dans une Debian, bpytop est présent dans le repository officiel depuis la version 11 : il suffit donc de l'installer comme une autre application du repository, avec un apt install.

Enfin, entre les différentes versions Linux que je manipule, j'avoue que je m'y perds un peu. Pardon pour les premières explications imprécises !

Ci-dessus on voit :

  1. un CPU qui tourne à 1.5GHz avec 4 coeurs qui ne font pas grand chose, le tout à 50°

  2. presque 1Go de RAM dont 732Mo de disponibles

  3. un "disque" de - presque - 32Go libre à 95%

  4. le processus le plus gourmand est celui de bpytop

  5. l'adresse IP est 192.168.1.120 et on voit le débit montant et descendant.

A noter que j'ai installé zerotier, c'est un outil merveilleux mais ça dépasse le cadre de notre article.

Changez le mot de passe !

On prend le contrôle via SSH de la cartounette et le mot de passe par défaut est "orangepi" : il faut absolument le changer !

L'opération du changement de mot de passe se fait via la commande

passwd

Il est impératif de changer le mot de passe par défaut.

Définissez un mot de passe avec des chiffres, des lettres et des caractères spéciaux, s'il vous plait évitez 1234 ou le nom du chien, c'est très important pour la sécurité.

Une des failles de sécurité c'est de tester le gain du ssh sur le super utilisateur (root) : une fois que c'est acquis, la machine est aux mains de personnes mal intentionnées et vous aussi !

Par contre, notez votre mot de passe quelque part (un post-it sur l'écran ?). KeyPass est une bonne application pour noter les mots de passe. Si vous ne vous en souvenez plus, il faudra refaire une installation !

Créer un compte utilisateur

Maintenant que l'on a changé le mot de passe par défaut du compte super utilisateur, on continue dans les bonnes pratiques : on va créer un compte utilisateur normal, que l'on utilisera pour la suite des opérations.

Dans cette vidéo, on prend la main sur la OPZ2 avec ssh en utilisant le compte root qui est le compte existant par défaut :

ssh root@192.168.1.120

Ensuite on ajoute un nouvel utilisateur, par exemple renaud, avec la commande

adduser renaud

Pour lequel on tapera un mot de passe et on pourra renseigner (ou pas) le Full Name, Room Number etc... Ces champs peuvent être laissés sans saisie.

Ensuite on ajoute le compte créé au groupe des sudoers, ça permet au compte d'avoir de temps en temps des supers pouvoirs :

usermod -aG sudo renaud

La prochaine fois que l'on prend la main sur la machine, on utilisera ce compte avec la commande suivante :

ssh renaud@192.168.1.120

La génération du compte génère aussi une arborescence sur le disque, on en reparlera !

Installer Logitech Media Server

La commande suivante :

apt install logitechmediaserver

ne fonctionne pas dans la distribution installée. Il faut trouver une solution.

Du coup, on va installer "à la main" le LMS.

Le suite suivant http://downloads.slimdevices.com/ contient toutes les versions du LMS. Vous pouvez choisir une version stable ou une version "beta", en cours de développement, une "nightly" (déplacez-vous dans l'arborescence du site).

Je choisi une version 8.3 (la plus récente au moment d'écrire les lignes) à l'adresse suivante : http://downloads.slimdevices.com/nightly/?ver=8.3

Ce que nous voulons, c'est une installation pour Debian, pour un processeur de type ARM !

Avec la souris, recopiez l'adresse du lien.

Cela donnera quelque chose du genre :

http://downloads.slimdevices.com/nightly/8.3/lms/33fba65bc3acec8e5e5039a0fd0726345f33f114/logitechmediaserver_8.3.0~1661147463_arm.deb

Mais ne prenez pas ce lien, un nouveau est généré chaque nuit, vous devez récupérer le lien du jour de l'installation.

Recopiez le lien quelque part, nous en aurons besoin un peu plus tard. Ce que l'on va faire, c'est se connecter à la OPZ2 avec un compte utilisateur créé récemment, créer un dossier "sources" dans lequel on va récupérer le fichier deb (le lien ci-dessus) et lancez l'installation du LM.

Dans cette vidéo on prend la main avec le compte renaud :

ssh renaud@192.168.1.120

ensuite on crée un dossier "sources" :

mkdir sources

dans lequel on se déplace

cd sources

ensuite on récupère le fichier .deb d'installation avec la commande :

wget http://downloads.slimdevices.com/nightly/8.3/lms/33fba65bc3acec8e5e5039a0fd0726345f33f114/logitechmediaserver_8.3.0~1661147463_arm.deb

N'oubliez pas qu'il faut récupérer le lien du jour sur le site slimdevices, ne recopiez pas celui ci-dessus !

La commande wget récupère le fichier à travers internet et le copie "là ou vous vous trouvez", par exemple dans le dossier "sources".

Ensuite, dans la vidéo, la commande suivante permettant de lancer l'installation du fichier deb ne marche pas :

dpkg -i logitechmediaserver_8.3.0~1661147463_arm.deb

Cela ne fonctionne pas parce que le compte renaud n'a pas les droits :

dpkg: error: requested operation requires superuser privilege

Il faut autoriser une élévation de privilège. Pour cela il faut préfixer la commande avec "sudo"

sudo dpkg -i logitechmediaserver_8.3.0~1661147463_arm.deb

N'oubliez pas qu'avec de grands pouvoirs, arrivent de grandes responsabilités...

Malgré tous nos efforts, nous avons un nouveau message d'erreur :

dpkg: dependency problems prevent configuration of logitechmediaserver:

logitechmediaserver depends on libio-socket-ssl-perl; however:

Package libio-socket-ssl-perl is not installed.

logitechmediaserver depends on libcrypt-openssl-rsa-perl; however:

Package libcrypt-openssl-rsa-perl is not installed.

Cela vient du fait que LMS est principalement écrit en langage perl et que perl n'est pas installé.

Dans la vidéo suivante, on corrige le problème et on termine l'installation du LMS !

A nouveau on prend la main via ssh avec le compte renaud :

ssh renaud@192.168.1.120

la commande ls fait la liste des dossiers et fichiers : notre dossier sources est toujours présent, on s'y déplace :

cd sources

et ls nous confirme que le fichier deb est toujours là. Installons perl :

sudo apt install perl

Le système nous renvoie un petit message d'erreur en nous demandent de taper

apt --fix-broken install

Je m'eéxute, mais la commande doit être précédée de sudo :

sudo apt --fix-broken install

la procédure se déroule et à la fin le LMS est configuré : bravo ! Les ennuis vont commencer !

Vous pouvez vérifier que cela fonctionne en tapant dans votre navigateur "192.168.1.120:9000" :

  • c'est l'adresse ip du serveur et le numéro de port sur lequel communique le LMS

  • l'interface est clairement vieillotte, mais on installera plus tard le plugin "material skin" qui restitue une interface splendide

  • pour la suite on suppose qu'un disque dur - sur lequel se trouvent les fichiers musicaux - est connecté sur le port USB de la carte : il faut encore un peu travailler pour pouvoir l'utiliser avec le LMS

  • quand le disque sera installé, on pourra dérouler la procédure de paramètrage du LMS

Même si l'article peut sembler long, globalement on installe un système, un utilisateur et le serveur audio en moins de 20 commandes : ne vous découragez pas, vous allez y arriver !

Configurer le disque sur le port USB

Un serveur audio, qui sert des fichiers musicaux, a besoin des fichiers audio. Ils sont peut être sur un NAS, mais dans le cas en exemple ci-dessous, les fichiers sont présents sur un disque "Western Digital My Passeport" branché sur le port USB de la OPZ2. La vidéo suivante montre comment configurer le disque pour qu'il soit connu par le systèmes, on pourra ensuite l'utiliser avec le serveur musical.

Dans la vidéo, on prend la main avec une session SSH comme d'habitude. Ensuite on tape la commande :

sudo fdisk -l

pour voir la liste des disques connectés. On voit que le disque de 4To "My Passport" :

Disk /dev/sda: 4.55 TiB, 5000947302400 bytes, 9767475200 sectors ...

Disk model: My Passport

/dev/sda1 2048 9767473151 9767471104 4.5T Microsoft basic data

habite à l'adresse suivante : /dev/sda1

On va demander au système de "monter" le disque au démarrage du serveur, en éditant le crontab.

on tape la commande :

sudo crontab -e

La première fois le système demande quel éditeur utilisez : choisissez nano (1) qui est le plus facile.

Pour l'anecdote, VIM, un autre éditeur, est devenu un même tellement il est compliqué. Même sortir de VIM quand on ne sait pas comment faire est impossible !

Avec nano, ajoutez sur la dernière ligne du fichier la commande suivante :

@reboot mount /dev/sda1 /media

Puis tapez Ctrl S pour sauvegarder et Ctrl X pour quitter.

Cela signifie qu'au boot, le système va monter le disque de l'adresse /dev/sda1 dans le dossier /media.

Bon, sur la ligne de commande vous pouvez taper :

sudo reboot

pour que le système reboote avec le disque monté. Mon exemplaire de OPZ2 s'arrête mais elle n'a jamais rebooté : il faut couper l'alimentation et la remettre, un reboot manuel en quelque sorte.

Dans la vidéo suivante, on se connecte et on se déplace dans le dossier /media pour vérifier que le disque est correctement monté au démarrage du système.


Indexer les fichiers audio

Maintenant que l'on a un disque monté par le système et un serveur audio installé, il faut faire travailler LMS pour indexer la musique.

Rendez-vous dans votre navigateur et dans la barre d'adresse tapez l'adresse IP du serveur et le port 9000, par exemple :

192.168.1.120:9000

Le premier écran du LMS est affiché. Eventuellement vous pouvez créer un compte sur mysqueezebox pour ensuite saisir votre mail et le mot se passe attribué par logitech. Cela permet de conserver certains paramètres d'un serveur à un autre serveur LMS.

En bas à droite "suivant" permet de passer à l'écran suivant (ou Ignorer).


Nous avons monté le disque dans le dossier media : on peut voir les dossier du disque et nous allons indiquer que le dossier de musique est dans l'arborescence suivante :

/media/Musiques

Pour les dossier de Listes de lecture on prend le même paramètre

Voila le résumé de l'installation, on peut cliquer sur Terminer (en bas à droite).

Ensuite on est dirigé vers l'interface habituelle visible ci-dessous, sur laquelle on peut lire que le système est en cours d'indexation (des documents du dossier Musiques) :

"Nouvelle analyse de la bibliothèque multimédia en cours"


Vous vous souvenez de bpytop ? Dans la vidéo ci-contre, pendant l'indexation, on se connecte à la OPZ2 et on le lance, pour avoir une idée du stress de la machine.

On a une occupation processeur qui monte jusqu'à 25%, des entrées sorties disques et de la mémoire consommée.

On peut voir des processus perl (c'est le serveur LMS) en train de consommer des ressources.

Relancer l'indexation !

Sur la version "nightly", l'indexation ne va pas jusqu'au bout (c'est un classique du LMS). Vous devez la relancer !

Pour cela, dans l'interface web, en bas à droite cliquez sur paramètres.

Dans l'onglet Réglages de bases

Cliquez sur Analyser

Ensuite cliquez sur l'onglet Information pour voir l'indexation progresser.

Ce coup-ci l'analyse de la bibliothèque va aller jusqu'au bout des dossier (ne pas s'interrompre au 314ième).

Pour environ 1To de fichiers musicaux (en FLAC) avec un disque lent sur le port USB, la durée d'indexation est d'environ...

Et c'est fini, 18000 morceaux en 15 minutes. C'est bien, cela ne prend pas trop de temps, juste de quoi prendre un café.

En conclusion

Je me suis senti coupable lorsque j'ai lu qu'un "débutant" avait acheté une OPZ2 pour faire un serveur LMS. J'espère que les lignes ci-dessous sont compréhensibles et permettrons de l'aider, ainsi que tous ceux qui suivront les idées dispensées par ce site.

Il faut bien prendre la mesure : on installe un système Linux puis un serveur audio : je pense que pour un débutant il y aura un avant et un après, en montrant que ce n'est pas si difficile.

J'apprécie de pouvoir faire la promotion de solutions gratuites et open source. Si je peux aider à faire en sorte que les gens se prennent en main, trouvent des solutions alternatives aux solutions "clés en main" qui sont des prisons dorées ou des solutions inabouties, non pérennes, dangereuses d'un point de vue sécurité, qui ne marcheront jamais complétement (cocher les cases que vous voulez), si peux aider, alors je suis content.

Si vous débutez et que vous cherchez des idées, il y en a plein dans le Raspberry Pi Magazine et les bouquins édités par la fondation.

Si vous avez réussi à lire jusqu'ici, je vous félicite et je vous remercie.

La suite :