Raspberry Pi : faut-il acheter l’ordinateur à 35$ ?

Introduction

Juillet 2011 : une société inconnue annonce qu’elle va proposer un « ordinateur » à 25 $, le Raspberry Pi. Depuis cette annonce fracassante — et il faut bien le dire un rien exagéré —, le succès ne s’est pas démenti pour le Raspberry Pi. Il a fallu attendre février 2012 pour que l’ordinateur soit en vente, au prix de 35 $ au départ, et nous avons reçu notre modèle en juin 2012. Dans ce dossier, nous allons revenir sur le produit et sur les usages possibles.

Image 1 : Raspberry Pi : faut-il acheter l'ordinateur à 35$ ?

Le Raspberry Pi, c’est quoi ? En simplifiant, c’est une carte de développement qui a été très bien vendue par ses créateurs. Proposer une carte de développement à base d’ARM n’était pas nouveau, mais la fondation qui gère le produit a très bien compris les réseaux sociaux et la communication et a réussi à créer une communauté autour d’un produit qui — de prime abord — n’est pas réellement sexy.

Point intéressant, le Raspberry Pi est un produit en constante évolution, il a par exemple été récemment équipé de 512 Mo de RAM, en lieu et place des 256 Mo de notre modèle de test.

Un peu d’histoire

Image 2 : Raspberry Pi : faut-il acheter l'ordinateur à 35$ ?

Le Raspberry est une carte basée sur un SoC ARM, fournie sans boîtier, sans alimentation, sans périphériques. Ce n’est pas très joli, pas très rapide, mais surtout… pas très cher. La fondation vise au départ le monde de l’éducation, et c’est une réussite sur ce point : beaucoup d’écoles anglaises utilisent le Raspberry Pi pour l’apprentissage de la programmation, la distribution Linux proposée par la fondation étant assez intéressante sur ce point.

De notre côté, c’est évidemment le côté « bidouille » qui nous intéresse. Le Raspberry Pi a été rapidement vu comme une carte de développement à bas coût, à placer entre les cartes Arduino, très limitées, et les cartes de développement des différents constructeurs de SoC ARM, plus puissantes mais aussi beaucoup plus onéreuses. Pour le prix d’une Pandaboard, une carte populaire à base d’OMAP4, on peut acheter cinq Raspberry Pi. Si la puissance n’est pas la même, le prix est donc intéressant.

Il y a donc une communauté derrière le Raspberry Pi, ce qui change tout. Des solutions du même type basées sur des SoC plus puissants existent à des prix proches, mais sans la communauté. Et sans communauté, on trouve moins de ressources, moins de solutions à un problème, moins de distributions Linux spécialisées, etc.

Le matériel : le SoC

Image 3 : Raspberry Pi : faut-il acheter l'ordinateur à 35$ ?Parlons technique et regardons ce qu’il y a dans un Raspberry Pi.

Un SoC ARM

Le point central du Raspberry Pi, c’est son SoC, alias System on a Chip. La puce BCM2835 de chez Broadcom est complète : on trouve à l’intérieur un CPU de chez ARM, un core ARM11, un GPU VideoCore IV, un décodeur vidéo performant, la gestion de la vidéo, de la mémoire, des entrées/sorties. Si le GPU est performant et que le décodeur vidéo prend en charge les formats les plus classiques, le CPU est un « problème » : l’ARM11 est un vieux core — il date de 2002 — qui utilise un jeu d’instructions dépassé (ARMv6) et propose un FPU peu performante, qui utilise les instructions VFPv2 de chez ARM.

Le problème du CPU

En dehors de sa puissance limitée, le CPU pose un vrai problème : la compatibilité. La distribution Linux la plus courante pour les SoC ARM est Debian, et elle ne propose que deux ports officiels : une version ARMv5 sans la prise en charge de la FPU et une version ARMv7 (jeux d’instructions des Cortex A) avec la prise en charge de la FPU VFPv3. L’ARM11, avec son jeu d’instructions ARMv6 et sa VFPv2, est entre deux chaises. Des projets de distributions adaptées existent, mais la majorité des logiciels doivent être compilés pour cette version.

La gestion de la vidéo

Pour la vidéo, Broadcom utilise un décodeur vidéo très performant, capable de décoder du H.264 en 1080p High Profile (Level 4.1) sans soucis. La licence couvre aussi l’encodage. La puce est aussi capable de décoder le MPEG2 et le VC1 matériellement, mais il est nécessaire d’acheter une licence, valant 3 € pour le MPEG2 et 1,5 € pour le VC1.

Le GPU

Le VideoCore IV est un GPU Broadcom. Ses performances sont correctes : fillrate de 1 gigapixel/s, 1,5 gigatexel/s et puissance de calcul de 24 gigaflops. Pour comparer, le fillrate est équivalent à celui d’un PowerVR SGX543 et la puissance de calcul — très élevée — proche de ce qu’un PowerVR SGX543MP4 atteint. Elle est aussi à peu près deux fois plus élevée que la version la plus rapide de Tegra 3. Le GPU VideoCore IV est d’ailleurs utilisé dans quelques smartphones récents, comme le Nokia 808.

La mémoire

Le Raspberry Pi propose 256 Mo de mémoire DDR2, cadencée au départ à 400 MHz. Au départ, le modèle de base devait se limiter à 128 Mo, mais finalement toutes les versions sont dotées de 256 Mo. La mémoire est partagée entre le CPU et le GPU et se limite à un bus 32 bits, ce qui limite un peu les performances. Il est possible de gérer l’allocation de la mémoire : 224 Mo pour le système et 32 Mo pour le GPU, 192 Mo/64 Mo ou 128 Mo/128 Mo. La gestion se fait en fonction des usages, mais le second choix est le plus courant.

MAJ : depuis quelques semaines, le Raspberry Pi est livé avec 512 Mo de mémoire vidéo et un firmware permettant de gérer plus finement la quantité de mémoire vidéo allouée.

L’overcloking

Nous allons y revenir, mais le Raspberry Pi s’overclocke. La fréquence de base est de 700 MHz pour le CPU, 250 MHz pour le GPU et 400 MHz pour la mémoire. Il est possible de modifier la fréquence, soit manuellement soit en laissant le système d’exploitation gérer la fréquence.

Le matériel : les I/O

Que trouve-t-on d’autre sur la carte ?

Deux ports USB 2.0, d’abord. Attention, ils sont connectés sur un hub USB 2.0 interne, le SoC ne gérant en pratique qu’un seul port. Sur les premières versions, ils étaient limités à 100 mA par connecteur, suffisant pour un clavier ou un périphérique alimenté, mais les dernières versions n’ont plus cette limitation. Il est donc possible d’envoyer 500 mA par connecteur, tout du moins si l’alimentation est capable de les fournir.

Ensuite, une prise micro USB, qui sert de connecteur d’alimentation. Il est recommandé d’utiliser une prise USB capable de fournir 700 mA (3,5 W) au minimum, ce que propose la majorité des chargeurs de smartphones.

Image 4 : Raspberry Pi : faut-il acheter l'ordinateur à 35$ ?On trouve trois sorties vidéo : une sortie analogique composite (compatible PAL et NTSC, mais a priori pas SECAM), une sortie HDMI 1.4 capable de travailler en 1080p (1 920 x 1 200 au maximum), de transmettre le son et — chose rare — compatible CEC et enfin une sortie « DSI » (Display Serial Interface) utilisable avec certains écrans LCD dédiés au monde de l’embarqué.

Pour l’audio, il y a une sortie jack 3,5 mm et la possibilité de transmettre le son en HDMI, en numérique.

Le stockage s’effectue sur une carte SD(HC) connectée directement sur le SoC. Les performances restent faibles, l’interface n’étant pas UHS : 25 Mo/s au maximum.

Sur la version B, la seule vendue actuellement, on trouve aussi un connecteur RJ45. Le contrôleur Ethernet est capable de travailler à 100 mégabits/s au maximum et est interfacé en USB 2.0 sur le hub interne. Attention donc, les performances peuvent pâtir de ce partage : l’USB 2.0 permet dans la pratique d’atteindre environ 280 mégabits/s et utiliser une clé USB rapide et l’Ethernet risque donc de poser des problèmes.

Enfin, on trouve des connecteurs de type GPIO, très utilisés pour la domotique, la connexion à des périphériques simples, etc. On trouve 8 pins pour le GPIO, de l’UART (bus série), un bus I2C et un bus SPI, utilisable notamment pour connecter des cartes SD. Enfin, des pins sont dédiés à l’alimentation et il est même possible d’alimenter directement le Raspberry Pi via les pins en question.

Notons enfin que le connecteur MIPI utilisé pour la troisième sortie vidéo peut aussi être utilisé en tant qu’entrée vidéo, notamment pour une caméra. C’est encore à l’état de projet, mais la fondation qui gère le projet compte proposer un capteur vidéo compatible dans le futur.

Les différentes versions

La fondation propose plusieurs versions de la carte. Il y a d’abord une différence entre le modèle A et le modèle B, ensuite plusieurs versions de la carte B.

Modèle A

Le modèle A n’est pas encore en vente, mais reste toujours prévu. La carte devrait être moins onéreuse — environ 25 $ —, mais proposer quelques options en moins. On passera de deux ports USB à un seul sur la carte et le connecteur RJ45 ne sera plus de la partie. Le gain viendra donc de la suppression du hub USB interne et du contrôleur USB vers Ethernet. La carte devrait par contre bien proposer 256 Mo de RAM, alors que la première idée de la fondation était de limiter la carte à 128 Mo.

Modèle B

Image 5 : Raspberry Pi : faut-il acheter l'ordinateur à 35$ ?Le modèle B, actuellement en vente, a évolué par petites touches depuis le début de la commercialisation. Une V2 est d’ailleurs sortie récemment, nous en avons parlé. Produite en Europe, cette version 2 intègre des trous pour un montage dans un boîtier, un connecteur supplémentaire permettant de faire un reset de la carte et quelques modifications au niveau de la gestion de la norme HDMI ainsi qu’au niveau de l’alimentation des ports USB.

Linux, Risc OS, etc.

Image 6 : Raspberry Pi : faut-il acheter l'ordinateur à 35$ ?

Pour le système d’exploitation, on trouve essentiellement des distributions Linux, plus ou moins adaptées. Certaines sont compilées avec le jeu d’instructions ARMv5 (plus anciens), d’autres utilisent ARMv6, etc. Dans une grande partie des cas, c’est une distribution Debian, souvent utilisée pour les distributions qui fonctionnent sur des puces ARM, qui est choisie.

La plus intéressante, nous en avons déjà parlé, est Raspbian. Elle est optimisée pour le Raspberry Pi et est compilée pour utiliser le jeu d’instructions du processeur ARM11 (ARMv6) ainsi que la FPU de type VFPv2. Beaucoup de distributions sont encore basées sur le port ARMv5 qui utilise l’ancien jeu d’instructions et émule les appels à la FPU logiciellement, ce qui a un impact non négligeable sur les performances. 

D’autres systèmes sont portés ou en cours de portage. Notons en vrac Android 4.0, Firefox OS, Open webOS, Google Chrome OS, FreeBSD ou RISC OS.

Windows RT

Un mot sur Windows RT, la question étant assez régulière dans nos forums. Si la prochaine version de Windows existe sur les plateformes ARM, elle ne tournera pas sur le Raspberry Pi. La première raison, c’est que Microsoft ne compte pas vendre Windows RT aux utilisateurs. Les autres sont plus techniques : Windows RT demande un processeur ARMv7 récent (OMAP4, Snapdragon S4, Tegra 3, etc.), un GPU compatible avec DirectX 9 et le « Feature Level 9.3 » ainsi qu’une bonne quantité de RAM. Le Raspberry Pi n’est compatible avec aucune des recommandations matérielles de Microsoft.

L’overclocking

Image 7 : Raspberry Pi : faut-il acheter l'ordinateur à 35$ ?

Point intéressant pour les bidouilleurs, il est possible d’overclocker le Raspberry Pi. Par défaut, les fréquences sont de 700 MHz pour le core ARM11, 250 MHz pour le GPU et 400 MHz pour la mémoire vive. Comme nos tests l’avaient montré, il est assez simple d’overclocker manuellement la carte, simplement en éditant des fichiers textes utilisés lors du démarrage du système d’exploitation.

Depuis quelques semaines, il est aussi possible d’automatiser l’overclocking, à la manière du Turbo de certains processeurs. L’overclocking en question n’est pas déterministe — certaines cartes montent plus haut en fréquence que d’autres — et les résultats varient donc en fonction des modèles. Le fonctionnement est simple : les valeurs sont fixées et le système gère ensuite la fréquence en fonction de la température de la puce. Il est par ailleurs possible de monter un radiateur sur le SoC pour améliorer la dissipation.

Attention à un point : si l’overclocking automatique augmente la tension d’alimentation du SoC — ce qui joue par ailleurs sur l’autonomie —, c’est une chose à éviter en overclocking manuel : la garantie serait perdue et il semble que l’augmentation manuelle de la tension soit enregistrée dans des registres du SoC. 

Les performances ?

Sur notre modèle, sans augmenter la tension ni améliorer le refroidissement, nous avons atteint 910 MHz pour le CPU, 375 MHz pour le GPU et 480 MHz pour la mémoire. Il est possible de monter un plus haut — 980 MHz pour le CPU, 400 MHz pour le GPU et 500 MHz pour la mémoire — mais soit la machine est instable soit il est impossible d’overclocker les trois composants simultanément.

Un Media Center ?

Image 8 : Raspberry Pi : faut-il acheter l'ordinateur à 35$ ?

Vu l’efficacité de la carte en décodage vidéo, un des usages les plus courants est le « Media Center ». Voici nos impressions.

Le choix du système

Pour tester le Raspberry Pi en tant que Media Center, nous avons choisi une distribution dédiée : RaspBMC. RaspBMC s’installe sur une carte SD (2 Go au minimum) et nécessite une connexion à Internet. L’installation est simple, mais comme elle dépend fortement du système, nous vous conseillons d’aller vérifier directement sur le site officiel. Si le premier démarrage est un peu long, le système est très réactif une fois initialisé. Il faut juste faire attention à un point : les plugins de XBMC. Comme le Raspberry Pi a peu de RAM — 256 Mo — et qu’une partie est réservée pour le GPU (128 Mo avec RaspBMC), on arrive vite aux limites de la puce.

Ce qui marche

Globalement, nous avons pu lire la majorité de nos vidéos de tests, en 1080p. Nous avons choisi les différentes versions de Big Buck Bunny et RaspBMC a lu toutes les vidéos sauf une : celle encodée en Theora, un codec assez rare. Pour peu que vous encodiez vos vidéos en H.264 ou dans un codec récent (évitons le DivX 3), il n’y a aucun souci. Les vidéos sont fluides en 1080p, les options de configurations nombreuses et l’interface claire. Il est possible de lire les vidéos depuis une clé USB ou depuis un partage réseau en NFS. Petit point qui va plaire aux utilisateurs d’iOS, RaspBMC est compatible AirPlay et il est possible d’envoyer une vidéo sur le téléviseur d’une seule pression sur l’écran. C’est un peu moins réactif qu’avec un Apple TV et le mode miroir n’est pas disponible, mais ça fonctionne. Point évidemment très intéressant, la consommation : on ne dépasse pas 3,5 W en charge au niveau de la carte, même avec une clé USB de grande capacité.

Commander le Media Center

Malgré tout, tout n’est pas parfait : contrairement à un « vrai » Media Center, il n’y a pas de télécommande. Si votre téléviseur est compatible — c’est sûrement le cas s’il a moins de 3 ans —, il est possible d’utiliser la technologie CEC, une fonction de la norme HDMI qui permet de transmettre les commandes à travers le câble. Il est aussi bien évidemment possible d’utiliser un clavier ou une souris, mais l’ergonomie en prend un coup. Pour les amateurs, il existe aussi des applications pour les smartphones et les tablettes (Android et iOS) qui permettent de prendre le contrôle de XBMC.

Avec les dernières versions de la distribution, le processeur est overclocké automatiquement et il est même (presque) possible de lire un DVD. l’interface est moins pataude qu’au début du développement, mais on reste évidemment assez loin d’un boîtier dédié de bonne qualité sur ce point.

Jouer ?

Image 9 : Raspberry Pi : faut-il acheter l'ordinateur à 35$ ?

Pour le fun, nous avons ressorti un vieux jeu de nos cartons, Quake III Arena. Sorti en 1999, le moteur du FPS de John Carmack est open source — il faut récupérer les binaires d’un CD original — et a été porté sur diverses architectures, donc le jeu d’instructions d’ARM.

Préparer le Raspberry Pi

Il va d’abord falloir un système Debian fonctionnel, et configuré correctement. Première chose à faire, régler le ratio mémoire vive/mémoire vidéo. Quake 3 fonctionne de façon efficace avec 64 Mo pour le GPU et 192 Mo pour le système. Si vous n’êtes pas dans ce mode, c’est le moment d’aller adapter les fichiers .elf dans le répertoire /boot

Avant d’installer les sources, il va falloir installer quelques utilitaires et vérifier qu’il reste de la place pour les binaires du jeu. Il faut compter 550 Mo pour la version complète du jeu, un peu moins de 100 Mo pour la démo, qui se trouve sur Internet assez facilement.

Deux utilitaires à installer, s’ils ne le sont pas déjà : git et wget.

sudo apt-get install git
sudo apt-get install wget

Ensuite, les outils de compilation.

sudo apt-get libsdl1.2-dev
sudo apt-get build-essential

Maintenant, nous allons récupérer les sources du jeu.

git clone https://github.com/raspberrypi/quake3.git

Une fois que c’est fait, il faut aller éditer le fichier build.sh et le modifier pour une compilation sur le Raspberry Pi même. Les sources sont prévues pour une compilation depuis une autre machine, mais il est plus simple — même si plus lent — de le faire directement depuis la carte.

Il faut modifier les lignes suivantes :

Ligne 8 : ARM_LIBS=/opt/vc/lib
Ligne 16 : INCLUDE_DIR=”/opt/vc/include”
Ligne 19 : #CROSS_COMPILE=bcm2708-

Maintenant que tout est prêt, il suffit de compiler le jeu en tapant la commande suivante, et attendre.

./build.sh

Et là on attend. On attend. On se documente sur le ARM11. On se rend compte que c’est lent. On cherche une souris. Un tapis de souris Everglide. Et on attend.

Une fois que c’est fait, il faut créer un dossier pour le jeu (Q3A par exemple). Il faut copier les fichiers ioq3ded.arm et ioquake3.arm dans ce dossier.
Dans un sous-répertoire baseq3, il faut copier cgamearm.so, qagamearm.so et uiarm.so.
Dans un autre sous-répertoire lib, il faut copier libSDL.so, libSDL-1.2.so.0 et libSDL-1.2.so.0.11.3.

Ensuite, il faut récupérer les fichiers pak0.pk3 à pak8.pk3 d’un CD d’installation de Quake 3 et les copier dans le dossier baseq3.

Enfin, il faut récupérer des fichiers de configurations avec la commande suivante et les copier dans le dossier baseq3.

wget http://simon.lc/files/rpiquake3cfg.zip && unzip rpiquake3cfg.zip

Une fois que c’est fait, il est conseillé de quitter l’interface graphique (dans certains cas elle nécessite trop de ressources), de se rendre dans le dossier Q3A et de taper la commande suivante :

sudo ./ioquake3.arm

Normalement, si tout s’est bien passé (c’était notre cas), le jeu va se lancer. Il est configuré pour obtenir des performances élevées (environ 60 fps en 1080p dans notre cas) au détriment des graphismes.

Pour aller un peu plus loin, il est possible de configurer le jeu via sa console intégrée. Normalement, elle est mappée sur la touche ~, généralement obtenue avec le raccourci alt gr + 2 sur un clavier français.

Il faut taper la commande suivante pour changer de configuration :

exec low.cfg

Dans notre cas, plusieurs profils sont installés : low (rapide), high (lent), fps (très rapide) et celui de base.

Pour mesurer les performances, il faut taper deux commandes :

timedemo 1
demo four


Ces deux commandes lancent la démo et donnent ensuite le nombre de FPS.

Des dizaines de projets

Ce qui est intéressant avec le Raspberry Pi, c’est bien évidemment la multitude de possibilités et d’usages. Même si la puissance est limitée, le Raspberry Pi est tout de même capable de faire énormément de choses, et sans les limitations classiques des cartes de prototypage comme l’Arduino.

Voici quelques exemples de choses que nous avons testées, ainsi que quelques exemples de montages effectués par des utilisateurs.

Dans notre cas, nous avons utilisé le Raspberry Pi pour deux choses. La première a été de récupérer le flux vidéo d’une caméra de surveillance Axis, capable d’envoyer de la vidéo encodée en H.264 via le protocole RTSP. La carte est parfaitement capable de récupérer le flux et de le lire sans saccades. Il est même possible en théorie d’utiliser des outils open source comme Open RTSP pour enregistrer directement le flux sur une carte SD ou une clé USB. 

Image 10 : Raspberry Pi : faut-il acheter l'ordinateur à 35$ ?Le second est l’utilisation du Raspberry pour envoyer des SMS. En utilisant un vieux téléphone — ici un Sony Ericsson T68i —, il est en effet possible d’utiliser les commandes AT pour communiquer avec le téléphone et envoyer des SMS. Nous utilisons pour le moment un câble USB vers série (RS232) pour la communication avec le téléphone, mais nous sommes en train de travailler sur une connexion directe entre le Raspberry Pi et le téléphone via les connecteurs présents sur la carte. Attention, s’il est parfois possible d’utiliser les commandes AT sur certains appareils récents, la connexion série directe est rarement présente… Il est aussi possible d’utiliser le téléphone en tant que modem GPRS, mais nous sommes toujours en train d’investiguer sur ce point.

Les projets

Il y a de nouveaux projets tous les jours, mais il y en a deux qui nous tapés dans l’oeil récemment.

Le premier est l’intégration de la carte dans des lunettes, à la manière du projet Google Glass. L’ensemble est autonome et permet de travailler directement sur un écran (très) proche des yeux.

Le second est l’intégration dans une poignée de reflex, ce qui permet d’envoyer directement les photos sur un hébergement dans le cloud, via le Wi-Fi.

Image 11 : Raspberry Pi : faut-il acheter l'ordinateur à 35$ ?Image 12 : Raspberry Pi : faut-il acheter l'ordinateur à 35$ ?

Que conclure ?

Comment conclure ? Pourquoi conclure ? Le projet Raspberry Pi est en perpétuelle évolution, la communauté est de plus en plus riche, de plus en plus impliquée, de plus en plus grande. 

Nous espérons que ce dossier vous aura montré les points forts et les points faibles du Raspberry Pi, mais surtout vous aura donné envie d’en acheter un pour lancer un projet, apprendre la programmation ou concrétiser une idée…

En attendant, amusez-vous. Et dites-vous bien qu’il y a pas de limites : le Raspberry Pi est même allé… dans l’espace.

Image 13 : Raspberry Pi : faut-il acheter l'ordinateur à 35$ ?