Catégories
Open-source Planet-libre raspberry

Support de présentation SophiaConf 2013 – Raspberry Pi

Pas trop le temps de bloguer en ce moment entre le boulot, le développement de la prochaine version de Glances et… la préparation de la conf de présentation du Raspberry Pi que j’ai faite jeudi dernier dans le cadre des SophiaConf 2013.

Voici donc le support de présentation que j’ai utilisé et qui est bien sûr ré-utilisable comme tout ce que je publie sur ce site (licence CC BY 3.0).

Elle est disponible à partir de ce lien ou en cliquant sur l’image ci-dessous (j’ai utilisé le framework de présentation Shower).

Raspberry - SophiaCOnf 2013

Pour avoir une version PDF, il suffit d’ouvrir la présentation dans votre navigateur Web et de faire imprimer vers PDF !

Catégories
Hardware Open-source Planet-libre raspberry

Test de la caméra Raspberry Pi 5M

Raspberry propose depuis peu et pour moins de 25€ une caméra dédiée à sa gamme Pi. Cette caméra de quelques grammes se connecte à une Raspberry Pi (model A ou B) à travers une interface CSi v2 (MIPI camera interface) dédiée. Grâce à Kubii (fournisseur Farnell en France) j’ai pu obtenir rapidement un de ces caméra que nous allons tester dans ce billet.

Découverte de la (petite) bête

Avec un capteur d’une résolution native de 5 mégapixels (5M) et au niveau optique d’une lentille de focalisation fixe, la caméra peut servir d’appareil photo (résolution maximale de 2592 par 1944 pixels) ou de caméra vidéo (format HD juqu’à 1080p). Son poids est impressionnant car elle ne pèse pas plus de 4 grammes pour une dimension de L25 l20 H9 (en millimètre).

Raspberry Camera 5M 1.3

Installation de la caméra

On commence par brancher la caméra sur l’interface CSi. Il faut y aller doucement, sans forcer comme un bourrin. Je vous conseille de visualiser la vidéo suivante:

Il faut disposer d’une distribution Raspbian à jour avant de pouvoir activer la caméra:

sudo apt-get update && sudo apt-get upgrade

Puis on lance ensuite l’utilitaire raspi-config ou un nouveau menu devrait vous permettre d’activer la caméra (choix numéro 5 – Activate the camera):

sudo raspi-config

Un reboot plus tard vous pouvez commencer à jouer avec la caméra

Utilisation de la caméra pour prendre des photos

Première surprise un peu désagréable: la caméra n’est pas reconnue comme un device vidéo standard (accessible via /dev/videoX). En l’état actuel des choses on ne peut donc pas l’utiliser avec une bibliothèque comme GStreamer.

Pour utiliser la caméra comme appareil photo, il faut donc passer par un utilitaire installé de base dans Raspbian: Raspistill (les sources sont disponibles sur Github).

Ce logiciel est utilisable en ligne de commande.

Prenons donc notre première « photo » en résolution maximale et à main levé (2592 par 1944 pixels):

raspistill -o image001.jpg

RaspberryCamera

La même photo avec l’option de stabilisation activée (pas de grosse différence mais je ne bougeais pas):

raspistill -ev -o image002.jpg

RaspberryCamera

Il est possible de désactiver la compression JPEG en utilisant le tag –raw (mais attention la taille des images passes à plus de 5 Mo):

raspistill --raw -o image002.jpg

Voir le résultat ici.

Il est bien sûr possible de fixer la résolution avec les tag -h et -w. Par exemple une photo en 1280×1024:

raspistill -w 1280 -h 1024 -o image003.jpg

RaspberryCamera

Utilisation de la caméra pour capturer des vidéo

Tout comme pour les photos, il faut passer par le l’utilitaire Raspivid (les sources sont disponibles sur Github). Le logiciel va permettre de générer des vidéos au format H.264.

Capturons notre première vidéo en full HD (1080p) pendant  10 secondes (-t 10000):

raspivid -t 10000 -o video001.h264

La vidéo est stocké au format H.264 dans le fichier video001.h264. Pour lire cette vidéo sur votre Raspberry, vous pouvez utiliser la commande omxplayer qui va utiliser le GPU interne et afficher la vidéo d’une manière fluide sans consommation CPU.

omxplayer video001.h264

On peut voir que la qualité du capteur est au rendez-vous, la vidéo est lumineuse et fluide, comparable à ce que l’on peut obtenir avec un bon smartphone.

Pour activer la prévisualisation de la vidéo dans un coin de l’écran (position 0x0 et taille de 640×480) on peut utiliser l’option -p:

raspivid -t 10000 -p 0,0,640,480 -o video0012.h264

Aller plus loin ?

La documentation officielle des deux commandes.

Raspistill

raspistill
==========

--width,	-w		Set image width <size>
--height,	-h		Set image height <size>
--quality,  -q		Set jpeg quality <0 to 100>

Quality 100 is almost completely uncompressed. 75 is a good all round value

--raw,	-r		Add raw bayer data to jpeg metadata

This option inserts the raw Bayer data from the camera in to the JPEG metadata

--output	-o		Output filename <filename>.

Specify the output filename. If not specified, no file is saved. If the filename is '-', then all output is sent to stdout.

--verbose,	-v		Output verbose information during run

Outputs debugging/information messages during the program run.

--timeout,	-t		Time before takes picture and shuts down.

The program will run for this length of time, then take the capture (if output is specified). If not specified, this is set to 5 seconds

--timelapse,-tl		Timelapse mode.

The specific value is the time between shots in milliseconds. Note you should specify %d at the point in the filename where you want a frame count number to appear. e.g.

	-t 30000 -tl 2000 -o image%d.jpg

will produce a capture every 2 seconds, over a total period of 30s, named image1.jpg, image2.jpg..image15.jpg.

--thumb,	-th		Set thumbnail parameters (x:y:quality)

Allows specification of the thumbnail image inserted in to the JPEG file. If not specified, defaults are a size of 64x48 at quality 35.

--demo, 	d	 	Run a demo mode <milliseconds>

This options cycles through range of camera options, no capture is done, the demo will end at the end of the timeout period, irrespective of whether all the options have been cycled. The time between cycles should be specified as a millisecond value.

--encoding,	-e		Encoding to use for output file

Valid options are jpg, bmp, gif and png. Note that unaccelerated image types (gif, png, bmp) will take much longer to save than JPG which is hardware accelerated. Also note that the filename suffix is completely ignored when encoding a file.

--exif,	-x		EXIF tag to apply to captures (format as 'key=value')

Allows the insertion of specific exif tags in to the JPEG image. You can have up to 32 exif tge entries. This is useful for things like adding GPS metadata. For example, to set the Longitude

	--exif GPS.GPSLongitude=5/1,10/1,15/100

would set the Longitude to 5degs, 10 minutes, 15 seconds. See exif documentation for more details on the range of tags available; the supported tags are as follows.

Raspivid

raspivid
========

--width,	-w		Set image width <size>

Width of resulting video. This should be between 64 and 1920.

--height,	-h		Set image height <size>

Height of resulting video. This should be between 64 and 1080.

--bitrate,	-b		Set bitrate. 

Use bits per second, so 10MBits/s would be -b 10000000. For H264, 1080p a high quality bitrate would be 15Mbits/s or more.

--output	-o		Output filename <filename>.

Specify the output filename. If not specified, no file is saved. If the filename is '-', then all output is sent to stdout.

--verbose,	-v		Output verbose information during run

Outputs debugging/information messages during the program run.

--timeout,	-t		Time before takes picture and shuts down.

The program will run for this length of time, then take the capture (if output is specified). If not specified, this is set to 5seconds

--demo, 	d	 	Run a demo mode <milliseconds>

This options cycles through range of camera options, no capture is done, the demo will end at the end of the timeout period, irrespective of whether all the options have been cycled. The time between cycles should be specified as a millisecond value.

--framerate, 	-fps  Specify the frames per second to record

At present, the minimum frame rate allowed is 2fps, the maximum is 30fps. This is likely to change in the future.

--penc,	-e	Display preview image *after* encoding

Switch on an option to display the preview after compression. This will show any compression artefacts in the preview window. In normal operation, the preview will show the camera output prior to being compressed. This option is not guaranteed to work in future releases.

Conclusion

Pour moins de 60€, il est donc possible d’avoir un Raspberry Pi model B + Camera qui vous ouvre la porte à pas mal de possibilité. J’espère rapidement voir apparaître une API (en Python par exemple) permettant de programmer directement la caméra.

De mon coté je vais faire un peu mumuse avec ce nouveau jouet puis revenir prochainement vers vous pour de nouveaux billets sur le sujet !

Catégories
Open-source Planet-libre raspberry Video

Test d’OpenElec sur Raspberry Pi

Billet mis à jour le 1 mai 2015 avec OpenELEC 5.0.8.

Avec l’apparition du Raspberry Pi et de son GPU Broadcom VideoCore IV intégré, les logiciels de « media center », c’est à dire les systèmes permettant de connecter directement un PC à une télévision pour exploiter sa bibliothèque vidéo, se sont rapidement intéressés à ce nouvel OVNI technologique. Ainsi plusieurs distributions Linux orientés « media center » ont vus le jour pour nous permettre et permettent, pour moins de 30€, de disposer d’un système intégré pour lire des vidéos HD téléchargés plus ou moins légalement sur le Internet.

Nous allons dans ce billet nous intéresser à l’une d’entre elle: OpenElec (Open Embedded Linux Entertainment Center) qui dispose d’un bonne notoriété sur les réseaux sociaux, notamment grâce à une interface de navigation fluide et à une documentation bien fournie (notamment leur Wiki). Il faut juste garder en tête que toutes ces distributions « media center » se base sur le même noyau composé de Raspbian (le système d’exploitation Debian adapté au Raspberry Pi) et XBMC pour le logiciel.

OpenElec screenshot

Installation d’OpenElec

Pour installer OpenElec, les auteurs du projet ont eu la bonne idée de créer un script qui va partitionner et graver la dernière version du système (3.0.1 au moment de l’écriture de cet article) sur une carte SD que vous n’aurez plus qu’à insérer dans votre Raspberry Pi.

Voici les lignes de commandes à saisir sur votre machine GNU/Linux pour installer la version 5.0.8 d’OpenElec sur une carte SD disponible via l’identifiant système /dev/sdb (c’est bien sûr à contrôler avec la commande « fdisk -l » pour être sûr que /dev/sdb correspond bien à votre carte SD histoire de ne pas effacer un autre disque dur):

wget http://releases.openelec.tv/OpenELEC-RPi.arm-5.0.8.tar 
tar xvf OpenELEC-RPi.arm-5.0.8.tar 
cd OpenELEC-RPi.arm-5.0.8/
sudo ./create_sdcard /dev/sdb

Installation de votre Raspberry Pi

Voici la configuration que j’ai utilisé pour le test:

  • Un téléviseur Samsung UE46B6000 (pour une description de mon système home cinéma avant l’arrivée de mon Raspberry, cliquez ici !)
  • Un Raspberry Pi model B (j’ai ensuite utilisé un model A)
  • Une carte SD 4 Go (mais une de 2 Go suffit) avec OpenELec 3.0.1 (voir le premier paragraphe pour l’installation)
  • Un disque dur USB contenant mes vidéos (attention de bien alimenter le disque par une source externe car le Raspberry Pi n’y arrive pas).
  • Un câble HDMI pour la liaison numérique avec le téléviseur (vidéo, son et télécommande avec la norme HDMI CEC).
  • Une souris pour manipuler l’interface d’OpenElec ou mieux encore votre télécommande si votre téléviseur est compatible avec la norme HDMI CEC (comme c’est le cas pour mon téléviseur Samsung via l’implémentation de la fonction Anynet+)
  • Un câble réseau (pour l’accès distant et l’accès au NAS) (optionnel et seulement pour le model B)

Après branchement, le système devrait démarrer automatiquement et l’interface va apparaître sur votre téléviseur. Si vous avez un modèle B, l’accés en SSH (l’adresse IP de votre Raspberry Pi est donnée dans le menu configuration) se fait à l’aide de l’utilisateur root et du mot de passe openelec.

Test de la bête

J’ai d’abord testé OpenElec avec un Raspberry Pi model B puis quand j’ai reçu mon model A j’ai basculé vers ce boîtier car je n’utilise pas mon NAS pour stocker mes films mais un simple disque dur portable connecté directement au Raspberry Pi.

Le démarrage du système est assez rapide (entre 1 minute et 1 minute 30), on arrive directement sur l’interface XMBC customisée à la sauce OpenElec. La navigation dans les différents menus se fait de manière relativement fluide. Le « relativement » n’est pas vraiment un problème quand comme moi vous utilisez une télécommande. Par contre on ressent une certaine difficulté du Raspberry Pi à suivre le rythme quand on utilise une souris. A noter que l’utilisation direct de la télécommande est assez blufante, une vraie bonne idée cette norme HDMI CEC.

Sur ma configuration, je n’ai presque pas eu de configuration à faire mis à part un calibrage de l’écran. En effet, je perdais des petites bandes d’image sur les cotés. Le plus simple pour faire cela est de lire un film et de cliquer sur le bouton « Vidéos – Paramétrage » puis « Étalonnage de l’écran ». Vous aurez alors droit à un wizard qui va vous permettre de bien redimensionner la vidéo par rapport à votre télévision.

On peut ensuite passer au test de lecture vidéo qui est l’objectif principal de notre boîtier.  Pour cela j’ai fait tourner pendant une journée entière OpenElec en lecture d’un rip HD Xvid 720p de « The art of flying » qui avec ses traveling n’est pas une vidéo facile à décoder.

The art of flying

Le résultat est très concluant, aucune saccade constatée de la vidéo lors de la lecture (mais bon je suis pas non plus resté toutes la journée devant l’écran :)). Le son 5.1, récupéré directement via la liaison HDMI, est bon. J’ai également fait des tests avec des trailers en HD 1080p et il n’y a également aucun problème de lecture. Le GPU fait vraiment bien son boulot.

Le Raspberry Pi ne chauffe presque pas (j’ai mis la carte dans un boîtier transparent que l’on peut trouver pour quelques € pour que la carte ne prenne pas la poussière et pour éviter que mes enfants mettent les doigts dessus, c’est curieux ces bêtes là…).

A noter qu’avant la rédaction de ce billet, j’avais demandé à mon copain Twitter des retours d’expériences sur les « media center » du Raspberry PI. De nombreux followers m’avaient signalés qu’il avait des problèmes de lags lors de la lecture de vidéo HD 1080p sur OpenElec. Je n’ai pas constaté de problème sur ma configuration et je pense que leurs problèmes viennent du fait qu’il utilise des vidéos stockées sur un NAS. Il faut donc regarder du coté du réseau et notamment si vous utilisez un dongle Wifi sur votre Raspberry Pi.

Problème d’avance et de retour rapide

Note: ce problème n’est plus présent dans la version 5.0.8 d’OpenElec.

Lors des tests, j’ai constaté un problème au niveau de l’avance et du retour rapide lors de la lecture des vidéos. C’est un problème connu au niveau de XBMC.

Il existe heureusement une solution de contournement qui consiste à remplacer le « fast forward » (& rewind) par le « step forward » (& rewind). Pour cela, il faut éditer le fichier remote.xml (à chercher sur votre configuration via la commande « find / -name remote.xml »), puis à éditer la section FullscreenVideo:

  <FullscreenVideo>
    <remote>
      <title>Stop</title>
      <back>Stop</back>	
      <reverse>StepBack</reverse>
      <forward>StepForward</forward>
    </remote>
  </FullscreenVideo>

Le pas par défaut est de 30 secondes, pour le changer il faut éditer un autre fichier nommé advancedsettings.xml qui est à créer pour l’occasion (cliquer ici pour voir comment créer ce fichier selon la documentation de XBMC) puis à l’éditer avec le contenu suivant:

<advancedsettings>
<video> <!-- "VideoSettings" instead of "video" for builds prior to May 22, 2006 -->
  <usetimeseeking>true</usetimeseeking>  <!-- Whether to use time based or percentage based seeking. -->
  <timeseekforward>15</timeseekforward>  <!-- Time to seek forward in seconds when doing a short seek.  Defaults to 30. -->
  <timeseekbackward>-15</timeseekbackward>  <!-- Time to seek backward in seconds when doing a short seek.  Defaults to -30. -->
  <timeseekforwardbig>600</timeseekforwardbig>  <!-- Time to seek forward in seconds when doing a long seek.  Defaults to 600 (10 minutes). -->
  <timeseekbackwardbig>-600</timeseekbackwardbig>
</video>
</advancedsettings>

Conclusion

Le Raspberry Pi est vraiment un joujou surprenant par ses capacités à faire des choses habituellement réservées à du matériel beaucoup plus cher. Avec les solutions intégrées comme OpenElec, on n’a même plus la complexité de configuration et ces solutions de « media center » deviennent à la porté de n’importe quel bidouilleur.

… pour faire la fine bouche

Il manque encore le support du HDMI Ethernet Channel qui permettrait au Raspberry d’utiliser via le câble HDMI la liaison Internet de la télé. C’est prévue dans la norme HDMI 1.4 mais pas implémenté dans les modèles actuels du Raspberry Pi (voir la page suivante pour les explications).

Allez, à vos claviers, parlez moi de votre configuration « media center ». Utilisez-vous OpenElec ou bien une autre distribution ? Si oui pourquoi ?

Catégories
Open-source Planet-libre raspberry Systeme

Raspberry Pi – Faire un backup de sa carte SD

cartesdCe qu’il y a de bien avec un Raspberry Pi c’est que l’on peut passer d’un système à l’autre en changeant simplement de carte SD et en redémarrant la machine. On peut ainsi avoir une carte avec une distribution classique (Raspbian), une autre avec un média center (OpenELEC ou Raspbmc) ou encore une autre avec un desktop light (ArchLinux). L’idéal étant d’avoir à disposition autant de cartes SD que de systèmes (vu le prix des cartes, ce n’est pas un gros investissement).

Cependant, il est parfois utile, pour des tests ou pour économiser le nombre de ces cartes de sauvegarder puis de restaurer l’image disque sur une machine GNU/Linux classique. C’est ce que nous allons voir dans ce billet.

Sauvegarde intégral d’une carte SD

On commence par insérer la carte SD dans le lecteur du PC GNU/Linux sur lequel on veut faire la sauvegarde.

Pour identifier le périphérique correspondant à la carte SD à sauvegarder sur son système, il suffit de saisir la commande suivante et de regarder le device qui correspond à sa carte SD:

$ sudo fdisk -l
[sudo] password for nicolargo: 

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 têtes, 63 secteurs/piste, 38913 cylindres, total 625142448 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x000e3a56

Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sda1   *        2048   617170943   308584448   83  Linux
/dev/sda2       617172990   625141759     3984385    5  Étendue
/dev/sda5       617172992   625141759     3984384   82  partition d'échange Linux / Solaris

Disk /dev/sdb: 16.0 GB, 16012804096 bytes
64 têtes, 32 secteurs/piste, 15271 cylindres, total 31275008 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x00014d34

Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sdb1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/sdb2          122880    31275007    15576064   83  Linux

J’ai donc deux disques détectés sur ma machine:

  • /dev/sda (disque de 320 Go) qui est mon disque dur système sur mon PC portable. Ce n’est pas ce disque que l’on veut sauvegarder.
  • /dev/sdb (disque de 16 Go) qui est ma carte SD que je souhaite sauvegarder.

On lance la sauvegarde avec la commande suivante:

sudo dd if=/dev/sdb | gzip -9 > ./raspberry-20130420-sdb.img.gz

Restauration intégrale d’une carte SD

Après avoir inséré la clé USB sur laquelle on souhaite faire la restauration (attention la clé va être effacée), on commence par identifier l’identifiant du périphérique comme dans le paragraphe précédant (/dev/sdb dans mon cas).

Puis ensuite, il suffit de saisir la ligne de commande:

gunzip ./raspberry-20130420-sdb.img.gz | sudo dd of=/dev/sdb

Nous allons ensuite voir comment sauvegarder les carte SD partition par partition, ce qui peut être utile si vous ne voulez que sauvegarder le système et pas une éventuelle partition de données.

Sauvegarde partition par patition d’une carte SD

Comme on peut le voir sur les deux dernières lignes de la commande fdisk du premier paragraphe , la carte SD (point de montage /dev/sdb dans mon cas) comporte deux partitions (mais il peut y en avoir plus selon la configuration de votre Raspberry Pi).

Il faut sauvegarder toutes les partitions:

sudo dd if=/dev/sdb1 | gzip -9 > ./raspberry-20130420-sdb1.img.gz
sudo dd if=/dev/sdb2 | gzip -9 > ./raspberry-20130420-sdb2.img.gz

Ces commandes peuvent prendre plus ou moins de temps selon la taille de votre carte SD. J’ai ainsi mis plus d’une dizaine de minute pour faire la sauvegarde de ma carte SD de 16 Go. On voit ici l’avantage de choisir la taille de ses cartes SD en fonction de ses besoins…

Restauration partition par patition d’une carte SD

Nous allons maintenant restaurer la carte préalablement sauvegardée. La procédure consiste à créer les partitions avec la commande fdisk puis ensuite à y écrire les images avec dd.

On part sur le principe ou la carte est vierge est sans partition (sinon utilisé la commande d pour chacune des partitions puis w pour valider):

$ sudo fdisk /dev/sdb

Commande (m pour l'aide): p

Disk /dev/sdb: 16.0 GB, 16012804096 bytes
64 têtes, 32 secteurs/piste, 15271 cylindres, total 31275008 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x00014d34

Périphérique Amorce  Début        Fin      Blocs     Id  Système

On commence par créer le première partition (sdb1):

Commande (m pour l'aide): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Numéro de partition (1-4, par défaut 1): 
Utilisation de la valeur par défaut 1
Premier secteur (2048-31275007, par défaut 2048): 8192
Dernier secteur, +secteurs or +taille{K,M,G} (8192-31275007, par défaut 31275007): 122879

Commande (m pour l'aide): t
Partition sélectionnée 1
Code Hexa (taper L pour lister les codes): c
Type système de partition modifié de 1 à c (W95 FAT32 (LBA))

puis la seconde (sdb2):

Commande (m pour l'aide): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Numéro de partition (1-4, par défaut 2): 
Utilisation de la valeur par défaut 2
Premier secteur (2048-31275007, par défaut 2048): 122880
Dernier secteur, +secteurs or +taille{K,M,G} (122880-31275007, par défaut 31275007):

Commande (m pour l'aide): p

Disk /dev/sdb: 16.0 GB, 16012804096 bytes
64 têtes, 32 secteurs/piste, 15271 cylindres, total 31275008 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x00014d34

Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sdb1   *        8192      122879       57344    c  W95 FAT32 (LBA)
/dev/sdb2          122880    31275007     15576064  83  Linux

On valide les partitions:

Commande (m pour l'aide): w
Synchronisation des disques.

Ensuite on restaure les images:

gunzip ./raspberry-20130420-sdb1.img.gz | sudo dd of=/dev/sdb1
gunzip ./raspberry-20130420-sdb2.img.gz | sudo dd of=/dev/sdb2

Et voilà le travail !

Catégories
Musique Open-source Planet-libre raspberry

Quand votre Raspberry Pi devient serveur Spotify

capture_067C’est en lisant un article sur le blog de Korben que j’ai découvert qu’il était possible de transformer une distribution GNU/Linux en une borne audio Spotify, pilotable à distance. L’objectif étant d’avoir un petit boîtier (type Raspberry Pi ou équivalent) branché directement à sa chaîne Hifi et de pouvoir naviguer à distance sur sa bibliothèque Spotify.

La configuration que j’ai mis en place est la suivante:

Mise en place du système

Je ne vais pas faire un copier/coller de mon billet d’installation de Raspbian Wheezy sur un Raspberry Pi, il suffit de suivre ce lien.

Etape optionnelle, uniquement si vous avez un DAC ou une carte son USB branché à votre Raspberry:

Comme j’utilise un DAC afin de remplacer la médiocre sortie analogique du Raspberry, il faut effectuer une petite configuration complémentaire pour forcer le Raspberry à utiliser le DAC (sortie USB) comme carte son. Il suffit d’éditer le fichier /etc/modprobe.d/alsa-base.conf en commentant une première ligne et en ajoutant une deuxième:

#options snd-usb-audio index=-2
options snd-usb-audio nrpacks=1

Après un dernier redémarrage, votre Raspberry Pi est prêt à recevoir l’installation de Mopidy.

Installation de Mopidy, le serveur Spotify

Mopidy est un serveur Audio compatible avec les clients uPnP et MDP et permet donc de jouer des musiques stockés localement ou de streamer des musiques disponibles sur le service Spotify (c’est sur ce dernier point que nous allons nous focaliser dans ce billet).

On commence par installer le dépôt officiel de Mopidy puis le logiciel:

wget -q -O - http://apt.mopidy.com/mopidy.gpg | sudo apt-key add -
sudo wget -q -O /etc/apt/sources.list.d/mopidy.list http://apt.mopidy.com/mopidy.list
sudo apt-get update
sudo apt-get install mopidy

On doit ensuite lancer un première fois Mopidy:

$ mopidy

INFO     Starting Mopidy 0.13.0
INFO     Platform: Linux-3.6.11+-armv6l-with-debian-7.0
INFO     Python: CPython 2.7.3
INFO     Creating dir /home/pi/.config/mopidy
INFO     Creating dir /home/pi/.local/share/mopidy
INFO     Creating file /home/pi/.config/mopidy/settings.py
WARNING  Could not open tag cache: [Errno 2] No such file or directory: u'/home/pi/.local/share/mopidy/tag_cache'
INFO     Loading tracks from /home/pi/None using /home/pi/.local/share/mopidy/tag_cache
INFO     Loading playlists from /home/pi/.local/share/mopidy/playlists
INFO     Audio output set to "autoaudiosink"
INFO     Audio mixer set to "alsamixer" using track "PCM"
ERROR    Setting "SPOTIFY_USERNAME" is empty.
ImportError: could not import gtk.gdk

Cela va permettre à Mopidy de créer l’arborescence ~/.config/mopidy qui va contenir les fichiers de configuration.

On doit éditer le fichier  ~/.config/mopidy/settings.py avec les paramètres:

  • du serveur MDP qui va permettre de contrôler à distance Mopidy
  • du répertoire local (ou distant sur un NAS) ou sont stockés vos fichiers audios
  • du compte Spotify Premium (obligatoire)
  • du compte LastFM (optionnel, uniquement pour le scrobbling)
FRONTENDS = (u'mopidy.frontends.mpd.MpdFrontend', u'mopidy.frontends.lastfm.LastfmFrontend')

MPD_SERVER_HOSTNAME = u'0.0.0.0'
MPD_SERVER_PASSWORD = u'mdppassword'

LOCAL_MUSIC_PATH = u'/home/nicolargo/Musiques'

SPOTIFY_USERNAME = u'spotifylogin'
SPOTIFY_PASSWORD = u'spotifypassword'
SPOTIFY_BITRATE = 320

LASTFM_USERNAME = u'lastfmlogin'
LASTFM_PASSWORD = u'lastfmpassword'

On peut relancer ensuite Mopidy:

$ mopidy
INFO     Starting Mopidy 0.13.0
INFO     Platform: Linux-3.6.11+-armv6l-with-debian-7.0
INFO     Python: CPython 2.7.3
WARNING  Could not open tag cache: [Errno 2] No such file or directory: u'/home/pi/.local/share/mopidy/tag_cache'
INFO     Loading tracks from /home/pi/.config/mopidy/None using /home/pi/.local/share/mopidy/tag_cache
INFO     Loading playlists from /home/pi/.local/share/mopidy/playlists
INFO     Audio output set to "autoaudiosink"
INFO     Audio mixer set to "alsamixer" using track "PCM"
INFO     Mopidy uses SPOTIFY(R) CORE
INFO     MPD server running at [0.0.0.0]:6600
INFO     Connected to Spotify
ImportError: could not import gtk.gdk
ERROR    MPRIS frontend setup failed (org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11)
INFO     Connected to Last.fm
INFO     Loaded 57 Spotify playlist(s)

Vous pouvez ignore les erreurs, les lignes importantes étant:

INFO     MPD server running at [0.0.0.0]:6600
INFO     Connected to Spotify
INFO     Connected to Last.fm
INFO     Loaded 57 Spotify playlist(s)

Piloter à distance votre borne Mopidy

Pour piloter votre tout nouveau serveur Mopidy, il suffit d’installer un client compatible avec le protocole implémenté dans MPD. Personnellement, j’utilise GMPC sur mon PC Ubuntu mais d’autres solutions existes:

  • Sous GNU/Linux: En ligne de commande Ncmpcpp (bon corage pour retenir le nom mais il marche à merveille) ou en GUI avec GMPC
  • Sous Andoid: MPDroid
  • Sous iOS: MPaD

Conclusion

Encore une utilisation sympa d’un Raspberry dans le monde de la Hifi. J’ai encore quelques problèmes de son (gros tics quand je passe d’un morceau à l’autre) mais dans l’ensemble c’est une solution bien pratique pour écouter sa bibliothèque musicale sur sa chaîne !

Retrouvez tous mes billets sur le Raszberry Pi sur ma page dédiée !

Catégories
Blog raspberry Web

Code promo pour le site Kubii.fr

Pour fêter la mise en ligne de ma nouvelle page dédiée au Raspberry, Kubii, revendeur officiel de Pi en France et sponsor du blog de Nicolargo,  nous propose un code promo de 5€ pour 100€ d’achat sur son site:

—===—

Lien vers le site: http://www.kubii.fr/

Code promo: kubireduc

Validité: Jusqu’au 30 septembre 2013

—===—

Envoy !

Catégories
Gstreamer Musique Open-source Planet-libre raspberry

Utiliser votre Raspberry Pi comme borne Airplay

Airplay est une technologie, mise en avant par Apple et par un nombre croissant d’acteurs du monde de la Hifi, permettant de déporter les flux audio, photo et vidéo d’un device (PC/Mac, tablette, téléphone) sur des périphériques externes (Ampli, Enceintes…). Basée sur un protocole propriétaire (heureusement cassé par reverse ingenering), il n’a malheureusement en face de lui aucune alternative stable et libre: Miracast est uniquement dédié aux devices Wifi et Google qui planchait sur une alternative à Airplay ne semble pas très pressé de la sortir.

Dans ce billet nous allons voir comment transformer un Raspberry Pi (23€ chez votre épicier) en une borne Airplay connectée à votre chaîne Hifi (ou encore mieux en passant par un DAC) afin de disposer d’une chaîne de streaming de bonne qualité entre vos « idevices » (iPhone, iPad, Mac OS mais aussi Android) et vos enceintes.

Dans le jargon Airplay, nous allons donc transformer un Raspberry Pi en « Airplay receiver ». Shazam…

Ma configuration de test

Ce billet a été validé sur la configuration suivante:

  • une chaîne Hifi Cambridge composée d’un DAC, d’un amplificateur et d’une paire d’enceintes.

Ma chaine Hi-Fi Cambridge

  • un Raspberry PI model B (mais cela doit marcher sans problème avec un modèle A)

Raspberry PI B 512

  • un iPhone 4

Configuration système du Raspberry Pi

J’ai utilisé le système d’exploitation Raspbian « Wheezy » dont j’ai déjà détaillé l’installation dans un précédant billet. Comme ma chaîne Hifi est loin de mon réseau Ethernet filaire, j’ai utilisé un dongle USB Wifi (attention la liste des dongles supportés est ici) que j’ai connecté au Raspberry et configuré en suivant ce tutoriel.

Ma configuration réseau est la suivante pour le fichier /etc/network/interfaces:

auto lo

iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

et celle-ci pour le fichier /etc/wpa_supplicant/wpa_supplicant.conf:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid="MONWIFI"
scan_ssid=1
key_mgmt=WPA-PSK
proto=WPA
psk="MACLEWIFI"
}

Shairport, le coeur de la borne Airplay

Shairport est une implémentation libre d’un serveur RAOP qui est lui même à la base des Airport Express d’Apple. Il n’implémente, pour l’instant, que la version 1.0 d’Airplay (prise en charge des flux audio mais pas de vidéo ni de photo).

L’installation se fait en 5 commandes:

sudo aptitude install git libao-dev libssl-dev libcrypt-openssl-rsa-perl libio-socket-inet6-perl libwww-perl avahi-utils
git clone https://github.com/albertz/shairport.git shairport
cd shairport
make
sudo make install

Pour tester Shairport, il suffit de lancer:

/shairport.pl -a ShairPort

Si, comme moi, vous avez l’erreur suivante qui s’affiche:

Can't locate Net/SDP.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at ./shairport.pl line 48.
BEGIN failed--compilation aborted at ./shairport.pl line 48.

Alors, il faudra en plus saisir une sixième commande pour finaliser l’installation:

sudo cpan install Net::SDP

Pour automatiser le lancement de ShairPort au démarrage de votre Raspberry Pi:

sudo cp ./shairport.init.sample /etc/init.d/shairport
sudo chmod a+x /etc/init.d/shairport

Note: il est possible d’éditer le « nom » de votre borne Airplay en modifiant l’option -a dans le script:

DAEMON_ARGS="-w $PIDFILE -a ShairPort"

Il ne reste plus qu’à lancer le démon:

sudo update-rc.d shairport defaults
sudo service shairport start

Premier test: bien mais peut mieux faire

Arrivez à ce stade (bravo si vous êtes encore là), vous devriez pouvoir détecter votre borne Airplay ShairPlay à partir de votre iPhone:

Airplay Spotify photo

Configuration de l’iPhone pour utiliser la borne Airplay (Spotify à gauche et iTunes à droite)

En branchant votre casque | chaîne sur la sortie analogique (prise jack) du Raspberry, vous allez entendre le son émis par votre iPhone.

Avec un <pub> Glances </pub> lancé sur le Raspberry, on peut constater, avec une liaison réseau filaire la faible consommation CPU en utilisation et un débit de streaming audio de 1Mbps:

capture_064

Par contre cette consommation grimpe à plus de 60% si vous utilisez un dongle Wifi. En effet, le protocole WPA implique un déchiffrement des données non négligeable pour le Raspberry.

Si fonctionnellement on est arrivés à notre objectif, ce n’est pas cas pour la qualité audio. En effet, la sortie analogique est incompatible avec une écoute Hifi.

Raspberry + USB + DAC = Bonheur

Heureusement pour moi et pour mes oreilles, mon DAC (Cambridge Audio DacMagic) dispose d’une entrée USB. Si ce n’est pas votre cas, il existe pas mal de solutions plus ou moins chères sur le marché.

Pour forcer le Raspberry à utiliser le DAC (sortie USB) comme carte son, il faut éditer le fichier /etc/modprobe.d/alsa-base.conf en commentant une première ligne et en ajoutant une deuxième:

#options snd-usb-audio index=-2
options snd-usb-audio nrpacks=1

Après un dernier redémarrage, votre borne Airplay est enfin prête !

Update (28/04/2013): Pour vérifier que tout est configuré comme attendu, le plus simple est d’utiliser la commande aplay -l qui va afficher la liste des cartes sons de votre Raspberry Pi. On doit retrouver la « carte audio USB en premier » puis la classique carte intégrée bcm2835 en second:

pi@raspberrypi $ aplay -l

**** List of PLAYBACK Hardware Devices ****
card 0: Set [C-Media USB Headphone Set], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 1: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7

 

Conclusion

Ma configuration fonctionne maintenant sans problème depuis quelques jours. Je suis justement en train d’écouter ma Playlist Spotify 2013 en rédigeant ce billet.

Seul problème rencontré: il faut que je redémarre mon Raspberry quand je désactive et réactive le Wifi sur ma Freebox. Si vous avez des idées, je suis preneur.

Quelques liens en bonus:

Catégories
Open-source Planet-libre raspberry Systeme

Mes 5 premières minutes sur un serveur Debian

sam

Sur une idée originale pompée honteusement sur le blog de Bryan Kennedy.

La virtualisation ou la possibilité d’acheter des machines à bas prix comme le Raspberry implique le fait que l’installation de serveurs devient une tâche de plus en plus fréquente. Afin d’éviter les grossières erreurs qui peuvent rapidement devenir fatales si la machine est exposée au réseau Internet, voici les actions que j’effectue systématiquement sur mes systèmes d’exploitations Debian ou Ubuntu Server.

Si vous suivez ce blog, vous savez que je suis un gros fainéant pour ce genre de tâches récurrentes. J’ai donc écrit un ensemble de scripts permettant d’effectuer les actions de « post installation ». J’ai également commencé à regarder du coté des systèmes de gestion de configuration comme Puppet qui sont des solutions à utiliser en priorité si vous avez un parc informatique important.

L’objectif de ce billet est donc pédagogique pour partager avec vous les actions à effectuer et, je l’espère, en apprendre de nouvelles.

Assez de palabres, place au clavier…

1) S’occuper de ses comptes

Je parle bien évidemment ici des comptes utilisateurs qu’il va falloir sécuriser. On commence par le compte root qui ne sera PAS (jamais, c’est mal) utilisé directement pour vous connecter sur votre machine. Lors de l’installation du système, il faut saisir un mot de passe sécurisé, c’est à dire assez long avec un mélange de lettres, de chiffres et d’autres caractères mais sans utiliser des mots connus ou des suites de chiffres. Vous n’avez pas besoin de connaitre ce mot de passe par coeur mais il faudra le conserver bien au chaud.

Une fois logué sur la machine (on durant la phase d’installation du serveur), on commence par créer un utilisateur principal que l’on utilisera pour se connecter à la machine.

J’ai choisi morpheus pour illustrer mon billet.

useradd morpheus
mkdir /home/morpheus

La suite des opérations sera donc faite à partir de cet utilisateur.

2) S’occuper de ses portes d’entrées avec SSHd

SSH est devenu le mode d’accès le plus utilisé pour accéder aux serveurs GNU/Linux. Par défaut, il propose un contrôle d’accès par nom d’utilisateur et mot de passe. J’essaye au maximum d’éviter cette solution. J’utilise le système d’authentification par clé publique qui est un peu plus lourde à mettre en oeuvre et à administrer mais qui offre un niveau de sécurité plus important.

Pour ajouter la clé publique de mon PC avec lequel je vais me connecter au serveur, il suffit de lancer la commande suivante à partir de cette machine:

ssh-copy-id morpheus@monserveur

Puis on force l’utilisation de l’authentification par clé publique et on ferme ensuite cette porte à l’utilisateur root:

sudo vim /etc/ssh/sshd_config

PasswordAuthentication no
PermitRootLogin no

Attention: l’authentification par  nom d’utilisateur / mot de passe sera désactivée pour les accès SSH. 

On relance ensuite le daemon SSH:

sudo service  ssh restart

3) Contrôler les entrées avec Fail2ban

Une fois le daemon SSH sécurisé, il faut ensuite ajouter une couche permettant de contrôler plus finement les accès. J’utilise pour cela Fail2ban que j’ai abordé plus précisément dans un précédant billet. Dans notre sujet du jour, je vais configurer Fail2ban pour bloquer, pendant 5 minutes, l’accès à SSH à un utilisateur qui se trompe 3 fois de mot de passe.

On commence par installer fail2ban:

sudo apt-get-install fail2ban

On va ensuite éditer le fichier /etc/fail2ban/jail.conf pour le configurer comme l’on souhaite:

[ssh]
enabled = true
port = ssh
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
maxretry = 3
bantime = 300

On relance ensuite le service pour prendre en compte la configuration:

sudo service fail2ban restart

4) Fermer les fenêtres (de votre Firewall)

Comme nous l’avons vu dans le point précédant, Fail2ban utilise le Firewall IPtable qui part défaut laisse passer l’ensemble des flux. J’applique systématiquement une configuration beoucoup plus restrictive qui autorise les flux SSH entrant (pour l’accès à distance) et HTTP/HTTPs/DNS sortant (pour la mise à jour de mon serveur).

J’utilise pour cela un script de démarrage maison:

sudo wget --no-check-certificate -O /etc/init.d/firewall.sh https://raw.github.com/nicolargo/debianpostinstall/master/firewall.sh
sudo chmod a+x /etc/init.d/firewall.sh

que je lance au démarrage de la machine (et aussi immédiatement):

sudo update-rc.d firewall.sh defaults 20
sudo service firewall start

Il est bien sûr possible d’adapter ce script à vos besoins de flux entrants et sortants en éditant les lignes suivantes:

# Services that the system will offer to the network
TCP_SERVICES="22" # SSH only
UDP_SERVICES=""
# Services the system will use from the network
REMOTE_TCP_SERVICES="80 443" # web browsing
REMOTE_UDP_SERVICES="53" # DNS

5) Prendre soin de ses fondations en tenant son système à jour

Maintenir à jour ses serveurs est une tâche à la fois indispensable et rébarbative. Il y a ici deux écoles possibles. La première est d’utiliser un logiciel comme unattended-upgrades qui va installer automatiquement pour vous les mises à jours de sécurités ou même l’ensemble de votre système. C’est une solution élégante mais qui n’est pas sans risque si un pépin arrive suite à une mise à jour alors que vous êtes loin de vous machines. J’opte donc pour la seconde solution, basée sur cron-apt, qui va me notifier par mail les mises à jours à effectuer sur mes machines.

On installe cron-apt avec la commande:

sudo apt-get install cron-apt

Puis on configure l’adresse mail de destination des messages de notifications dans le fichier /etc/cron-apt/config:

MAILTO="bibi+monserveur@gmail.com"

Note: comme vous pouvez le lire, j’utilise une adresse Gmail bibi@gmail.com pour la réception de mes notifications. J’y ajoute +monserveur (qui sera ignoré par Gmail) afin de pouvoir facilement les filtrer.

On relance le service pour prendre en compte la configuration:

sudo service cron-apt restart

Les notifications seront envoyés par défaut toutes les nuits à 4h du matin.

6) Surveiller le tout avec Logwatch

A ce stade vous avez un serveur disposant d’une sécurité de base qui va le protéger de la grande majorité des attaques que l’on peut trouver sur Internet. Il ne reste plus qu’à installer Logwatch, un outil permettant d’analyser les logs et ainsi de remonter par mail des rapports permettant d’analyser des tentatives d’intrusions éventuelles.

La mise en place est assez simple.

sudo apt-get install logwatch

Puis on configure l’adresse mail de destination des messages de notifications dans le fichier /etc/cron-apt/config:

#execute
/usr/sbin/logwatch --output mail --mailto bibi+monserveur@gmail.com --detail high

On relance le service pour prendre en compte la configuration:

sudo service cron-apt restart

Les notifications seront envoyés par défaut toutes les nuits.

7) Conclusion

Nous arrivons à la fin de ce billet avec une machine à l’épreuve d’une exposition à Internet sans risque de se faire hacker par le premier « script kiddie » venu.

A vous de nous faire partager vos techniques, méthodes que vous appliquez sur vos nouveaux serveurs !

Catégories
Hardware Open-source Planet-libre raspberry

Raspberry Pi 512, déballage et installation

Certains buzz démarrent avec pas grand chose, d’autre sont issus de vraies bonnes idées. Le Raspberry Pi B 512 est de cette catégorie là. Proposer une carte mère pour moins de 30€ avec un CPU ARM à 700 Mhz, un GPU bi-core pour un affichage « full HD » et 512 Mo de RAM. J’ai donc décidé d’acheter le modèle Raspberry PI B 512 avec un jolie boitier transparent. Ce kit est en vente chez Kubii au prix de 50€ (au passage je tiens à signaler le très bon service client de Kubii. Service rapide et personnalisé. C’est suffisamment rare pour le signaler).

Passons au vis du sujet avec le déballage et l’installation de la bête.

Pour quoi faire ?

L’avantage d’un prix aussi bas est de pouvoir se lancer dans son achat sans avoir vraiment d’idée précise d’utilisation en tête. Après quelques jours, voici une liste de choses que l’on peut ou ne peut pas faire avec un Raspberry.

Le Raspberry Pi B 512 est parfaitement adapté pour:

  • Lire des fichiers audio et vidéo en haute définition (en utilisant OMXplayer le player spécifique du Raspberry Pi)
  • auto-héberger son site personnel (avec les limites d’usages au niveau du débit de la liaison montante de votre ligne Internet) avec une configuration basée sur LightHTTPd ou sur Nginx
  • héberger son serveur VPN pour accèder à son réseau personnel depuis l’exterieur
  • superviser votre réseau (jusqu’à une centaine de machines avec 10 services/machine sans aucun problème) avec une installation de Shinken et de Munin
  • créer une borne Airplay à moindre prix (autre article en Anglais sur le même sujet)
  • développer des applications de domotique (quelques exemples ici et encore )
  • … pleins d’autres idées qui peuvent vous passer par la tête (en voir 50 chez l’ami Korben)

Il peut être utilisé occasionnellement pour:

  • surfer sur Internet (mais il est vrai que l’on est habitué à un affichage rapide des pages, ce que l’on obtient pas avec le Raspberry Pi)
  • lire ces mails et faire un peu de bureautique simpliste

Passez votre chemin si vous voulez:

  • remplacer votre PC fixe ou mobile par un Raspberry Pi B 512…

Déballage

Commençons par la fin en montrant le résultat: mon Raspberry PI B 512 en action avec un écran, un clavier et une souris.

Raspberry PI 512

Regardons de plus prêt le coeur du système:

 

Installation

Choisir son système d’exploitation

Le Raspberry Pi est compatible avec les systèmes d’exploitations GNU/Linux. Certaines distributions se sont spécialisées pour ce matériel spécifique. La liste des systèmes d’exploitations compatibles se trouve sur cette page du site officiel. Mon choix c’est porté vers la Raspbian « Wheezy » qui est une distribution dérivée de Debian que je manipule tous les jours. Il existe également une autre distribution basée sur Arch Linux qui offre des performances équivalentes (voir l’article de P3ter sur le sujet).

Le système d’exploitation doit être stocké sur une carte SD à insérer dans le lecteur du Raspberry PI. Pour mettre le système Raspbian sur la carte SD j’ai utilisé mon PC portable sous Ubuntu 12.10 qui dispose d’un lecteur intégré de carte SD. La procédure suivante est donc à adapter selon votre matériel.

On commence donc par télécharger l’image de la dernière version de Raspbian puis de vérifier avec le logiciel sha1sum que l’archive est complète.

$ wget http://files.velocix.com/c1410/images/raspbian/2013-02-09-wheezy-raspbian/2013-02-09-wheezy-raspbian.zip

$ sha1sum 2013-02-09-wheezy-raspbian.zip 
b4375dc9d140e6e48e0406f96dead3601fac6c81  2013-02-09-wheezy-raspbian.zip

La valeur barbare donnée par la commande sha1sum est à comparer avec celle de référence disponible sur la page de téléchargement. Si elles différent alors il ne vous reste plus qu’à recommencer le téléchargement.

On peut ensuite décompresser le fichier pour obtenir l’image disque (2013-02-09-wheezy-raspbian.img dans mon cas):

$ unzip 2013-02-09-wheezy-raspbian.zip
inflating: 2013-02-09-wheezy-raspbian.img

Graver son système sur la carte SD (source: eLinux)

On commence par insérer la carte dans son lecteur (celui de mon PC portable dans mon cas), puis on utilise la commande df -h pour obtenir le point de montage (/dev/sdb1 dans mon cas) correspondant à la carte SD. Attention de bien utiliser le point de montage pour éviter de formater votre disque système !!!:

capture_036

Une fois le point de montage identifié, il faut saisir les commande suivante (en remplaçant /dev/sdb1 par votre point de montage):

sudo dd bs=4M if=./2013-02-09-wheezy-raspbian.img of=/dev/sdb

Quelques explications sur cette dernière commande:

  • elle doit être lancée avec les droits root (d’ou l’utilisation de sudo)
  • if donne l’emplacement de l’image de Raspbian « Wheezy »
  • of donne le point de montage racine (égal à votre point de montage sans le nombre finale soir /dev/sdb dans mon cas)
  • l’exécution va prendre un peu de temps…

Très bien, votre carte contenant l’OS Raspbian « Wheezy » est prête à être utilisée !

Insérer votre carte dans le lecteur SD du Raspberry PI, brancher un clavier et l’alimentation micro USB et c’est parti !

capture_048

Configuration initiale du système

Au premier démarrage, vous allez avoir droit au lancement automatique de l’utilitaire de configuration « raspi-config » qu’il est possible de rappeler par la suite en saisissant la commande suivante dans un terminal:

sudo raspi-config

Raspi-config se présente sous la forme suivante:

capture_040

Les différentes fonctions permettent de:

  • expand_rootfs: étendre la partition principale à la taille maximale de la carte SD (par exemple si vous avez une carte SD de 16 Go et que vous n’utilisez pas cette fonction, alors vous resterez avec une partition principale de 2 Go)
  • overscan: force l’affichage de marge pour s’adapter à des écrans 16/9 ou supérieur.
  • configurer: le clavier (configure_keyboard), le mot de passe par défaut (raspberry) de l’utilisateur par défaut (pi) (change_pass) , votre lieu géographique (change_locale) et le temps (change_timezone)
  • overclocking: comme Raspberry est une société intelligente, elle autorise l’overclocking de son matériel sans perte de la garantie (mais avec une durée de votre matériel qui risque de diminuer). Fonction à activer si vous voulez utilisez le Raspberry en mode graphique (comme client léger) ou tout autre besoin consommateur de CPU. On a le choix d’overcloking suivant:

capture_041

  • memory-split: pour définir la quantité de mémoire vive dédiée au GPU (64 Mo par défaut).
  • ssh: permet de définir si le serveur SSH doit être lancé par défaut.
  • boot_behavor: choisir si on veut démarrer le boitier en mode texte (utilisation serveur) ou graphique (client léger avec l’environnement OpenBoxLXDE).
  • update: qui est en fait un raccourci vers la commande « apt-get update && apt-get upgrade » et ainsi mettre à jour votre système (qui doit être connecté à Internet).

Premières impressions

Comme lors de  mon test du Linutop 4,  la première impression quand on utilise le Raspberry Pi avec son interface graphique LXDE, est un retour en arrière de quelques années ou il fallait attendre quelques secondes avant l’affichage des fenêtres. La lecture vidéo HD est par contre bleufante (voir le paragraphe en de billet), on voit que le GPU est parfaitement exploité.

Une fois dans un terminal, la machine réagi bien. Dans un très appréciable silence total, on utilise un système GNU/Linux minimaliste mais réactif.

Quelques tests

CPU, GPU et RAM

Sur ces aspects là, rien de notable, on est dans la norme avec ce type de matériel. Si vous voulez des chiffres pour comparer avec d’autres machines, je vous conseille la lecture de cette page Wiki chez eLinux.

Interface réseau

L’interface Ethernet est à la norme FastEthernet (soit un débit théorique maximum de 100 Mbps). Comme le Raspberry Pi n’a pas une capacité de stockage importante, cette vitesse pourra être pénalisante lors de l’accès à vos données stockées sur un NAS ou une autre machine.

Un rapide test avec Iperf montre un débit maximum en TCP de 90 Mbps en entrée et 65 Mbps en sortie. On a donc de bonnes performances pour une interface FastEthernet, en espérant une évolution en Giga pour la prochaine version de Raspberry Pi.

Multimédia

Là ou le Raspberry Pi est bluffant c’est sur les lectures audio et vidéo. En effet, avec les efforts pour adapter XBMC sur ce matériel on dispose de logiciel permettant sans aucun problème de lire des vidéos H.264 full HD.

Si vous ne souhaitez pas passer par XBMC, vous pouvez utiliser OMXPlayer de la manière suivante:

omxplayer -o hdmi <nondufichiervideo>

Il est même possible, pour certains besoins spécifiques d’acheter, pour des sommes assez modiques, des licences pour des codecs MPEG-2 ou VC-1.

Il lui manque quoi ?

Personnellement, je serais assez intéressé par une version luxe (à 60€ max faut pas déconner non plus) intégrant les choses suivantes:

  • une interface Gigabit Ethernet, pour avoir un connectivité haut débit vers mon NAS
  • une sortie audio numérique pour connecter le Raspberry Pi à mon DAC (iPhone + Airplay + Shairport + Raspberry Pi + DAC + Ampli = Bonheur)
  • une troisième interface USB, car les deux premières sont occupées par mon clavier et ma souris et je ne sais pas ou mettre ma clés USB 🙂

Conclusion

Nous voici arrivé au bout de ce premier article sur le Raspberry Pi, d’autres viendront vites, plus spécialisés. Je dois avoué avoir été agréablement surpris pas les capacités et le potentiel de cette petite machine. Le futur est là, devant nos yeux.

Et vous ? Avez vous craqués ? Si oui pour quelle utilisation ?

Retrouvez mes articles sur l’écosystème Raspberry Pi en cliquant ici.