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.  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 :  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 :  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Ă©.