Quel est le problème avec le Raspberry Pi



Le Raspberry Pi est un appareil incroyablement populaire connu pour son prix abordable, sa polyvalence, ses capacités et sa communauté dynamique. Il est facile de trouver des sites de fans et des articles, mais la plupart des gens ne connaissent pas ses faiblesses jusqu'à ce qu'ils en souffrent eux-mêmes et recherchent des informations sur les forums.

J'essaierai de parler de certains problèmes que j'ai personnellement rencontrés, ainsi que de certains problèmes typiques qui apparaîtront le plus souvent chez des personnes qui n'en soupçonnent rien. Et enfin, pourquoi je ne recommande pas Pi pour certaines applications, en particulier les services NAS tels que NextCloudPi et Open Media Vault. J'espère que cela me fait gagner du temps, donc je ne répète pas tout cela sur les forums.

J'ai eu beaucoup de Raspberry Pi et je les utilise depuis de nombreuses années. Lorsque le premier modèle est apparu en 2012, il est devenu une étape importante sur le marché des cartes simples. Bien que plusieurs bonnes planches existaient déjà, telles que Beagleboard et Odroid, elles étaient assez chères, et seuls les fans hardcore pouvaient les acheter et les tester.

Pi n'est pas si puissant par rapport à eux, mais en raison de son bon marché, il a littéralement fait exploser le marché. Blogs, cartes d'extension, beaucoup de projets personnels, des tonnes de bibliothèques ... Raspberry Pi a été le premier à réaliser tout cela, et à ce jour une communauté prospère est le plus grand avantage de Pi par rapport aux autres cartes.

Mais c'est maintenant 2019 et il est temps de regarder à nouveau. À mon avis, il existe des alternatives plus ouvertes de meilleure qualité au même prix. Je vais essayer d'expliquer.

Performances




Raspberry Pi a réduit le prix en coupant les coins. Par conséquent, la planche n'est pas suffisamment productive pour certaines tâches, par rapport aux concurrents. En particulier, il est mal adapté aux tâches réseau et aux fonctionnalités USB.

Voici la puce SMSC LAN9514 , qui se connecte au SoC avec un canal USB, agissant à la fois comme adaptateur USB-Ethernet et concentrateur USB. Ainsi, Ethernet et USB sont assis sur le même canal et se font concurrence, ce qui contredit l'utilisation typique du NAS, lorsque quelque chose est téléchargé sur le réseau et stocké sur une clé USB, sans parler de l'ajout de RAID ici.

Pour la même raison, même lorsqu'ils ont finalement publié un modèle compatible Gigabit Ethernet l'année dernière, les performances réelles du réseau ne se sont même jamais rapprochées du gigabit, mais atteignaient un maximum de 40 Mo / s en vitesse nette et un maximum de 20 Mo / s si Transfert vers un périphérique USB . À cette époque, il existait déjà des cartes bon marché avec de vrais Gigabit Ethernet et USB3.

En fait, le Wi-Fi ne passe pas par SMSC , mais se connecte à la puce BCM4343 via SDIO , de sorte que ce goulot d'étranglement peut être évité en utilisant le Wi-Fi. Cependant, la puce Wi-Fi n'est pas omnipotente, elle devra faire face aux interférences environnantes, ce n'est donc pas une alternative idéale.

Pour ces raisons, je ne recommanderais pas d'utiliser Pi comme NAS, que ce soit Open Media Vault ou Nextcloud.

Real Brain Pi - Source fermée




Si vous avez été impliqué dans des litiges concernant la liberté du logiciel, le principal problème de nos systèmes Linux est les blobs binaires à source fermée. Je n'entrerai pas dans les détails, mais le problème est que ces parties du système ne peuvent pas être vérifiées et qu'elles ont accès à tout ce qui se passe dans l'appareil. Cela a engendré de grands projets open source, tels que Android Replicant , conçus pour libérer nos systèmes de tout blob binaire: un processus douloureux, fastidieux et lent.

Un problème similaire se pose avec le Raspberry Pi, où le CPU et le GPU sont intégrés dans la même puce BCM2837B0 . Le processeur central est un ARM A53 quadricœur 64 bits à 1400 MHz (dans le Pi 3B), et le processeur graphique est un VideoCore IV double cœur 32 bits avec une fréquence de 400 MHz. L'intégration du CPU et du GPU est populaire dans le monde mobile car elle réduit le prix et la consommation d'énergie. Les concurrents NXP iMX et Allwinner utilisent une approche similaire.

Ainsi, dans le dernier Pi, il y a six cœurs, mais seulement quatre d'entre eux sont ARM. Linux fonctionne sur le processeur, mais cela peut vous surprendre que Linux sur cet appareil soit un citoyen de seconde classe. Les cœurs de GPU fonctionnent sous le système d'exploitation en temps réel ThreadX. Ce système d'exploitation à source fermée gère le système à l'insu du noyau Linux.

Au début du téléchargement, le processeur Raspberry Pi est complètement désactivé (techniquement dans un état de réinitialisation ) et c'est le GPU qui démarre le système. Vous pouvez jeter un œil au dossier /boot et vous trouverez des blobs binaires avec lesquels le GPU démarre le processeur et son propre système d'exploitation ThreadX ( bootcode.bin et start.elf ). En savoir plus sur le processus de téléchargement ici .

C'est le GPU qui monte la carte SD, télécharge ces blobs et lit la configuration à partir du fichier texte config.txt , que nous éditons pour ajuster les paramètres vidéo ou overclocker le GPU. Linux n'est pas impliqué ici.

Lorsque le GPU permet au CPU de charger le noyau Linux, il ne quitte pas simplement la scène, fonctionnant uniquement comme un processeur graphique . Non, le GPU est toujours le principal. Avez-vous déjà pensé à qui affiche ces logos lorsque le Pi se connecte à HDMI? Ou ces symboles de foudre ou de température sont-ils dans les icônes d'avertissement? Exactement, c'est ce que fait le système ThreadX sur le GPU, et Linux ne sait pas du tout ce qui se passe.

Nous ne connaissons peut-être pas toutes les fonctionnalités du GPU, mais nous savons quelque chose dont il est responsable. Pour cet article, il est important que ThreadX surveille la chute de tension - un problème répandu, comme nous le verrons plus tard, et réduit la fréquence du processeur pour éviter les pannes et le gel du processeur. Par conséquent, chez l'homme, les appareils fonctionnent à une fréquence de 600 MHz au lieu de 1400 MHz, au mieux. Cette limitation commence à 4,65 V et peut également être déclenchée par la température. Dans le même temps, Linux pense toujours que le système fonctionne normalement à pleine fréquence.

C'est exactement ce que nous voyons. Étant donné que le système d'exploitation principal est propriétaire, nous n'avons aucun moyen de savoir ce qu'il fait ou est capable de faire d'autre, il y a donc toujours un problème de confidentialité.

Il y a au moins un brevet inclus dans le blob de source fermée qui interdit l'ouverture de code jusqu'à au moins 2025 , mais nous ne savons pas si cela sera fait même alors. Il y a eu des tentatives de rétro-ingénierie de VideoCore IV et de créer un firmware open source pour cela. Malheureusement, le projet est décédé avant d'avoir révélé quelque chose d'utile. Comme avec les blobs Android, c'est un travail incroyablement difficile.

Problèmes de nutrition



Ce n'est pas une erreur technique du Raspberry Pi, mais plutôt une erreur utilisateur typique.

Le premier modèle utilisait à peine 80 mA, mais chaque nouvelle génération devenait de plus en plus puissante, et pour cette raison plus énergivore. De plus, de nombreux utilisateurs branchent des périphériques USB qui consomment également de l'énergie s'ils ne viennent pas avec leurs propres alimentations.

Le connecteur microUSB a été initialement conçu uniquement pour 1,8 A, et bien qu'il s'agisse d'un ancien standard, et vous pouvez trouver des chargeurs qui en donnent plus, tant de gens essaient d'utiliser de vieux chargeurs de téléphone 1 A ou d'acheter des adaptateurs bon marché sur Internet pour alimenter leur Framboise. Mais Pi est un ordinateur, et il nécessite une alimentation stable et de haute qualité qui fournit une tension stable de 5 V à l'entrée avec une intensité de courant allant jusqu'à 2,5 A. Non seulement un transformateur décent est nécessaire, mais également une connexion de haute qualité (ou une chute de tension se produira), mais plus important que vous avez besoin d'un bon câble , sinon la tension aux bornes baissera considérablement. Les mauvais câbles sont encore plus courants que les sources de tension instables, alors assurez-vous d'utiliser un bon câble: peut-être 20AWG ou similaire, ou achetez simplement une source d'alimentation officielle. La conclusion est que tous les chargeurs USB ne fonctionneront pas correctement, même si c'est 2,5A 5V.

Ajoutez cela à ce dont nous avons discuté dans la dernière section, et vous commencerez à comprendre la situation dans son ensemble. La plupart des utilisateurs travaillent sur leurs appareils avec une fréquence réduite, et le GPU leur cache cela, donc ils travaillent réellement avec une fréquence réduite de 600 MHz: presque la même chose que ARMv6 sur le tout premier Pi.

Dans de nombreux cas, les efforts du GPU sont insuffisants et le système se bloque au hasard ou se bloque simplement, ce qui peut corrompre les données ou endommager la carte SD. Cela se produit généralement sous charge , c'est-à-dire lorsque les transistors nécessitent une puissance maximale. Ensuite, l'utilisateur vient sur les forums et se plaint: mon alimentation est en ordre, j'ai couru ceci et cela, et rien n'a échoué . Bien sûr, ce n'est pas vrai, mais souvent ils n'y croient pas.

À mon avis, voici ce que les Japonais peuvent appeler Poka Yoke , c'est-à-dire que nous devons concevoir de tels systèmes qui, de par leur conception , ne permettront pas à l'utilisateur de se tirer une balle dans le pied. Encore une fois, la source d'alimentation officielle est de très bonne qualité pour son prix, et je la recommande vivement.

Je n'aime pas qu'un système propriétaire caché abaisse la fréquence hors de notre contrôle. Il serait préférable que le système se fige: alors vous pouvez immédiatement voir ce qui se passe, et une personne peut remplacer l'alimentation. À mon avis, c'est mieux que de tromper les utilisateurs et de les faire se plaindre partout sur Internet . Il est difficile d'imaginer la raison pour laquelle les développeurs Pi auraient fait cela s'ils n'avaient pas caché le problème Poka Yoke.

Vérifiez les problèmes d'alimentation




Cela a pris trop de temps, mais nous avons quand même réussi à enregistrer le problème au niveau du noyau. Si vous voyez un tel message dans les journaux système:

  kern: crit: [1701.464833 2.116656] Sous-tension détectée!  (0x00050005)
 kern: info: [1707.668180 6.203347] Tension normalisée (0x00000000 

alors vous avez une baisse de tension. C'est bien que maintenant Linux capture au moins de telles informations, mais si nous voulons en savoir plus, nous avons besoin d'un accès direct au GPU.

La commande vcgencmd peut obtenir des informations système à partir du microprogramme ThreadX.

 # vcgencmd get_config int arm_freq=1000 core_freq=500 sdram_freq=600 over_voltage=6 disable_overscan=1 force_pwm_open=1 

Vous pouvez utiliser les commandes vcgencmd measure_clock arm et vcgencmd measure_volts pour vérifier la fréquence et la tension réelles. Voici un exemple de sortie d'un script de surveillance tkaiser.

 # With a crappy PSU and/or Micro USB cable output looks like this # on a RPi 3: # # 44.0'C 600 MHz 1010000000000000000 1.2V # 44.5'C 600 MHz 1010000000000000000 1.2V # 44.0'C 600 MHz 1010000000000000101 1.2V # 44.0'C 600 MHz 1010000000000000101 1.2V # 44.0'C 600 MHz 1010000000000000101 1.2V # 44.5'C 600 MHz 1010000000000000000 1.2V # 45.1'C 600 MHz 1010000000000000101 1.2V # # With an ok-ish cable it looks like this (when running cpuburn-a53): # # 48.3'C 1200 MHz 0000000000000000000 1.3312V # 48.3'C 1200 MHz 0000000000000000000 1.3312V # 48.3'C 1200 MHz 0000000000000000000 1.3312V # 48.3'C 1200 MHz 0000000000000000000 1.3312V # 50.5'C 1200 MHz 0000000000000000000 1.3312V # 56.4'C 600 MHz 0000000000000000000 1.2V # 54.8'C 600 MHz 1010000000000000101 1.2V # 55.3'C 600 MHz 1010000000000000101 1.2V # 55.8'C 600 MHz 1010000000000000101 1.3312V # 53.7'C 600 MHz 1010000000000000101 1.2V # 51.5'C 600 MHz 1010000000000000101 1.2V # 51.0'C 600 MHz 1010000000000000101 1.2V # # And only by bypassing the crappy connector you can enjoy RPi 3 # performing as it should (please note, there's a heatsink on my RPi # -- without throttling would start and then reported clockspeed # numbers start to get funny): # # 75.2'C 1200 MHz 1010000000000000000 1.3250V # 75.8'C 1200 MHz 1010000000000000000 1.3250V # 75.8'C 1200 MHz 1010000000000000000 1.3250V # 76.3'C 1200 MHz 1010000000000000000 1.3250V # 76.3'C 1200 MHz 1010000000000000000 1.3250V # 73.6'C 1200 MHz 1010000000000000000 1.3250V # 72.0'C 1200 MHz 1010000000000000000 1.3250V # 70.4'C 1200 MHz 1010000000000000000 1.3250V # # Now with a pillow on top for some throttling: # # 82.2'C 1200/ 947 MHz 1110000000000000010 1.3250V # 82.7'C 1200/ 933 MHz 1110000000000000010 1.3250V # 82.7'C 1200/ 931 MHz 1110000000000000010 1.3250V # 82.7'C 1200/ 918 MHz 1110000000000000010 1.3250V # 82.2'C 1200/ 935 MHz 1110000000000000010 1.3250V # 79.9'C 1200/1163 MHz 1110000000000000000 1.3250V # 75.8'C 1200 MHz 1110000000000000000 1.3250V # # And here on RPi 2 with crappy USB cable and some load # # 50.8'C 900 MHz 1010000000000000000 1.3125V # 49.8'C 900 MHz 1010000000000000000 1.3125V # 49.8'C 900/ 600 MHz 1010000000000000101 1.2V # 49.8'C 900/ 600 MHz 1010000000000000101 1.2V # 48.7'C 900/ 600 MHz 1010000000000000101 1.2V # 49.2'C 900/ 600 MHz 1010000000000000101 1.2V # 48.7'C 900 MHz 1010000000000000000 1.3125V # 46.5'C 900 MHz 1010000000000000000 1.3125V # # The funny thing is that while the kernel thinks it's running # with 900 MHz (performance governor) in reality the 'firmware' # throttles down to 600 MHz but no one knows :) 


Conclusion



Je pense vraiment que le Raspberry Pi est devenu un événement très important dans l'histoire des ordinateurs à carte unique, mais il est aujourd'hui en retard en termes de qualité, de performances et d'ouverture. Il existe des alternatives abordables où les développeurs ont accordé plus d'attention à ces problèmes.

Malgré cela, j'utilise toujours le Raspberry Pi, aidant les utilisateurs à configurer leur propre hébergement cloud. Étant donné la popularité de cette carte, il est logique pour moi de la maintenir aussi longtemps qu'elle est utile aux gens.

Source: https://habr.com/ru/post/fr440584/


All Articles