Vu sur le net

Posted on dim. 11 février 2018 in Vu

image

En bref

Bootlin a lancé une campagne de financement participatif sur Kickstarter pour développer le ** support du VPU Allwinner dans le noyau Linux **.

Concrètement, cela va permettre de visionner des vidéos h264 sur des cartes bon marché comme les Orange Pi One (9 €), Nano Pi M1 Plus et bien d'autres encore, avec la dernière version du noyau Linux.

Pour aller plus loin, voici quelques détails.

Qui est Bootlin ?

Bootlin est une petite entreprise française d'une douzaine de personnes qui vient de changer de nom. (On la connaissait avant sous le nom de Free Electrons, mais elle a dû changer de nom récemment suite à une plainte de l'opérateur téléphonique Free). Elle a des bureaux à Orange, Toulouse et Lyon et est spécialisée dans le développement logiciel de systèmes embarqués.

Elle est surtout connue et reconnue pour ses nombreuses contributions au noyau Linux. En effet, elle est régulièrement classée dans le top 10 des entreprises ayant contribué aux nouvelles versions du noyau et 6 de leurs ingénieurs sont même mainteneurs (c'est eux qui vérifient et acceptent les contributions des autres développeurs).

Un de leurs ingénieurs, Maxime Ripard est un contributeur de longue date et même mainteneur du support des puces Allwinner. Il a notamment participé au support dans le noyau Linux de la carte CHIP, l'ordinateur à 9 dollars, également financé sur Kickstarter en 2015.

Qu'est-ce qu'Allwinner ?

Allwinner est un fabricant chinois de processeurs basés sur l'architecture ARM. Il est connu pour fournir des processeurs à bas prix, que l'on retrouve donc en masse dans les tablettes chinoises.

Cela permet également de les retrouver dans des mini-pc comparables au Raspberry Pi, mais généralement moins chers. Les plus connus étants les processeurs A20, R8 et H3 équipant respectivement les cartes BananaPi, CHIP et Orange Pi Zero pour ne citer que celles-ci.

Le support des puces Allwinner dans le noyau Linux

La contre-partie d'un coût faible est que le support logiciel de ces processeurs par le fabricant est très faible, pour ne pas dire mauvais. Le fabricant fournit des sources très modifiées d'un noyau Linux en version 3.4 (sorti en 2012) aux performances médiocres, bourré de failles de sécurité et totalement obsolète.

La communauté Linux-sunxi s'atèle donc à la lourde tâche de développer et maintenir le support de ces cartes dans le noyau Linux et le bootloader U-Boot. Elle permet donc d'utiliser plus de 80 cartes de développement avec la dernière version du noyau Linux (4.15 à ce jour).

Seulement, le support des périphériques varie en fonction des processeurs car il faut en réalité totalement ré-écrire chaque driver selon les standards actuels de développement du noyau.

Qu'est-ce que le VPU ?

Le VPU (Virtual Processing Unit) est un composant matériel du processeur permettant de décoder et encoder des vidéos dans certains formats. Le fait qu'il soit matériel libère le CPU qui peut alors être utilisé à autre chose et surtout il est bien plus efficace car il a été dessiné, au niveau du silicium, pour effectuer cette tâche.

Concrètement, c'est lui qui permet de décoder une vidéo h264 pour l'afficher sur l'écran ou bien, d'encoder le flux vidéo d'une caméra pour l'enregistrer dans un fichier mp4.

Support du VPU

Actuellement, il n'est possible d'utiliser le VPU des puces Allwinner seulement avec la version 3.4 du noyau fournie par Allwinner, ce qui est loin d'être une bonne idée.

Ce que propose de faire Bootlin, est de travailler sur ce sujet avec Maxime Ripard et un stagiaire (déjà contributeur actif de U-Boot et Linux). Mais cela demande du temps et donc de l'argent, c'est pour cela qu'ils font appel à la communauté.

Ils ne partent pas de zéro car en 2016, Florent Revest (également connu pour AsteroidOS) qui faisait sont stage chez Free Electrons a développé le pilote sunxi-cedrus comme preuve de concept, celui-ci est capable de décoder des vidéos au format MPEG2 .

Le projet consiste donc à améliorer le travail réalisé pour l'ajouter au noyau Linux et de lui ajouter le support du décodage h264. Des paliers supplémentaires permettront, s'ils sont atteints, d'ajouter le décodage h265 et encodage h264.

Financement participatif

Pour financer ce projet, Bootlin a placé le palier à 17600 €, défi risqué car à ma connaissance, c'est la première fois qu'une compagnie procède de la sorte pour dévolopper un pilote pour le noyau Linux. Ce travail pourra bénéficier à un grand nombre de personnes ayant acheté des mini-pc bon marché mais qui vieillissent maintenant dans un placard par manque de support logiciel à la hauteur. Mais, est-ce que les personnes ayant dépensé moins de 20 € dans un mini-pc seront prêts à financer un projet sans récompenses en retour (seulement une mention dans un fichier ou un t-shirt Bootin pour une participation de plus de 128 €) ?

Eh bien la réponse a été rapide, le projet a atteint son objectif en moins de deux jours et le premier palier (le support des puces H3 et H5, plus récentes) a été franchis le jour suivant.

Une partie de ce succès est dû à la participation de fabricants de cartes de développement comme Olimex, Pine64 ou encore LibreComputer, avec des récompenses de 1024 à 4096 €.

Mais la campagne n'est pas terminée, il reste encore une trentaine de jour et 2 paliers à passer. Le prochain permettra d'apporter le support de l'encodage en h265 et le dernier permettra de supporter l'encodage vidéo en h264.