Première rédaction de cet article le 17 juillet 2012
Dernière mise à jour le 9 octobre 2012
Depuis les premières annonces, il a déjà généré beaucoup d'articles et de messages. Poussé par un marketing vigoureux, le Raspberry Pi commence à être livré, au compte-gouttes. Les premiers retours d'expérience apparaissent donc. Voici le mien.
Le Raspberry Pi est un ordinateur, de très petit format. Le modèle B que j'ai acheté a un processeur ARM v6 à l'intérieur d'un SoC Broadcom BCM2835, 256 Mo de RAM (attention, le processeur graphique en prend une bonne partie), et plusieurs connecteurs (HDMI, USB, Ethernet, etc). C'est donc un petit engin. Ne comptez pas compiler LibreOffice dessus.
Il est livré sans boîtier ce qui permet de tout voir mais empêche de l'utiliser en déplacement (si vous cherchez un boîtier, regardez cette discussion sur StackExchange) :
Commandé chez Farnell/Element14 (on peut aussi aller chez RS Online mais je n'ai pas testé), il m'a coûté 32 livres. C'est donc un des ordinateurs les moins chers du marché mais attention : pour atteindre ce prix, il est vraiment vendu « sec ». Il n'y a même pas d'alimentation (et, comme il n'a pas de batterie, il faut une en permanence). Il faut donc absolument prévoir un chargeur USB (pas un PC, un vrai chargeur, débitant suffisamment pour le Pi) et une carte SD (le seul espace de stockage du Pi). Il faut aussi, de préférence, un clavier USB et une télévision avec un câble HDMI. On peut se débrouiller sans, via le réseau mais si un problème se pose, déboguer en aveugle est pénible. Donc, profitez des délais de livraison très élevés pour rassembler des accessoires. Notez que le Pi est souvent utilisé par des passionnés d'électronique et que, lorsque vous signalerez un problème sur un forum, la première réponse sera souvent « tu as vérifié la tension à la sortie du chargeur ? » Donc, un voltmètre ne sera sans doute pas inutile non plus.
Tout est bien branché ? Il faut aussi choisir un système d'exploitation (aujourd'hui, seulement les systèmes basés sur Linux) et le mettre sur la carte SD. Parmi les images officielles, j'ai testé Raspbian (fondé sur Debian) et Arch Linux (toutes les deux téléchargées en BitTorrent). Ensuite, on copie les images sur la carte SD avec dd (très bonnes explications en ligne). Attention en branchant la carte SD, l'emplacement est fragile et la carte sort facilement, empêchant le Pi d'y accéder.
Alors, allons-y, branchons le chargeur, le Pi démarre (pas de bouton
On/Off). On voit défiler les messages de démarrage traditionnels de
Linux sur la télé. Vous pouvez trouver ici
tous les messages de
démarrage. Il acquiert une adresse IP
par DHCP ou en
RA. L'image Raspbian officielle actuelle n'a pas
IPv6 par défaut, il faudra l'activer en éditant
/etc/modules
pour ajouter
ipv6
. Ensuite, on note que SSH est bien démarré :
% sudo nmap 192.168.2.38 Starting Nmap 5.00 ( http://nmap.org ) at 2012-07-06 22:26 CEST Interesting ports on 192.168.2.38: Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 111/tcp open rpcbind MAC Address: B8:27:EB:BA:90:94 (Unknown) Nmap done: 1 IP address (1 host up) scanned in 0.42 seconds
On peut alors se connecter (la documentation de l'image utilisée indique le mot de passe). Une fois connecté en SSH, on peut admirer le résultat :
% uname -a Linux raspberrypi 3.1.9+ #90 Wed Apr 18 18:23:05 BST 2012 armv6l GNU/Linux % df -h Filesystem Size Used Avail Use% Mounted on tmpfs 94M 0 94M 0% /lib/init/rw udev 10M 136K 9.9M 2% /dev tmpfs 94M 0 94M 0% /dev/shm rootfs 1.6G 1.2G 298M 80% / /dev/mmcblk0p1 75M 28M 47M 37% /boot
Et s'il ne démarre pas ? Il faut consulter l'excellent guide de dépannage et examiner les LED qui vous renseignent sur les causes du problème.
L'image Arch Linux officielle a IPv6 et SSH
par défaut. Il me semble que l'image Arch Linux marche très
bien mais Arch Linux n'est pas prévu pour les débutants Unix. À noter que, par défaut, elle n'utilise que 128 Mo de mémoire (192 pour la Debian, soit le maximum car
le processeur graphique utilise le reste). Pour avoir plus, il faut copier le
fichier /boot/arm224_start.elf
en
/boot/start.elf
, et redémarrer, pour bénéficier de toute la mémoire (moins ce que garde le GPU.
À noter que le Raspberry Pi, toujours pour comprimer les coûts, n'a pas d'horloge stable. Au démarrage, il retourne au 1er janvier 1970. IL faut donc définir l'heure au démarrage, le plus simple étant de se synchroniser à un serveur NTP.
Bon, mais à part à taper uname et df, à quoi sert cet engin ? D'abord, un message important : si vous voulez une solution prête à l'emploi, allez voir ailleurs. Le Pi n'est pas un truc tout fait qu'on met en marche et qu'on utilise. C'est une plate-forme pour des expérimentations, du développement, de l'apprentissage (son faible coût permet de ne pas hésiter à bricoler). J'ai testé trois utilisations possibles :
Pour le premier usage, l'intérêt du Pi est son faible coût, qui le rend accessible aux jeunes avec peu d'argent de poche, par exemple. Toutefois, si on a déjà un PC, le Pi n'apporte pas grand'chose en plus (pour les programmeurs en C, il est toutefois utile d'avoir une autre plate-forme matérielle, pour s'habituer à écrire du code portable). Et, si le Pi est le premier ordinateur qu'on a, il faut prévoir la télé, les câbles et le clavier (ce qui renchérit sérieusement le prix) et programmer en bloquant la télé familiale, ce qui sera peut-être peu apprécié. (Il faut aussi commander des cartes SD pré-remplies, ou bien les faire faire par un copain ayant un ordinateur.)
Le Pi a tous les logiciels Unix souhaitables, par exemple le
compilateur gcc. Pour travailler avec un
langage plus moderne, j'ai fait des essais en
Go. L'un des deux compilateurs Go existants,
gc, peut produire du code pour les processeurs
ARM. Attention, cela ne marche pas du premier
coup (illegal instruction dans
math/rand
) pour des raisons expliquées dans la
documentation de Go. Bref, il faut ajouter la variable d'environnement
GOARM=5
avant de compiler et, cette fois, tout
marche.
Mais rappelez-vous que le Pi est lent : alors que gc compile quasiment toujours instantanément sur un PC de bureau normal, ici, les temps de compilation sont sensibles. Cela laisse le temps de réfléchir.
Autre utilisation possible du Pi : la surveillance de réseau. Là, pas besoin de clavier et d'écran, et la faible consommation électrique du Pi permet de le laisser branché en permanence, sans remords écologiques. L'ARM est un vrai processeur moderne, on peut faire tourner des gros programmes comme Icinga. Ce dernier compile sans problème et tourne ensuite, testant les services qu'on veut tester et signalant les problèmes via son interface Web ou par courrier. Cela me semble, pour l'instant, l'utilisation la plus prometteuse du Pi, dans mon cas. J'y ai consacré un article. (Voir aussi une discussion sur le fonctionnement du Pi 24h/24.)
Troisième utilisation que j'ai testé, le multimédia. Le Pi est,
malgré ses faibles capacités quantitatives, normalement capable de
toutes les activités multimédia modernes, grâce à son accélérateur
graphique. Oui, mais voilà, peu de logiciels savent l'utiliser. C'est
en grande partie pour des raisons légales (il faut signer un
NDA avec Broadcom pour
avoir la documentation du GPU). Ainsi,
si on lance X11 (startx
), puis
MPlayer sur une vidéo, on voit bien son film
mais sans son et avec un débit irrégulier. (On peut apparemment lancer
MPlayer sans X11 avec un truc comme mplayer -vo sdl -ao sdl
-framedrop -lavdopts lowres=1
mais je n'ai pas testé.) Un
témoignage typique trouvé sur le réseau donne une idée des difficultés
pratiques : « I googled, followed advice and loaded the
snd_bcm2835 kernel module. Sound now worked on the 3.5 mini jack
output, but not on the TV yet. And mplayer had completely stopped
playing video. It wasn't before I had added the line hdmi_drive=2 to
my /boot/config.txt file (see the Troubleshooting page) that I could
actually hear something on TV. But mplayer played the video even
slower. ». (Pour le concurrent de MPlayer,
vlc, voir cette
question sur StackExchange.)
Le conseil donné en général est donc d'utiliser un ensemble
logiciel complètement conçu pour le multimédia. Le plus souvent cité
est OpenELEC, que j'ai donc testé après Debian
et Arch Linux. OpenELEC est un système d'exploitation libre conçu pour faire
tourner un media center,
chargé de piloter son et image. Fondé sur
Linux, équipé du logiciel
XBMC, c'est encore assez expérimental, de mon
expérience (j'ai testé la version devel-20120704203304-r11493,
peut-être pas encore assez sèche, j'aurais peut-être dû rester à la
version 1, stable). L'installation, bien
documentée, se passe bien. Leur outil partitionne la carte SD
automatiquement (contrairement à ce qui se passe pour Debian et
Arch Linux, voir plus loin). Agacement : par défaut, lorsqu'on se
connecte en SSH, on récupère une invite avec
des couleurs inutilisables sur un fond blanc. Il faut se connecter
depuis un terminal avec fond noir pour voir quelque chose et ajouter
un ~/.profile
(attention, pas un
.bash_quelquechose
, le
shell n'est pas
bash) contenant :
PS1='\h \w \$ '
On se reconnecte et on peut voir quelque chose.
Il y a deux interfaces (en plus du shell SSH), une interface Web (très boguée, j'ai vite renoncé) et l'interface sur la télé, qui propose les menus classiques des media centers, accès aux vidéos, à des widgets comme la météo, etc. Les fichiers AVI et MP3 sont joués sans problème et avec une bonne qualité (connexion HDMI avec mon téléviseur Samsung).
Par contre, il y a trop de problèmes agaçants pour songer à remplacer les menus de ma Freebox par ceux de XBMC :
Bref, comme je l'ai signalé, c'est une plate-forme de développement, pour l'instant, pas encore prête à l'emploi mais du travail intéressant en perspective pour les hackers.
À propos de hackers, ceux-ci sont en général très sensibles (et à juste titre) aux questions de liberté, notamment à celle de pouvoir faire tourner le logiciel de son choix et le modifier comme on veut. Le Raspeberry Pi est-il « libre » ? La question n'est pas simple mais on peut certainement dire qu'il est moins libre que son concurrent (concurrent dans l'esprit des gens : les deux plate-formes n'ont pas du tout les mêmes caractéristiques techniques) Arduino. Les plans de ce dernier sont tous publics alors que le Pi repose sur un circuit Broadcom dont l'interface externe n'est pas officiellement documentée. Je n'ai pas essayé l'Arduino (les modèles basés sur ce concept sont plus chers et plus difficiles à obtenir que le Pi).
Conscient de ce problème, les responsables de Raspberry Pi ont
annoncé
des ouvertures mais qui semblent très
insuffisantes. Conséquences pratiques de ce problème d'un matériel non
complètement ouvert : où est-on bloqué dans le bricolage sur le Pi ?
On peut apparemment compiler son propre noyau
(voir http://www.bootc.net/projects/raspberry-pi-kernel/
et http://elinux.org/RPi_Kernel_Compilation
) mais je
ne sais pas si on ne doit pas inclure des éléments non-libres (ils
sont distribués en https://github.com/raspberrypi/firmware
). Si
c'est le cas, et cela semble vraisemblable, porter, par exemple,
FreeBSD sur le Pi ne sera pas possible. (Il
existe au moins un
projet pour FreeBSD, avec des indications que ça
avance, et un autre
projet pour NetBSD.)
Enfin, un peu de technique avec un problème des images officielles
Debian et Arch Linux. Elles supposent une carte SD de 2 Go et incluent
donc une table de partition inadaptée. Le cas
est connu et
documenté. On peut réparer cela, soit après le démarrage du
système (parted
ou cfdisk
pour adapter la table des partitions, puis redémarrer, puis formater
la nouvelle partition avec mke2fs, puis la monter), soit
au moment où on a écrit sur la carte SD (attention à ne pas lancer le
mke2fs sur une partition de son ordinateur, dans ce cas...). On peut aussi, au lieu de
créer une nouvelle partition sur l'espace libre, agrandir la partition
racine avec un coup de resize2fs /dev/mmcblk0p2
.
Un avertissement, maintenant. Pour des raisons de coût, le Pi a été
très limité. Pas d'alimentation digne de ce nom, pas de mémoire avec
correction d'erreurs, etc. Cela veut dire que tout problème matériel
va se manifester par des bogues apparemment aléatoires. Ainsi, un
problème de tension peut apparemment entraîner
une corruption
des données. Un problème de RAM peut
faire planter le Pi aléatoirement. Enfin, les cartes
SD ne sont pas réputées pour
leur fiabilité. Bref, faites des sauvegardes. Un
moyen simple de copier la carte SD sur un PC Unix est dd
bs=1M if=/dev/sdb | gzip -9 > backup-pi-$(date
+"%Y-%m-%d").img.gz
avec sdb
à
remplacer par le nom du périphérique dans votre cas.
Voilà, une chose est sûre, le Pi vous permettra de passer des tas de soirées passionnantes, que ce soit pour un été pluvieux ou pour un hiver glacial, et de discuter avec plein d'autres bricoleurs. Quelques lectures :
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)