source: Nicolargo
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.
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 3.0.1 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 -O OpenELEC-RPi.arm-3.0.1.tar.bz2 http://openelec.tv/get-openelec/download/finish/10-raspberry-pi-builds/87-openelec-stable-raspberry-pi-arm bzip2 -d OpenELEC-RPi.arm-3.0.1.tar.bz2 tar xvf OpenELEC-RPi.arm-3.0.1.tar cd OpenELEC-RPi.arm-3.0.1/ sudo ./create_sdcard /dev/sdb
Voici la configuration que j'ai utilisé pour le test:
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.
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.
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>
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.
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 ?
---
Cet article Test d’OpenElec sur Raspberry Pi est apparu en premier sur Le blog de NicoLargo.
Ce 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.
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:
On lance la sauvegarde avec la commande suivante:
sudo dd if=/dev/sdb | gzip -9 > ./raspberry-20130420-sdb.img.gz
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.
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...
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 !
Jon Renner est un des contributeur actif du projet Glances. Il vient de mettre en ligne sur Google Play la première version de son client Glances pour Android (cliquer ici pour télécharger Android Glances).
Ce client permet d'aller directement consulter les statistique d'un serveur Glances à partir d'un smartphone ou d'une tablette Android.
Contrairement au projet MetaGlances (dont j'ai parlé la semaine dernière), il ne necessite pas de machine intermédiaire et utilise une connection directe (via XML RPC) entre un device Android et votre serveur (qui doit bien sûr pésenter une interface publique). Pour cela, Jon a développé une API Glances en Java qui peut être récupéré et utilisé pour d'autres besoins.
Encore un grand bravo/merci pour son travail sur le coeur de Glances et pour le développement de l'ecosystème qui est en train de ce construire autour de Glances.
Quelques liens:
Cet article Glances a son application Android est apparu en premier sur Le blog de NicoLargo.
Depuis la version 1.5 de Glances et la mise à disposition d'une API au format JSON XML/RPC, l'écosystème autour de Glances grandit petit à petit. Un des premier projet à avoir vu le jour est MetaGlances, une interface Web "responsive" permettant de centraliser la gestion de ses serveurs Glances.
Développée par Laurent Spinelli (aka spin0us) et distribuée sous licence GPL version 3, cette interface s'installe en quelques commandes sur un serveur Web et permet grâce à un mélange de scripts PHP (pour l'interface JSON XML/RPC avec les serveurs Glances) et HTML/JavaScript/JQuery (pour l'UI):
Si vous disposez d'un serveur Web opérationnel (sinon vous pouvez toujours utiliser ce script d'installation automatique de Nginx) avec par exemple pour racine /var/www alors l'installation nécessite la saisie des commandes suivantes:
cd /var/www sudo git clone https://github.com/spin0us/MetaGlances sudo mkdir -p /var/www/MetaGlances/cache/config /var/www/MetaGlances/cache/data sudo chown -R www-data:www-data /var/www/MetaGlances
Puis saisir l'URL de votre serveur MetaGlances: http://nomdevotreserveur/MetaGlances
La configuration de MetaGlances est centralisé dans le fichier /var/www/MetaGlances/config.php.
MetaGlances est en cours de développement. Pour mettre à jour votre serveur avec la dernière version, il faudra saisir les commandes:
cd /var/www/MetaGlances sudo git pull sudo chown -R www-data:www-data /var/www/MetaGlances
J'ai installé MetaGlances sur un de mes serveurs. Vous pouvez donc directement superviser vos machines disposant d'une interface IP publique et sur lesquelles Glances serveur est lancé (je vous conseille de lancer Glances en configurant un mot de passe et si possible en filtrant à l'aide d'un Firewall les accès entrant venant de mon serveur).
Pour tester MetaGlances cliquez sur le lien suivant: http://metaglances.nicolargo.com
Attention: ce serveur MetaGlances est uniquement mis à disposition pour tester MetaGlances. Ne pas s'en servir pour en production, il peut être arrêté mis à jour ou déplacé sans préavis.
Grâce au travail de Laurent, l'utilisation est assez intuitive. Je vous la laisse découvrir dans cette série de screenshots:
Ajout d'un serveur à superviser
Saisie des informations sur le serveur Glances
Affichage de la liste des serveurs
Affichage des statistiques d'un serveur Glances
Création d'un compte MetaGlances
Sauvegarde ou restauration de la liste des serveurs Glances
MetaGlances est en cours de développement et Laurent Spinelli, le créateur à besoin de bêta testeurs pour améliorer ce logiciel. Si vous rencontrez un bug ou que vous trouvez qu'il manque des fonctions, n'hésitez pas à le dire directement via la page suivante sur le GitHub officiel.
Perso, je suis fan de MetaGlances, il y a un bon potentiel pour en faire un outil simple de supervision système.
Vous en pensez quoi ?
Cet article MetaGlances, une interface pour les gouverner tous… est apparu en premier sur Le blog de NicoLargo.
C'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:
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.
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:
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)
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:
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 !
Cet article Quand votre Raspberry Pi devient serveur Spotify est apparu en premier sur Le blog de NicoLargo.