URL: https://linuxfr.org/news/ordinateur-a-carte-unique-raspberry-pi-4-et-consort Title: Ordinateur Ă  carte unique : Raspberry Pi 4 et consort Authors: freejeff Ysabeau đŸ§¶, palm123, Nicolas Boulay, Davy Defaud, BenoĂźt Sibaud, Anonyme, Claude SIMON, Arkem, BAud, Pierre Jarillon, Nils Ratusznik, ZeroHeure, j, zurvan, esdeem, alpha_one_x86, Tonton Th et Gawan Date: 2019ćčŽ06月27æ—„T11:59:39+02:00 License: CC By-SA Tags: raspberry_pi, architecture, embarquĂ©, libreoffice, ubuntu, mpv et libretro Score: 80 À l’occasion de la sortie du Raspberry Pi 4, un ordinateur Ă  carte unique (_Single Board Computer_ — SBC), il nous a semblĂ© important de faire un point sur les cartes Raspberry qui se sont dĂ©mocratisĂ©es Ă  partir de 2010, et qui ont aujourd’hui des capacitĂ©s suffisantes pour traiter l’ensemble des tĂąches courantes d’un ordinateur de bureau. ![Raspberry Pi 4](https://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Raspberry_Pi_4_Model_B_-_Side.jpg/320px-Raspberry_Pi_4_Model_B_-_Side.jpg) Les cartes fonctionnant directement Ă  partir de bibliothĂšques C/C++ de type [Arduino](https://fr.wikipedia.org/wiki/Arduino), ou celles fonctionnant via un interprĂ©teur dans un langage particulier ([MicroPython](https://fr.wikipedia.org/wiki/MicroPython)), ne seront pas traitĂ©es en profondeur dans cette dĂ©pĂȘche. ---- [Description des entrĂ©es‐sorties du Raspberry Pi](https://www.raspberrypi.org/documentation/usage/gpio/README.md) [Radiateurs‐boĂźtiers pour Raspberry ](http://www.raspberrypiwiki.com/index.php/Armor_Case) [Les broches du connecteur GPIO](https://fr.pinout.xyz/pinout/wiringpi) ---- Commençons par prĂ©senter la petite nouvelle qui s’est longuement faite attendre. WikipĂ©dia dĂ©finit la Raspberry Pi comme Ă©tant un [nano‐ordinateur](https://fr.wikipedia.org/wiki/Nano-ordinateur) Ă  [architecture ARM](https://fr.wikipedia.org/wiki/Architecture_ARM) conçu par des professeurs du dĂ©partement informatique de l’[[universitĂ© de Cambridge]] dans le cadre de la [fondation Raspberry Pi](http://www.raspberrypi.org/). Elle est de la taille d’une carte de crĂ©dit, et est destinĂ©e initialement Ă  encourager l’apprentissage de la programmation informatique. Elle permet l’exĂ©cution de plusieurs variantes du [systĂšme d’exploitation](https://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27exploitation) libre [[GNU]]/[[Linux]], notamment [[Debian]], et des logiciels compatibles. Les amĂ©liorations amenĂ©es par le nouvel opus de la Raspberry sont nombreuses, elles sont donc synthĂ©tisĂ©es dans le tableau 1. | Composants | Raspberry Pi 3 B+ | Raspberry Pi 4 | |:---------------------:|:-------------------------------:|:-------------------------------:| | SystĂšme monopuce (SoC)| Broadcom BCM2837B0 | Broadcom BCM2711 | | Type de cƓurs | Cortex-A53 (ARMv8) 64 bits | Cortex-A72 (ARMv8) 64 bits | | Type de mĂ©moire | DDR2 | DDR4 | | Nombre de cƓurs | 4 | 4 | | Processeur graphique | VideoCore IV | VideoCore VI | | FrĂ©quence processeur | 1,4 GHz | 1,5 GHz | | MĂ©moire vive | 1 Gio | 1 Gio, 2 Gio ou 4 Gio | | Ports USB | 4 ×ば぀ USB 2.0 | 2 ×ば぀ USB 3.0 + 2 ×ば぀ USB 2.0 | | Ethernet | Gigabit sur USB 2.0 | Gigabit sur PCIe | | Port HDMI | 1 ×ば぀ HDMI | 2 ×ば぀ microHDMI | | Sortie son analogique | jack 3,5 mm | jack 3,5 mm | | GPIO | 26 max | 26 max | | PWM | 4 | 4 ? | | I2C | 1 | 4 | | SPI | 2 | 4 | | UART | 1 | 4 | | LCD Panel | ✓ | ✓ | | CamĂ©ra CSI | ✓ | ✓ | | Wi‐Fi | 2,4 GHz et 5 GHz 802.11b/g/n/ac | 2,4 GHz et 5 GHz 802.11b/g/n/ac | | BluetoothÂź | 4.2, BLE | 5.0 | | Stockage | microSD | microSD | _**Tableau 1** : comparatif des Raspberry Pi 3 B+ et 4_ Bien que les pĂ©riphĂ©riques de cette carte, prĂ©sentĂ©s sur le **tableau 1**, permettent dĂ©jĂ  un nombre d’usages trĂšs important, l’intĂ©rĂȘt majeur de ce type de cartes par rapport Ă  un PC est l’accĂšs au [[GPIO]]. Cet accĂšs privilĂ©giĂ© Ă  des bus tels qu’[I2C](https://fr.wikipedia.org/wiki/I2C), [SPI](https://fr.wikipedia.org/wiki/Serial_Peripheral_Interface) ou [UART](https://fr.wikipedia.org/wiki/UART), permet l’utilisation de tout matĂ©riel Ă©lectronique ; nous avons donc vu fleurir depuis 2014 un nombre important de cartes d’extensions de fonctionnalitĂ©s dĂ©nommĂ©es [HAT](https://www.raspberrypi.org/blog/introducing-raspberry-pi-hats/) (_**H**ardware **A**ttached on **T**op_). Nous proposons donc de faire un point sur les diffĂ©rents types d’usages. Pour chaque usage, nous Ă©voquerons des alternatives existantes, avec leurs avantages et leurs limites. # Usage pĂ©dagogique # La carte Raspberry Pi se distingue de ses concurrentes, car elle a, dĂšs le dĂ©but, pris le parti de se positionner comme une carte dĂ©diĂ©e Ă  l’éducation de masse Ă  l’informatique, l’électronique et la robotique. Ce positionnement a conduit Ă  mettre en place une [certification](https://www.raspberrypi.org/training/picademy/) afin que des enseignants ou des passionnĂ©s puissent avoir une reconnaissance de la fondation sur leur compĂ©tence Ă  transmettre le savoir technique autour de ces plates‐formes. Des entreprises telles que [Pi-Top](https://www.pi-top.com/) ont conçu des unitĂ©s pĂ©dagogiques comme un [ordinateur portable permettant l’accĂšs aux GPIO](https://accounts.pi-top.com/products/pi-top/), ou derniĂšrement une [plate‐forme modulable orientĂ©e robotique pour la version 4](https://www.pi-top.com/products/pi-top-4). # Bureautique et Web # Bien que l’on puisse considĂ©rer qu’il est possible de faire de la bureautique avec les prĂ©cĂ©dentes gĂ©nĂ©rations de la Raspberry Pi, le fait de ne pouvoir utiliser qu’un seul Ă©cran Ă©tait une vraie limitation. De plus, la navigation Internet pouvait assez rapidement s’avĂ©rer poussive Ă  cause du manque de mĂ©moire vive. Lancer plusieurs applications en simultanĂ© pouvait aussi ĂȘtre compliquĂ©. De maniĂšre gĂ©nĂ©rale, l’ensemble de ces limitations est levĂ© avec cette nouvelle version. L’ajout de mĂ©moire vive (jusqu’à 4 Gio), ainsi que la possibilitĂ© de brancher deux Ă©crans via les deux ports mini‐HDMI, font de cette plate‐forme un outil tout Ă  fait adaptĂ© Ă  un usage de bureautique classique, courriel, LibreOffice, navigateur Internet. On peut noter que dans cette gamme de prix, il existe les cartes [ROCK64pro](https://www.pine64.org/rockpro64/) et [Odroid](https://www.hardkernel.com/), qui permettent d’avoir accĂšs Ă  une trĂšs large palette de [systĂšmes d’exploitation](https://wiki.pine64.org/index.php/ROCKPro64_Software_Release#Armbian_Ubuntu_18.04_Bionic_Desktop_.5BmicroSD_.2F_eMMC_Boot.5D_.5B5.90.5D), ce qui en fait un choix trĂšs intĂ©ressant pour la bureautique. Il est cependant important de noter que la plupart des utilisateurs de bureautique aimeront avoir une solution plus finalisĂ©e, avec un boitier. Il existe donc un nombre trĂšs important de boĂźtiers pour les Raspberry Pi [1, 2 et 3](https://thepihut.com/collections/raspberry-pi-cases/Raspberry-Pi-3-Model-B), et on en trouve de plus en plus pour la 4 ([The Pi Hut](https://thepihut.com/collections/raspberry-pi-cases/Raspberry-Pi-4-Model-B)). Il ne fait pas de doute que des initiatives viendront crĂ©er de nouveaux boĂźtiers permettant de tirer pleinement parti des possibilitĂ©s de cette carte. Le choix du boĂźtier doit ĂȘtre fait en tenant compte de la dissipation de chaleur qui, sans ĂȘtre globalement importante, est concentrĂ©e sur quelques circuits. Le taux de panne des Raspberry fonctionnant dans une ambiance chaude n’est pas nĂ©gligeable. C’est pour cela que l’on trouve actuellement des solutions allant de petits radiateurs Ă  coller sur les circuits Ă  des boĂźtiers‐radiateurs en contact avec les circuits intĂ©grĂ©s. Certains sont mĂȘme Ă©quipĂ©s d’un ou deux ventilateurs. De maniĂšre gĂ©nĂ©rale, l’ensemble des cartes ARM ayant au moins 2 Gio de mĂ©moire vive et Ă©tant compatible avec une distribution GNU/Linux pour ARM permettra de faire de la bureautique de maniĂšre satisfaisante. En revanche, il n’existe pas de boĂźtier pour toutes les cartes. Avant de passer aux autres usages, il est nĂ©cessaire d’expliquer les diffĂ©rences matĂ©rielles entre ces cartes et les machines PC compatibles. La section suivante prĂ©sente les spĂ©cificitĂ©s matĂ©rielles ainsi que les piĂšges Ă  Ă©viter pour pouvoir profiter des usages plus complexes que la navigation Web. # MatĂ©riel # ## Pilotes ## Les systĂšmes monopuces (_system on chip_ — SoC) destinĂ©s aux tĂ©lĂ©phones et aux ordinateurs Ă  carte unique disposent gĂ©nĂ©ralement d’une unitĂ© de traitement graphique (GPU) initialement utilisĂ©e dans les jeux vidĂ©o, les applications 3D (CAO, animation), mais aussi utilisĂ©e dans la majoritĂ© des environnements de bureau modernes pour les effets visuels. Mais il est aussi nĂ©cessaire de pouvoir dĂ©coder matĂ©riellement les flux vidĂ©o via une unitĂ© spĂ©cialisĂ©e (VPU), car les processeurs ne sont souvent pas assez puissants pour le faire. De plus, ces cartes pouvant interagir avec le monde physique, comme prĂ©sentĂ© dans la section « Électronique, robotique, Internet des objets », il faut aussi ĂȘtre en mesure d’avoir accĂšs aux entrĂ©es‐sorties. ### Quelle diffĂ©rence avec un PC ? ### Les pĂ©riphĂ©riques sont connectĂ©s au processeur principal via un bus. Certains protocoles de bus supportent l’énumĂ©ration (aussi appelĂ©e dĂ©couverte), c’est‐à‐dire que le processeur central peut demander « quels dispositifs sont connectĂ©s Ă  ce bus » et les dispositifs rĂ©pondent avec des informations sur leurs type, fabricant, modĂšle et configuration dans un format standardisĂ©. Avec ces informations, le systĂšme d’exploitation peut rapporter la liste des pĂ©riphĂ©riques disponibles et dĂ©cider quel pilote de pĂ©riphĂ©rique utiliser pour chacun d’entre eux. Certains protocoles de bus ne prennent pas en charge l’énumĂ©ration, et le processeur principal n’a aucun moyen de savoir quels pĂ©riphĂ©riques sont connectĂ©s, Ă  part deviner. Tous les bus PC modernes prennent en charge l’énumĂ©ration, en particulier PCI (l’original ainsi que ses extensions et successeurs, tels que AGP et PCIe), sur lequel la plupart des pĂ©riphĂ©riques internes sont connectĂ©s, USB (toutes versions), sur lequel la plupart des pĂ©riphĂ©riques externes sont connectĂ©s, ainsi que [[FireWire]], [[SCSI]], toutes les versions modernes de ATA/SATA, etc. Les connexions de moniteur modernes permettent Ă©galement de dĂ©couvrir le moniteur connectĂ© (HDMI, DisplayPort, DVI, VGA avec EDID). Ainsi, sur un PC, le systĂšme d’exploitation peut reconnaĂźtre les pĂ©riphĂ©riques connectĂ©s en Ă©numĂ©rant le bus PCI, et en Ă©numĂ©rant le bus USB quand il trouve un contrĂŽleur USB sur le bus PCI, etc. Notez que le systĂšme d’exploitation doit supposer l’existence du bus PCI et la maniĂšre de le sonder ; ceci est standardisĂ© sur l’architecture du PC (« architecture PC » ne signifie pas seulement un processeur x86 : pour ĂȘtre un PC (moderne), un ordinateur doit aussi avoir un bus PCI et doit dĂ©marrer d’une certaine maniĂšre). De nombreux systĂšmes embarquĂ©s utilisent des bus moins sophistiquĂ©s qui ne prennent pas en charge l’énumĂ©ration. C’était vrai sur PC jusqu’au milieu des annĂ©es 1990, avant que le PCI ne dĂ©passe l’ISA. La plupart des systĂšmes ARM, en particulier, ont des bus qui ne gĂšrent pas l’énumĂ©ration. C’est Ă©galement le cas de certains systĂšmes x86 embarquĂ©s qui ne suivent pas l’architecture PC. Sans Ă©numĂ©ration, le systĂšme d’exploitation doit savoir quels pĂ©riphĂ©riques sont prĂ©sents et comment y accĂ©der. L’arborescence de pĂ©riphĂ©riques (_Device Tree_) est un format standard pour reprĂ©senter ces informations. La principale raison pour laquelle les bus PC prennent en charge la dĂ©couverte est qu’ils sont conçus pour permettre une architecture modulaire dans laquelle des pĂ©riphĂ©riques peuvent ĂȘtre ajoutĂ©s et supprimĂ©s, par exemple en ajoutant une carte d’extension dans un PC ou en connectant un cĂąble sur un port externe. Les systĂšmes embarquĂ©s ont gĂ©nĂ©ralement un ensemble fixe de dispositifs et un systĂšme d’exploitation prĂ©chargĂ© par le fabricant et qui n’est pas remplacĂ©, de sorte qu’il n’est pas nĂ©cessaire de procĂ©der Ă  un dĂ©nombrement. Si vous souhaitez aller plus loin dans la comprĂ©hension de la construction d’un systĂšme d’exploitation sur des systĂšmes monopuces, François Mocq a Ă©crit [un billet](https://www.framboise314.fr/un-point-sur-le-device-tree/) permettant de comprendre comment cela fonctionne. ### Quelles consĂ©quences ? ### La principale consĂ©quence de cette diffĂ©rence entre PC et ordinateur Ă  carte unique est que, si le concepteur d’un appareil dĂ©cide que son produit n’est destinĂ© qu’à un usage prĂ©cis et non pas une utilisation plus large, il sera alors trĂšs compliquĂ© de faire fonctionner l’ensemble du matĂ©riel pour un usage autre que celui prĂ©vu initialement. On peut prendre l’exemple des boĂźtiers Android TV, disponibles Ă  des prix attractifs, ayant des performances Ă©quivalentes voire meilleures que le Raspberry Pi 4 telle que le [H96 Max](https://www.dx.com/p/h96-max-rk3399-20ghz-4k-tv-box-android-4gb32gb-wifi-1000m-lan-bluetooth-2619191). Pour ĂȘtre capable de l’utiliser avec une distribution GNU/Linux, il faudra jouer avec des images venant de vendeurs de SBC tels que Orange Pi ou PINE64 et des dĂ©veloppements communautaires comme Linux-Sunxi, mais il sera trĂšs difficile d’avoir accĂšs Ă  tous les pĂ©riphĂ©riques, car des Ă©lĂ©ments du _Device Tree_ seront manquants. On voit donc que ce manque d’accĂšs aux sources de ces boĂźtiers handicape fortement la rĂ©utilisation de ce type de matĂ©riel. Ce problĂšme touche malheureusement Ă©galement les ordinateurs Ă  carte unique. Il n’est que trĂšs rarement spĂ©cifiĂ© si le matĂ©riel prĂ©sent est utilisable. La plupart du temps, des images Android et GNU/Linux (Ubuntu pour la plupart) sont fournies, et si l’image Android permet d’exploiter la partie graphique, c’est souvent plus compliquĂ© avec la distribution GNU/Linux (d’autant plus si l’on souhaite la garder Ă  jour). Il n’est, en revanche, quasiment jamais spĂ©cifiĂ© si les entrĂ©es‐sorties sont disponibles et comment elles le sont. Par exemple dans la section « Électronique, robotique, Internet des objets », des bibliothĂšques sont citĂ©es, mais elles ne sont disponibles que pour trĂšs peu de cartes. Il faut donc comprendre qu’entre les fonctionnalitĂ©s matĂ©rielles dĂ©crites et leur utilisation, il y a un monde. C’est prĂ©cisĂ©ment pour ces raisons qu’un dĂ©butant devra toujours s’orienter vers une carte ayant une grande communautĂ©, dans le cas contraire, on rentre dans l’embarquĂ©, et cela nĂ©cessite des compĂ©tences d’ingĂ©nieur dĂ©diĂ©es Ă  ce domaine, et cela peut ĂȘtre trĂšs dĂ©courageant pour les hobbyistes souhaitant faire un petit projet. Les activitĂ©s PC modernes nĂ©cessitent donc le bon fonctionnement de deux composants pĂ©riphĂ©riques : - l’unitĂ© de traitement graphique (GPU) ; - l’unitĂ© de traitement vidĂ©o (VPU). Une autre consĂ©quence est l’impossibilitĂ© de crĂ©er une image du noyau Linux universelle. Pour cela, celle‐ci devrait reconnaĂźtre sur quelle machine elle tourne. Or, sans moyen standard, il y a une forte probabilitĂ© de « casser » la puce (par exemple, en jouant sur des registres de commande d’horloge). Il n’existe ainsi aucun noyau Linux ARM qui dĂ©marre partout, Ă  l’inverse d’un noyau Linux x86 classique. C’est d’ailleurs incomprĂ©hensible qu’ARM ne garantisse mĂȘme pas un fonctionnement minimal (amorçage + un [[UART]] + une [horloge temps rĂ©el](https://fr.wikipedia.org/wiki/Horloge_temps_r%C3%A9el), et sans doute une configuration « correcte » de la mĂ©moire vive) pour tester plus facilement une nouvelle puce, certains fabricants le proposent (par exemple le FEL mode d’Allwinner) mais ce n’est pas universel. #### Processeur graphique #### Bien qu’il soit possible d’utiliser une distribution GNU/Linux en utilisant le processeur pour l’affichage, la prise en charge de Mesa 3D n’est pas disponible pour tous les processeurs graphiques, ce qui oblige Ă  repasser par [[LLVMpipe]], et donc le processeur, pour l’affichage. Lorsque les pilotes Mesa 3D ne sont pas disponibles, les environnements de bureau ne sont pas accĂ©lĂ©rĂ©s par le processeur graphique, il faut donc utiliser des environnements lĂ©gers. Les processeurs Videocore IV/VI ont des pilotes disponibles directement sur Raspbian, les environnements de bureau traditionnels peuvent donc pleinement utiliser le processeur graphique. Pour les processeurs graphiques utilisant les puces Mali (quasiment tous les autres systĂšmes monopuces ARM), c’est plus compliquĂ©. Il existe des pilotes libres pour la couche noyau, mais les pilotes pour l’espace utilisateur ne sont pas libres et donc livrĂ©s sous forme de binaires. Chaque pilote binaire est conçu pour une combinaison spĂ©cifique de systĂšme de d’exploitation (GNU/Linux ou Android), de plate‐forme matĂ©rielle, de gĂ©nĂ©ration de circuit graphique (4x0/T6x0/T7x0) et de technologie graphique (fbdev, X Window, Wayland ou SurfaceFlinger d’Android). Les plates‐formes sont parfois abandonnĂ©es, vous devrez donc peut‐ĂȘtre choisir une version plus ancienne pour obtenir un pilote qui fonctionnera sur un matĂ©riel plus ancien. Un pilote binaire devrait fonctionner avec un pilote du noyau publiĂ© en mĂȘme temps, et jusqu’à quatre versions antĂ©rieures. Le pilote binaire vĂ©rifie la version de l’API du pilote du noyau au dĂ©marrage. ARM a abandonnĂ© le prise en charge de X Window dans ses versions postĂ©rieures Ă  X11 version 16 (janvier 2017). C’est pĂ©nible, car c’est encore trĂšs utilisĂ©. Seuls Wayland, fbdev et SurfaceFlinger sont aujourd’hui pris en charge. Cependant, tout n’est pas si sombre car la version 5.2 du noyau contient maintenant par dĂ©faut les pilotes libres compatibles avec ces processeurs. Ces pilotes ont Ă©tĂ© obtenus par rĂ©tro‐ingĂ©nierie, ils ne sont pas considĂ©rĂ©s comme Ă©tant stables. Mais ils permettent de faire fonctionner une grande palette de cartes sans avoir Ă  galĂ©rer Ă  trouver les bonnes versions du noyau pour le matĂ©riel Ă  disposition. [Le billet de blog de Collabora du 5 aoĂ»t](https://www.collabora.com/news-and-blog/blog/2019/08/06/rockpi-panfrost-wayland/), montre d’ailleurs des progrĂšs Ă©normes sur la prise en charge de ces processeurs. Sur le systĂšme monopuce RK3399, qui est trĂšs populaire aujourd’hui, les environnements graphiques, GNOME Shell et Plasma sont maintenant compatibles par dĂ©faut. Il est donc possible de faire fonctionner KDE et GNOME sur ce type de matĂ©riel en n’utilisant que des logiciels libres ! Pour les nombreux appareils moins rĂ©cents ou plus modestes Ă  base des vĂ©nĂ©rables circuits graphiques Mali4*0 (gĂ©nĂ©ration [[Utgard]]), le pilote libre tant attendu nommĂ© Lima est lui aussi en bonne voie. ## Performances thermiques ## Plus les cartes ont des processeurs rapides et puissants, et plus le dĂ©gagement thermique est important. Si les prĂ©cĂ©dentes versions de Raspberry Pi permettaient de ne pas trop se soucier de la dissipation pour la plupart des cas d’usage, la derniĂšre version nĂ©cessite de travailler ce sujet. C’est d’ailleurs tout aussi vrai pour les cartes ARM puissantes, comme les [[Odroid]] qui nĂ©cessitent un dissipateur thermique pour pouvoir fonctionner de maniĂšre optimale. Un point intĂ©ressant est que, si ces cartes ne sont pas refroidies correctement, il n’y a pas de danger particulier mais en revanche un abaissement automatique de la frĂ©quence des processeurs (_throttling_) est activĂ©. Afin d’obtenir des performances optimales, il convient donc de traiter ce problĂšme. Cela peut se faire directement sur la carte avec un [refroidissement actif de type « ventirad »](https://thepihut.com/collections/raspberry-pi-cases/products/dual-fan-heatsink-case-for-raspberry-pi-4), mais Ă©galement par une dissipation passive [sur la carte](https://thepihut.com/collections/raspberry-pi-cases/products/aluminium-heatsink-case-for-raspberry-pi-4) ou via un [boĂźtier en aluminium faisant contact avec le processeur](https://thepihut.com/collections/raspberry-pi-cases/products/flirc-raspberry-pi-4-case). [Phronix](https://www.phoronix.com/scan.php?page=article&item=raspberrypi-4-cooling&num=1) a fait des tests avec ventilateur, « ventirad » et boĂźtier de dissipation passive, et seules les deux derniĂšres options permettent de ne jamais activer l’abaissement de frĂ©quence. # VidĂ©o # L’usage multimĂ©dia fait partie des usages les plus problĂ©matiques de ces cartes. La Raspberry Pi 3B+ n’est clairement pas taillĂ©e pour les plus exigeants ou pour l’avenir proche, car elle n’est pas capable de gĂ©rer des flux 4K en dĂ©codage matĂ©riel, ce qui ne permet pas l’utilisation des vidĂ©os 4K. De plus, s’il est possible d’avoir des performances acceptables jusqu’en 1080p pour le codec H.264, cela ne peut se faire qu’au travers du logiciel OMXPlayer. Une version de [VLC](https://www.raspberrypi.org/forums/viewtopic.php?t=227185#p1393388), prenant en compte le dĂ©codage matĂ©riel du videocore IV, a Ă©tĂ© publiĂ©e en novembre 2018 ; elle semble donner satisfaction Ă  ses utilisateurs. Bien que l’on puisse se dire que cela peut toujours ĂȘtre intĂ©ressant, il est possible de trouver des [solutions toutes prĂȘtes pour le multimĂ©dia pour moins de 30 €](https://fr.aliexpress.com/item/33014928441.html?spm=a2g0o.productlist.0.0.4a14690ft3mFHK&s=p&algo_pvid=48b7175b-3bea-4cde-b6ca-49e7137de90a&algo_expid=48b7175b-3bea-4cde-b6ca-49e7137de90a-2&btsid=ecd9b6e5-6a11-45b4-a5f0-bcfd77cc3470&ws_ab_test=searchweb0_0%2Csearchweb201602_4%2Csearchweb201603_53) qui se basent sur Android. À l’instar des solutions pour l’Internet des objets, la question du suivi logiciel et, intrinsĂšquement de la sĂ©curitĂ©, va se poser si l’objectif est aussi de relier l’appareil Ă  Internet, ainsi que la question de la protection des donnĂ©es personnelles et du « Bigdata ». Si le but recherchĂ© est donc uniquement le multimĂ©dia, la question de l’utilisation d’une Raspberry Pi ne se pose pas, celle‐ci n’est pas intĂ©ressante. Si l’on souhaite en revanche avoir une solution GNU/Linux non Android, la version 4 avec au moins 2 Gio de mĂ©moire vive est une solution trĂšs pertinente. Il faudra nĂ©anmoins s’armer de patience, car la prise en compte de l’accĂ©lĂ©ration matĂ©rielle par les distributions dĂ©diĂ©es nĂ©cessite encore de la mise au point. Si l’on compare Ă  la ROCKPro64 prĂ©cĂ©demment prĂ©sentĂ©e dans la section bureautique, il semble que les versions des logiciels de lecture vidĂ©o tels que mpv ou VLC par dĂ©faut, ne sont pas compilĂ©es avec l’accĂ©lĂ©ration matĂ©rielle, il faut donc le faire [manuellement](https://forum.pine64.org/showthread.php?tid=7112). Ce n’est clairement pas un bon point pour cette carte. Les cartes de chez Odroid sont, elles, livrĂ©es avec des lecteurs permettant d’exploiter l’accĂ©lĂ©ration matĂ©rielle pour le dĂ©codage, mais pas forcĂ©ment VLC ou mpv. Il est cependant Ă  noter que le travail de PINE64 autour de la crĂ©ation d’un tĂ©lĂ©phone et d’un ordinateur portable basĂ©s sur l’architecture de la ROCKPro64 les a conduits Ă  travailler Ă  mettre en place l’ensemble des briques applicatives libres pour une utilisation optimale. Il est trĂšs probable que l’ensemble des dĂ©veloppements faits pour le portable et le tĂ©lĂ©phone mobile conduise Ă  une distribution dĂ©diĂ©e qui bĂ©nĂ©ficiera Ă©galement Ă  la carte ROCKPro64. Les dĂ©veloppements faits par PINE64 mĂ©riteraient une dĂ©pĂȘche Ă  eux seuls. Il existe une autre entreprise qui semble donner satisfaction Ă  un grand nombre d’utilisateurs : Hardkernel, qui produit les Odroid. Dans les cartes permettant de bonnes performances en multimĂ©dia on notera la XU4 et la N2, la N2 Ă©tant plus performante. Il est Ă  noter que ces cartes coĂ»tent souvent plus cher que le prix affichĂ©, du fait des frais de douane. Les revendeurs europĂ©ens sont bien plus chers. La carte N2 est livrĂ©e avec une Ubuntu 18.04 ainsi que tous les pilotes graphiques et accĂ©lĂ©rateurs permettant les jeux 3D et la lecture de vidĂ©os 4K H.265. Si elle avait de rĂ©els arguments Ă  sa sortie, sa faible disponibilitĂ© en Europe, couplĂ©e Ă  une Ă©quivalence en termes de VPU, la rend aujourd’hui moins intĂ©ressante face Ă  la Raspberry Pi 4. Peut‐ĂȘtre que l’utilisation d’un processeur graphique Mali permettra de faire une diffĂ©rence sur la partie _retrogaming_, pour les jeux 3D, mais on ne peut pas le savoir aujourd’hui, car il n’existe pas de comparatifs exhaustifs. Il existe aussi des alternatives plus chĂšres Ă  base de processeurs X86-64, telles que les cartes [UDOO X66 II](https://www.udoo.org/udoo-x86/) dont le prix de base commence Ă  174 €. Comme ces cartes utilisent des processeurs d’ordinateurs portables, elles n’autorisent pas l’accĂšs aux GPIO, ainsi elles ajoutent des processeurs d’Arduino pour permettre l’interaction avec le monde extĂ©rieur. Cette carte est basĂ©e sur un _[[Accelerated processing unit]]_ Intel N3160 (circuit graphique Intel HD 400, dont les performances ne sont pas transcendantes). Elles n’auront cependant aucune difficultĂ© Ă  faire ce que font toutes les cartes ARM en termes de bureautiques multimĂ©dia et jeu, mais pour un prix deux Ă  trois fois supĂ©rieur. Mais, comme l’ensemble de la chaĂźne logicielle est libre (circuit graphique Intel, Arduino Leonardo), il est facile de mettre Ă  jour la distribution, ce qui Ă©vite Ă  coup sĂ»r l’obsolescence qui peut faire peur sur des cartes ARM. À noter Ă©galement qu’UDOO vient de basculer chez AMD avec sa plate‐forme embarquĂ©e APU Ryzen V1000 qui, avec le processeur graphique Vega, a des performances graphiques bien supĂ©rieures Ă  celles que l’on peut trouver sur les processeurs graphiques Intel HD. UDOO a financĂ© ses dĂ©veloppements sur une campagne [KickStarter](https://www.kickstarter.com/projects/udoo/udoo-bolt-raising-the-maker-world-to-the-next-leve/updates) et entre en [phase de production](https://www.kickstarter.com/projects/udoo/udoo-bolt-raising-the-maker-world-to-the-next-leve/posts/2570565). Lorsque l’on commence Ă  vouloir faire un serveur multimĂ©dia, il est souvent envisagĂ© d’utiliser des distributions dĂ©diĂ©es. Il existe plusieurs distributions spĂ©cialisĂ©es comme [LibreElec](https://libreelec.tv/), [OpenElec](https://openelec.tv/) et [OSMC](https://osmc.tv/). Cette derniĂšre ayant un magasin d’applications, ou _app store_, pour rajouter des greffons (_plug‐ins_). Ces distributions sont basĂ©es sur le gestionnaire multimĂ©dia [Kodi](https://kodi.tv). Il est possible de l’installer directement depuis Raspbian, mais aussi de l’avoir directement dans [EmulationStation](https://emulationstation.org/) via [RetroPie](https://retropie.org.uk/), [Recalbox](https://www.recalbox.com/fr/) ou [batocera.linux](https://batocera-linux.xorhub.com/). Si l’on ne veut faire que du multimĂ©dia, alors ces distributions spĂ©cialisĂ©es sont Ă  prĂ©fĂ©rer, car elles optimisent au mieux la gestion des ressources. # Audio # La carte Raspberry Pi 4 n’est, en revanche, pas du tout prĂ©vue pour l’audio par dĂ©faut. Bien qu’il soit possible d’installer des [HAT](https://www.hifiberry.com/shop/boards/hifiberry-dac-adc/) dĂ©diĂ©s, la sortie par dĂ©faut est un [modulateur de largeur d’impulsions](https://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion) (PWM) filtrĂ© qui ne satisfera pas grand monde, et il n’y a pas du tout d’entrĂ©e son (contrairement Ă  ce que la concurrence propose, parfois depuis longtemps Ă  la vue des cartes et appareils basĂ©s sur un Allwinner A10 ou A20). AprĂšs, il semble nĂ©cessaire de relativiser. Car que ce soit avec des ordinateurs monocartes ou mĂȘme avec des cartes‐mĂšres de PC, les gens exigeants quant Ă  la qualitĂ© sonore privilĂ©gieront des convertisseurs numĂ©rique‐analogique (DAC) ou analogique‐numĂ©rique (ADC) externes connectĂ©s via l’USB ou les diffĂ©rents protocoles de communication accessibles via les GPIO. Il est simplement regrettable de ne pouvoir se reposer sur l’implĂ©mentation par dĂ©faut que dans de trĂšs rares occasions. Avec ses GPIO, ses ports USB et la sortie audio via HDMI, cela reste tout de mĂȘme un outil facilitant la crĂ©ation de matĂ©riel Hi‐Fi connectĂ©. Ainsi, on trouve beaucoup d’exemples de matĂ©riel audio Ă  faire soi‐mĂȘme ([[DIY]]) conçus Ă  partir de Raspberry Pi. J’ai trouvĂ© que [ce projet](https://cloriou.fr/2018/04/04/creer-chaine-hi-fi-diy-raspberry-pi-materiel-utilise/), assez didactique, mĂ©ritant d’ĂȘtre mentionnĂ©. # RĂ©trogaming # Bien que l’émulation de jeux vidĂ©o soit un sujet [complexe quant Ă  sa lĂ©galitĂ©](https://www.millenium.org/news/132859.html), il a permis Ă  des jeunes gĂ©nĂ©rations de dĂ©couvrir les jeux de leurs parents (voire de leurs grands‐parents). PrĂ©senter ici les techniques d’émulation conduirait Ă  un exposĂ© bien trop long, il est cependant Ă©vident qu’émuler une Wii ou une NES ne demandera pas les mĂȘmes performances. Jusqu’ici la Raspberry Pi pouvait Ă©muler l’ensemble des consoles 8 bits, la PlayStation et parfois quelques jeux de consoles plus rĂ©centes. Bien que la version 4 soit plus puissante, il n’est pas du tout certain que l’ensemble des jeux des consoles telles que la Nintendo 64 ou la DreamCast (naomi/atomisware) soit Ă©mulĂ© de maniĂšre fluide, mais il y a dĂ©jĂ  eu des tests montrant des rĂ©sultats intĂ©ressants sur ces consoles. Pour accĂ©der Ă  l’émulation avec ce genre de cartes, il est possible d’installer [RetroPie](https://retropie.org.uk/), qui permet d’aller chercher l’ensemble des dĂ©pĂŽts de [Libretro](https://www.libretro.com/) et de compiler les logiciels pour les rendre disponibles dans le superviseur [EmulationStation](https://emulationstation.org/). C’est un processus trĂšs long, car la compilation des diffĂ©rents Ă©mulateurs est gourmande mĂȘme sur un PC X86-64. Il est Ă©galement possible d’installer des distributions prĂ©vues pour l’émulation telles que [Recalbox](https://www.recalbox.com/fr/), ou [batocera.linux](https://batocera-linux.xorhub.com/). Il est Ă©vident que les solutions Ă  base d’APU X86-64 prĂ©sentĂ©es dans la section multimĂ©dia, seront plus performantes que les solutions ARM, mais la gamme de prix n’est pas du tout la mĂȘme. # Électronique, robotique, Internet des objets # C’est, pour moi, le point qui a fait de cette carte un succĂšs, voire une rĂ©volution. Nous avions dĂ©jĂ  vĂ©cu la rĂ©volution [Arduino](https://www.arduino.cc/), qui permet, avec un [EDI](https://fr.wikipedia.org/wiki/Environnement_de_d%C3%A9veloppement "environnement de dĂ©veloppement intĂ©grĂ©") simplifiant l’édition de code source, la compilation et le tĂ©lĂ©versement vers le microcontrĂŽleur, de mettre Ă  la disposition de personnes non expertes en informatique embarquĂ©e, une solution permettant de contrĂŽler des actionneurs et de mesurer Ă  l’aide de capteurs pour ainsi crĂ©er un environnement idĂ©al pour le [[DIY]] et l’Internet des objets. Cependant, bien que faire des petits projets soit assez simple, dĂšs que l’on veut faire des projets plus Ă©laborĂ©s, cela se complique sĂ©rieusement. Ces microcontrĂŽleurs Ă©tant monocƓurs, il n’est pas forcĂ©ment possible de simplement dĂ©finir plusieurs tĂąches. Il existe des bibliothĂšques pour simplifier l’utilisation, mais il y a beaucoup de fonctions bloquantes qui rendront les choses complexes. De plus, ces cartes n’ont pas une trĂšs grande puissance de calcul et des capacitĂ©s mĂ©moire restreintes ; on peut donc atteindre leurs limites bien plus rapidement. Elles ont, en revanche, l’avantage d’ĂȘtre totalement prĂ©emptives. Si l’on accepte que la criticitĂ© des tĂąches Ă  effectuer n’est pas Ă©levĂ©e, alors le fait de perdre le temps rĂ©el (l’aspect prĂ©emptif) par l’utilisation d’un noyau Linux rend la carte Raspberry Pi excellente pour le prototypage et l’interaction avec le monde rĂ©el. Tout d’abord, contrairement Ă  l’écosystĂšme Arduino oĂč la programmation se fait en C++, une trĂšs grande partie des ressources pĂ©dagogiques autour de la gestion des GPIO avec la Raspberry Pi se fait en Python grĂące Ă  la bibliothĂšque RPi.GPIO. Ainsi, changer pĂ©riodiquement l’état d’une sortie numĂ©rique est aussi simple que : ```python import RPi.GPIO as GPIO # importation du module RPi.GPIO from time import sleep # importation de la fonction sleep GPIO.setmode(GPIO.BCM) # choix BCM or BOARD GPIO.setup(24, GPIO.OUT) # rĂ©gler GPIO24 comme sortie try: while True: GPIO.output(24, 1) # rĂ©gler GPIO24 to 1/GPIO.HIGH/True sleep(0.5) # Attendre une demi‐seconde GPIO.output(24, 0) # rĂ©gler GPIO24 Ă  0/GPIO.LOW/False sleep(0.5) # Attendre une demi-seconde except KeyboardInterrupt: # Inteception de l’interruption de clavier CTRL+C GPIO.cleanup() ``` L’approche de RPi.GPIO est trĂšs proche du matĂ©riel, il n’y a quasiment pas d’abstraction, elle est donc extrĂȘmement intĂ©ressante d’un point de vue pĂ©dagogique, mais nĂ©cessite de solides connaissances pour l’utiliser efficacement. En tant que mĂ©canicien, je dois trouver des solutions pour rĂ©aliser des tĂąches de mouvement (mon travail consiste plutĂŽt dans la destruction de la matiĂšre par le mouvement), j’étudie donc souvent comment faire pour rĂ©ussir Ă  trouver des solutions pas chĂšres pour faire ces tĂąches de mouvement. Aujourd’hui, les actionneurs les moins chers sont les moteurs pas Ă  pas. Leur Ă©lectronique de commande impose d’envoyer un train de crĂ©neaux dont la frĂ©quence dĂ©finira le nombre de pas par seconde. Des outils dĂ©diĂ©s existent, car ils sont aussi utilisĂ©s pour la motorisation des imprimantes 3D, mais si l’on veut le faire avec une Raspberry Pi, il y a Ă©videmment une bibliothĂšque pour cela. La bibliothĂšque [GPIO Zero](https://gpiozero.readthedocs.io/en/stable/) permet de rĂ©aliser une quantitĂ© Ă©norme d’opĂ©rations sur les GPIO, contrairement Ă  la bibliothĂšque RPi.GPIO, qui permet d’écrire du code qui traite des broches et de l’état des broches. GPIO Zero fait gĂ©nĂ©ralement rĂ©fĂ©rence Ă  des pĂ©riphĂ©riques comme des [diodes Ă©lectroluminescentes](https://fr.wikipedia.org/wiki/Diode_%C3%A9lectroluminescente "diode Ă©lectroluminescente") (LED) ou des boutons plutĂŽt qu’aux broches d’entrĂ©e et de sortie. GPIO Zero fournit des classes qui reprĂ©sentent les pĂ©riphĂ©riques, donc au lieu d’avoir un numĂ©ro de broche et de lui dire d’activer la sortie numĂ©rique, vous avez une LED et vous lui dites de s’allumer et, au lieu d’avoir un numĂ©ro de broche et de demander si elle est allumĂ©e ou Ă©teinte, vous avez un bouton et demandez s’il est pressĂ©. Cette bibliothĂšque permet notamment de piloter directement un moteur depuis la Raspberry Pi : ```python import time import sys from gpiozero import OutputDevice as stepper IN1 = stepper(12) IN2 = stepper(16) IN3 = stepper(20) IN4 = stepper(21) stepPins = [IN1,IN2,IN3,IN4] # Motor GPIO pins

stepDir = -1 # Set to 1 for clockwise # Set to -1 for anti-clockwise mode = 1 # mode = 1: Low Speed ==> Higher Power # mode = 0: High Speed ==> Lower Power if mode: # Low Speed ==> High Power seq = [[1,0,0,1], # Define step sequence as shown in manufacturers datasheet [1,0,0,0], [1,1,0,0], [0,1,0,0], [0,1,1,0], [0,0,1,0], [0,0,1,1], [0,0,0,1]] else: # High Speed ==> Low Power seq = [[1,0,0,0], # Define step sequence as shown in manufacturers datasheet [0,1,0,0], [0,0,1,0], [0,0,0,1]] stepCount = len(seq) if len(sys.argv)>1: # Read wait time from command line waitTime = int(sys.argv[1])/float(1000) else: waitTime = 0.004 # 2 miliseconds was the maximun speed got on my tests stepCounter = 0 while True: # Start main loop for pin in range(0,4): xPin=stepPins[pin] # Get GPIO if seq[stepCounter][pin]!=0: xPin.on() else: xPin.off() stepCounter += stepDir if (stepCounter>= stepCount): stepCounter = 0 if (stepCounter < 0): stepCounter = stepCount+stepDir time.sleep(waitTime) # Wait before moving on ``` _TrouvĂ© sur [instructables.com](https://www.instructables.com/id/Playing-With-Electronics-Raspberry-GPIO-Zero-Libra/)._ Un point vraiment intĂ©ressant pour la nouvelle Raspberry Pi est qu’il y a eu une nette amĂ©lioration de la vitesse de commutation des entrĂ©es‐sorties. La figure ci‐dessous montre l’évolution de la vitesse de commutation d’une sortie numĂ©rique : ![Ă©volution de la vitesse de commutation d’une sortie numĂ©rique](https://linuxfr.org/images/historique/images_perdues/ordinateur-a-carte-unique-raspberry-pi-4-et-consort-2019-06-21-15_41_32-Window.png) On constate une augmentation d’un facteur 3, qui est trĂšs probablement due Ă  l’utilisation de nouveaux cƓurs ARM. Il est clair que lorsque l’on veut faire des projets qui nĂ©cessitent plusieurs capteurs, alors avoir une commutation plus rapide est un avantage certain. Bien que la bibliothĂšque GPIO Zero permette de faire beaucoup, elle ne s’occupe pas de l’I2C et du SPI. Afin de permettre au plus grand nombre de facilement utiliser des capteurs, Adafruit a dĂ©veloppĂ© une bibliothĂšque appelĂ©e [Blinka](https://learn.adafruit.com/circuitpython-on-raspberrypi-linux/installing-circuitpython-on-raspberry-pi) qui permet de faire fonctionner l’ensemble des capteurs et actionneurs qu’il a dĂ©veloppĂ©s pour ses cartes fonctionnant sous [CircuitPython](https://learn.adafruit.com/welcome-to-circuitpython/what-is-circuitpython) (interprĂ©teur Python pour microcontrĂŽleur, simplifiant grandement la programmation). L’ensemble des capteurs et actionneurs disponibles pour sur Adafruit est trĂšs important, ce qui peut grandement rĂ©duire le coĂ»t de dĂ©veloppement d’un prototype ! Pour utiliser des convertisseurs analogiques‐numĂ©riques, il existe des cartes filles comme [celle de WaveShare](https://www.amazon.fr/Waveshare-Raspberry-AD-Board-High-Precision/dp/B00ZZGDL32/ref=asc_df_B00ZZGDL32/?tag=googshopfr-21&linkCode=df0&hvadid=51048574806&hvpos=1o1&hvnetw=g&hvrand=11630872363865146702&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9055774&hvtargid=pla-274470144622&psc=1) prĂ©sentĂ©e ci‐dessous : ![**Figure carte WaveShare**](https://www.waveshare.com/img/devkit/accBoard/High-Precision-AD-DA-Board/High-Precision-AD-DA-Board-5.jpg) Mais il est possible d’en utiliser de [beaucoup moins chers](https://www.adafruit.com/product/1083), l’avantage de la Raspberry, c’est que l’on a directement accĂšs aux GPIO, et l’avantage de l’Adafruit, c’est qu’il y a un pont avec CircuitPython. # Serveur de stockage et passerelle Internet # Quand elles sont Ă©quipĂ©es d’une connectique rĂ©seau et de stockage suffisant, les cartes ARM peuvent aussi faire des serveurs domestiques intĂ©ressants de par leur faible consommation Ă©lectrique. Une carte Ă  base de systĂšme monopuce A20 ([OLinuXino MICRO](https://www.olimex.com/wiki/A20-OLinuXino-MICRO#Linux), [Banana Pi M1](http://www.banana-pi.org/m1.html)) suffit Ă  synchroniser les contacts, les agendas et les fichiers de tablettes et smartphones familiaux avec un ordinateur de sauvegarde en utilisant ownCloud (et certainement Nextcloud — non testĂ©). Pour un vrai _cloud_ familial entre ordinateurs avec le mĂȘme logiciel, un systĂšme monopuce un peu plus puissant, comme le R40 ([Banana Pi M2U](http://www.banana-pi.org/m2u.html)) s’en sort sans latence sensible. MĂȘme l’interface Web plutĂŽt lourde pour le A20 passe ici trĂšs correctement. Certaines cartes disposant d’Ethernet Gigabit et de plusieurs ports SATA, comme la [Banana Pi R2](http://www.banana-pi.org/r2.html), la Marvell Expressobin ou la [ROCKPro64](https://www.pine64.org/rockpro64/), avec sa carte d’extension SATA, permettent de faire un serveur de stockage en rĂ©seau (NAS) avec RAID logiciel. Enfin, des logiciels de supervision comme Munin ou Zabbix (Nagios non testĂ©) sont tout Ă  fait utilisables pour surveiller un petit rĂ©seau local, du moment que le nombre de machines n’est pas trop Ă©levĂ©.

AltStyle ă«ă‚ˆăŁăŠć€‰æ›ă•ă‚ŒăŸăƒšăƒŒă‚ž (->ă‚ȘăƒȘă‚žăƒŠăƒ«) /