C'est l'ami Diorisis durant nos échanges qui a évoqué un radiateur aluminum pour la Orange Pi Zero 2. La carte de Xunlong a toujours chauffé un peu plus celles de la fondation Raspberry. D'un autre côté ce n'est pas le même processeur, Raspberry colle du Broadcom, la Orange Pi Zero 2 utilise un AllWinner. Ceci dit l'évocation d'un radiateur passif en aluminum a aigusé ma curiosité.
Dans les lignes suivantes on va installer un radiateur sur une Orange Pi Zero 2, puis sur une Raspberry Pi Zero 2 en train de brûler !
En allant sur Ali Express on trouve donc pour la carte Orange Pi un ensemble composé de deux plaques d'aluminium, de pads thermiques et de la vissaille qui va avec.
L'aluminium n'est pas le meilleur des matériaux en terme de conductivité thermique et par exemple en watt par mètre-kelvin, le cuivre est à 390 quand l'aluminium est à 237. Mais pour cinq euros on ne va pas faire le difficile. Cela va permettre à la carte de moins chauffer... Peut-être !
Et puis, comme on a des Rapsberry Pi Zero 2 W légèrement overclockées (de 1GHz à 1.3GHz) on va commander aussi pour une RPi Zero 2 W. La petite carte embarque un processeur et la mémoire vive dans le même composant dans une sorte de sandwich et les performances sont raisonnables et confortables. La Raspberry Pi Zero 2 W est un superbe outil pour fabriquer un lecteur audio, par exemple en installant squeezelite, le client du serveur LMS (Logitech Media Server). Mais ces derniers temps on a beaucoup joué avec Docker et Portainer, et on a failli brûler la RPi Zero 2 !
Sur la Orange Pi Zero 2 se trouve Docker et une dizaine de containers pour la transformer en NAS, serveur audio, serveur de néopixels, les vidéos de Tatie Danielle sont gérées avec Transmission et Filezilla etc... On a aussi installé la stack de monitoring de la carte. En regardant le graphe de température sur 10 jours, voila ce que l'on constate, avec une installation à J-3 du radiateur.
On ne voit pas vraiment de changement...
Si l'on zoome sur les 5 derniers jours, on a peut être une température moyenne qui tombe de 48° à 46.5° : pas de quoi allumer un feu de la Saint Jean pour pour fêter l'événement !
Ha, mais, est-ce que je me suis fait escroquer de cinq Euros ?
Comme on a commandé pour une Orange Pi et aussi pour une RPi Zero 2, direction la table de nuit : une carte nous attend, celle qui sert de player audio dans la chambre. La carte est posée à nu à coté du SMSL.
D'expérience, la Raspberry chauffe moins que la Orange Pi (mais elle est moins puissante), du moins c'est ce que l'on croit savoir.
La carte est overclokée à 1.3GHz depuis le début. Elle utilise la vieille version Debian Buster 32 bits.
La carte accueille Docker + l'agent Portainer et squeezelite est présent en tant que container (LMS_SMSL_C200).
En plus on a un "serveur" de néopixel qui permet de jouer avec un néopixel ring et c'est tout, rien d'autre n'est installé.
Le problème, c'est que ci-contre (informations de bpytop) on voit une température de 73° ! Et encore, la première fois c'était 80°, j'ai relancé le système pour prendre une photo de la température ahurissante.
Que ce soit 80° ou 70°, ce n'est pas bon du tout.
Alors au mépris de la température élevée de la carte, on installe sous tension et avec une Raspberry en train de fondre, le petit radiateur passif en aluminium.
Et voilà : la copie d'écran montre 48° mais c'est plus 46° au bout d'une minute que l'on obtient, et la première fois on partait de 80°.
Mais quand même, en regardant l'occupation de deux cores à 100%, on peut se dire que quelque chose fonctionne de travers, ce n'est pas ce qui est attendu : squeezelite fonctionnait même sur les premières Raspberry avec un seul cœur à 600MHz, pourquoi deux cores à 1.3GHz sont à 100% ?
Ce que je constate, c'est qu'en tant que container, la version de Squeezelite récupérée sur le hub docker - giof71/squeezelite - est anormalement gourmande en processeur. Quelles que soient les conditions, FLAC 16/44 ou suréchantillonné 32/768 ! Dans tous les cas l'utilisation processeur est délirante. Pour tester, dans Portainer je tente de limiter le container à une utilisation de "1 CPU" - en fait un seul coeur - pour me faire une idée. Cela ne fonctionne pas : en dessous de deux coeurs attribués, la lecture correcte est impossible, on est accablés de plusieurs clicks numériques par seconde. Avec deux coeurs, à 100% d'utilisation, ça chauffe : ci-dessous, pour les besoins de la photo d'écran, on passe tout de suite à une température que l'on ne souhaite pas voir :
Petit test : en posant le radiateur passif sur la carte le résultat est immédiat, on passe de 76° à 51°...
Le problème c'est qu'au bout de quelques minutes le radiateur est chaud et la température remonte puis se stabilise :
C'est tout de même mieux que sans radiateur. On peut considérer le radiateur passif comme un réservoir : quand il est froid, le CPU va échanger ses calories avec le radiateur très rapidement, mais une fois chaud, c'est le radiateur qui échange avec le fluide, en l'occurrence l'air ambiant et du coup c'est moins spectaculaire.
Pour obtenir une température plus faible, il faudrait un ventilateur pour refroidir le radiateur, ce qui est totalement incompatible avec l'écoute de la musique : le bruit généré par les petits ventilateurs, hauts dans les tours, est pire que celui du moustique qui empêche de dormir.
Ceci dit, 2 cœurs à 100% pour le logiciel de lecture du stream audio envoyé par le serveur, cela indique que quelque chose ne va pas du tout !
Comparons avec une autre Raspberry Pi Zero 2 qui ne chauffe pas et qui fait tourner plus d'applications. Que nous dit neofetch ?
A gauche, la version qui rame et qui chauffe. A droite la version qui fonctionne parfaitement. La version de droite dispose de la dernière version du système en 64 bits.
Sur la version avec le système en 64 bits, la température de la RPi Zero 2 est raisonnable, largement moins de 60°, sans ventilateur s'il vous plaît !
Et l'utilisation du CPU est aussi très raisonnable. Des pics à 15% mais moins de 10% en moyenne !
Pourtant cette machine est utilisée au quotidien comme lecteur audio et la stack de monitoring tourne en tache de fond.
Alors a priori, la version 64 bits n'a aucun intérêt avec 512Mo de mémoire. Pourtant la seconde RPi Zero 2 tourne avec l'OS en 64 bits. Les tests de Jeff Geerling montrent que sur la RPi Zero 2 le 64 bits est plus rapide que le 32 bits. Et si l'on overclocke la carte à 1.3GHz, sur un benchmark tel que phpbench, on a environ 50% de puissance en plus !
Dans tous les cas, la chauffe avec buster en 32 bits est incompatible avec la fiabilité dans le temps. Si squeezelite chausse du 64, alors on va installer un système tout neuf bullseye en 64 bits, et refaire l'installation docker, portainer et squeezelite.
Et dire que sans la mesure de l'impact du ventilateur...
Allez, comme d'habitude j'installe deux fois : la première fois j'oublie d'appuyer sur le boutons pour indiquer le Wifi, le user et le password.
Le logiciel Raspberry Pi Imager permet de "flasher" la carte SD. Il est très simple d'utilisation et simplifie beaucoup les choses pour le débutant. Pour celui qui a plus l'habitude, il suffit de penser à ce que l'on fait plutôt que de se presser pour aller boire un café. Allez hop, sudo apt update, upgrade,apt install neofetch, bpytop, wavemon ... Et la muraille numérique de Chine qui ralentit tout !
Voilà, c'est fait, on a un container qui se nomme C200 parce que le DAC utilisé est un SMSL C200.
Ca doit bien faire 30 minutes qu'il a démarré et j'écoute un FLAC 24/48.
Que nous dit bpytop pour la température et l'occupation processeur ?
Bon, la température avec le radiateur est inférieure à 50° (oscille entre 46 et 47°), le process de lecteur consomme moins de 1% du CPU et en gros tous les cœurs somnolent. En enlevant le radiateur, la température monte à 52° : le radiateur sur la RPi Zero 2 offre une différence de température plus importante que sur la Orange Pi Zero 2.
Je n'ai pas l'explication du fait que Squeezelite ne fonctionnait pas dans mon installation 32 bits, je constate simplement que cela fonctionne avec le système en 64 bits.
Comme le montre Jeff Geerling dans son article il est possible de désactiver des cores pour réduire la consommation électrique. En lecture audio, quand la Raspberry utilise seulement 10 % du processeur, est-ce que l’on ne peut pas procéder à la désactivation des cores ? Parce que ce que l’on souhaite c’est juste un player audio qui ne consomme pas beaucoup et qui ne chauffe pas.
Est-ce que la désactivation des coeurs :
à un impact sur la température ?
permet à la lecture de s'effectuer ?
Pour supprimer des coeurs, on modifie le fichier /boot/cmdline.txt :
après console=tty1 on ajoute maxcpus=2 et on reboote.
Après le reboot, la commande lscpu nous indique que seulement 2 coeurs sont actifs.
La température est de 54° et finalement ce qui prend le plus de ressources, c'est bpytop, script en python, qui nous informe de l'état de la carte.
Squeezelite prend très peu de ressources et fonctionne correctement, mais on ne gagne rien en température à réduire le nombre de coeurs.
Et si on underclockait ?
Dans le fichier /boot/config.txt on peut enlever le commentaire devant arm_freq=800.
On va rebooter avec deux coeurs à 800MHz max.
Même température mais la fréquence maximum a été réduite à 800MHz.
Bon, on va faire un test de l'ultime. Un seul coeur et 200MHz, quand on teste, on teste, sinon autant ne pas tester !
Nous voilà avec un seul coeur et... le paramètre arm_freq n'est pas vraiment pris en compte. Le coeur actif reste à 600MHz, la gestion dynamique de fréquence considère qu'il y a trop de charge sur le seul coeur actif pour descendre plus bas la fréquence.
En réactivant les 4 coeurs, on voit parfois la fréquence descendre à 500 ou 400MHz.
En réalité, comme bpytop consomme beaucoup de ressources, c'est cette application que l'on mesure. On va utiliser d'autres moyens.
La commande vcgencmd measure_clock arm nous informe de la fréquence du processeur pendant la lecture audio. La fréqunce correspond à celle indiquée dans le fichier /boot/config.txt
Et la commande vcgencmd measure_temp nous donne 44.5° avec le radiateur.
Avec seulement deux coeurs, on obtient aussi une fréquence de 400MHz et la température est identique à l'usage de 4 coeurs, 44.5° avec le radiateur.
Hélas, je n'ai pas encore reçus l'équipement pour mesurer la consommation, il faut attendre encore quelques jours.
J'ai acheté seulement le radiateur passif pour la Raspberry Pi parce que j'ai soudé directement sur les pads de tests un câble USB pour la connection avec le DAC. Je ne voulais pas une plaque en dessous qui serait venue coincer quelque chose.
Par contre, j'ai imprimé un support circulaire pour que "ça fasse propre" avec du PLA blanc sur une Ender 3 Neo Max qui n'est pas chère et qui est très sympa.
Il y a un peu de dégagement dessous et la carte "respire".
Je n'ai pas dessiné le support parce que j'ai utilisé le projet SBC_CASE_Builder sut github.
Ce projet est présenté dans la vidéo de Nova Spirit.
C'est une sorte de plugin pour OpenScad et il y a des dizaines de cartes disponibles avec des dizaines de paramètres que l'on peut modifier (ou pas si l'on veut rester simple).
J'ai sélectionné un modèle rond pour la RPi Zero 2 et je n'ai pas imprimé le top, je n'ai imprimé que le bottom.
Bien entendu il y a aussi la Orange Pi Zero avec même des modèles pour support d'écran 5 ou 7".
Je suis épaté par la liste des cartes disponibles et tous les paramètres possibles : c'est un outil formidable pour imprimer les boites de nos cartounettes.
Sur ma machine cela fonctionne sous Linux et sur la machine de Catherine, c'est sous Windows (beurk).
Allez-y, testez, ça vaut vraiment le coup !
Wha, quel "voyage" avec comme ticket un simple radiateur à 5€ !
Pendant que je faisais des essais en modifiant la vitesse et le nombre de coeurs de la Raspberry Pi Zero 2 avec et sans le radiateur, une chose m'a complétement échappé. Finalement, on a un radiateur passif qui transfère la chaleur générée par le processeur vers de l'air : c'est de la "thermodynamique du processeur", c'est comme cela qu'il faut l'apréhender ! Cette thermodynamique de l'échangeur est décrite ici ! J'ai aussi trouvé de l'information intéressante à lire ici.
Je remercie Diorisis qui a indiqué les petits radiateurs aluminum. Si je n'avais pas travaillé sur cette RPi Zero 2 pour y coller un dissipateur thermique, je ne me serais pas aperçu qu'elle était "en train de brûler" à 80° (la température max est de 85°). Je m'en veux un peu, c'est la seule carte sur laquelle je n'avais pas installé de monitoring avec la stack prévue à cet effet dans pi-hosted, sur toutes les autres cartes dont je dispose, je l'aurais vu tout de suite.
En manipulant la carte j'ai été surpris de voir qu'en downclockant et en supprimant des coeurs, on avait encore un "player" audio containerisé toujours opérationnel. J'ai hâte de pouvoir effectuer des mesures de consommation.
En ce qui concerne le radiateur, que ce soit sur une Raspberry ou une Orange Pi, je m'autorise à le conseiller. Si la carte n'a pas de charge, alors on a l'impression que ça ne sert à rien. Mais de temps en temps le processeur a de la charge, et pour 5€ environ on gagne quelques degrés qui vont dans le sens de la fiabilité.