Installation de XBMC sur Raspbian

Une des nombreuses possibilités du Raspberry est d’offrir une solution MediaCenter entre autre avec XBMC. Pour installer ce gratuiciel, c’est un peu touchy dans la mesure où ce n’est pas encore pleinement bien packagé, et qu’on est à cheval sur les compatibilités de version. D’après la documentation officielle, il faut récupérer les sources et compiler sur le Raspberry, 12 heures de compilation en perspective…

Côté documentation tout commence avec ce wiki. Ce site manque de maturité et le tout apparaît plus comme une somme de pense-bêtes. Et je propose donc une compilation de mes propres recherches dans cet article.

Le déploiement

Edité le 10/10/2013 – Selon la FAQ officielle XBMC, Frodo (XBMC v12) n’est pas disponible dans les dépôts officiels Debian.
Cocooncrash alias Michael Gorven nous propose des paquets précompilés à l’aide de qemu. Pour y avoir accès il faut ajouter ce nouveau dépôt dans nos listes de sources, d’ajouter la clef, et de mettre à jour la liste :

sudo vi /etc/apt/sources.list.d/mene.list
Ajouter : deb http://archive.mene.za.net/raspbian wheezy contrib
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED
sudo apt-get update

Une petite mise à jour si ce n’est déjà fait de votre firmware peut être utile (ça bouge beaucoup ces derniers temps). Après quoi on peut lancer l’installation, le plus simplement :

sudo apt-get install xbmc

Une fois l’installation finie, c’est là que l’aventure commence ! Non pas dans l’usage du produit, mais parce que certaines malfaçons sont à corriger ! Oui, je sais, je suis exigent.

Révision du initscript xbmc

La première chose à modifier à mon sens est le script qui permet de gérer les arrêts et démarrages. Il n’est pas opérationnel et présente une petite malfaçon en valorisant dans le script au lieu d’un fichier de configuration répondant au FHS.
En clair, il vaut mieux récupérer le /etc/init.d/xbmc que je propose : xbmc by oloc. Directement à partir du Raspberry :

cd /etc/init.d
sudo mv xbmc xbmc.bkp
sudo wget http://olivierlocard.com/share/scripts/xbmc
sudo chmod 755 xbmc

Tel que ce script est conçu, la valorisation se fera avec les valeurs par défaut. Pour paramétrer à sa guise on va créer l’arborescence et le fichier idoine :

cd /etc
sudo mkdir xbmc
cd xbmc
sudo vi xbmc.conf

Que l’on va remplir de :

# Set this to 1 to enable startup
ENABLED=1
# The user to run XBMC as
USER=xbmc
# Adjust niceness of XBMC (decrease for higher priority)
NICE=0
echo "Enable=$ENABLED User=$USER Nice=$NICE Pid=$(cat $PIDFILE)"

Un profil dédié

Les plus pertinents auront noté que le ${USER} n’est pas pi mais xbmc en profile dédié à ce service. Morbleu travaillons proprement !
On va donc le créer ainsi qu’un groupe qui nous servira plus tard par cette série de commandes :

sudo useradd -m -s /bin/false xbmc
sudo addgroup input --system
sudo adduser xbmc input
sudo adduser xbmc audio
sudo adduser xbmc video
sudo adduser xbmc dialout
sudo adduser xbmc plugdev

Je vous passe les détails sur la gestion dynamique des périphériques mais pour que le clavier soit toujours disponible on va créer /etc/udev/rules.d/99-input.rules contenant :

SUBSYSTEM=="input", GROUP="input", MODE="0660"

Les historiques

Etant donné qu’on ne peut définir la location des logs, et que je reste attaché à regrouper toutes mes logs dans le /var/log, je précède à la création d’un lien symbolique.

sudo ln -s /home/xbmc/.xbmc/temp/xbmc.log /var/log/xbmc.log

De plus, afin de produire les crash logs dans ce répertoire, je modifie le /usr/bin/xbmc :

LIBDIR="${exec_prefix}/lib"
# Added by oloc
LOGDIR="/var/log"
(...)
print_crash_report()
{
# oloc - FILE="$HOME/xbmc_crashlog-`date +%Y%m%d_%H%M%S`.log"
FILE="$LOGDIR/xbmc_crashlog-`date +%Y%m%d_%H%M%S`.log"

Home Sweet Home

Tout ce qui est paramétrage, addons, et j’en passe sont dans le $HOME/.xbmc du profil qui a opéré à l’apt-get. J’ai pu lire qu’une mise en commun avec une base MySQL est possible. N’ayant pas pris le temps d’effectuer les recherches nécessaires, j’ai procédé à un gros copcol simple et efficace :

sudo cp -Rf $HOME/.xbmc ~xbmc/.xbmc
sudo chown -R xbmc:xbmc ~xbmc/.xbmc

Comme souvent je complète mon ~/.profile avec :

alias xb="sudo /etc/init.d/xbmc"

Et je lance et vérifie :

xb start
xb status
ps -u xbmc u

Qui devrait vous retourner les 4 services :

/bin/sh /usr/bin/xbmc-standalone
/usr/bin/pulseaudio --start
/bin/sh /usr/bin/xbmc --standalone
/usr/lib/xbmc/xbmc.bin --standalone

16 réflexions sur « Installation de XBMC sur Raspbian »

    • Merci pour ce gentil commentaire.
      Etes-vous arrivé à vos fins ? N’hésitez pas à faire un retour, des commentaires. Sans doute que certains passages demandent à être éclaircis ou complétés.

  1. Je confirme que c’est plus simple avec Frodo.

    J’ai acheté un Pi pour remplacer mon PC de salon, donc usage purement XBMC. Je n’ai eu qu’a créer la carte SD via DiskImager en poussant une image OpenElec/XBMC (semblerait que c’est la distrib la plus optimisée d’après les retours trouvés ça et là) et en 15mn tout était prêt à lire mes vidéos depuis mon NAS. Impressionné, et déçu de ne pas avoir à bidouiller.

    • Effectivement, la distrib’ dite RaspBMC est la plus simple, efficace et a priori sans aucun besoin de connaissance en linux. Et c’est la solution que je recommande à qui veut se monter un Media Center sur RaspBerry sans effort.

      J’avais fait le choix d’une installation à partir d’une image de Debian et d’installer XBMC après, justement pour la découverte, la bidouille (pour te citer), et surtout l’amour du travail bien fait en maîtrisant les choix.

      Avec les cartes SD, il est possible d’avoir plusieurs environnements et lorsque j’aurais le temps, je tenterai l’aventure à partir de la compilation du noyau. Très didactique double article dans le Linux Magazine n°155.

  2. Bonjour,

    Merci pour ce tutoriel qui correspond parfaitement à ce que je suis en train d’essayer de faire.
    Toutefois, juste une petite question : l’initscript sert bien a lancer l’application automatiquement au démarrage du RPI ? Est-ce que XBMC se lance en « tâche de fond » ou il sera visible si l’on branche un écran sur le RPI ? Est-ce que cela laisse la possibilité, malgré tout, d’avoir accès au terminal en SSH ?
    Désolé si ces questions peuvent paraître un peu absurdes, mais je découvre petit à petit en bidouillant, notamment grâce à des tutos comme celui-ci !

    Merci d’avance !

    • Vos questions ne sont pas absurdes, dans la mesure où vous semblez débuter et qu’il me parait délicat de trouver leur réponse sur internet. Et je vais tâcher d’y répondre le plus pédagogiquement possible.

      L’initscript est, comme tout ce qui est dans le répertoire /etc/init.d, le script d’arrêt/démarrage d’une application, ici XBMC. Et celui-ci propose aussi les options de status et de restart.
      Il contribue donc à lancer l’application XBMC au démarrage du RPI mais n’est sans doute pas le maillon que vous rechercher. M’est avis que vous pensiez aux liens symboliques qui sont dans les répertoires /etc/rcX.d et qui devraient être ajoutés lors de l’installation lancée par sudo apt-get install xbmc. Si d’aventure ce n’était pas le cas, il faudrait procéder à la commande suivante :
      update-rc.d xbmc defaults

      De ce que j’ai pu constater, XBMC reste en permanence sur la sortie RCA. J’en profite pour insister sur l’activation de la « Synchronisation verticale » (par l’interface graphique) pour que la consommation soit de 20% CPU et non de 80% (Cf. Autant ne rien faire quand on ne fait rien).
      J’avoue que depuis deux mois je n’ai pas consulté les évolutions et les avancées de l’équipe de développement, et peut-être qu’une « meilleure mise en veille » est envisagée.

      Le fait que le port de sortie vidéo (RCA ou HDMI) soit occupé par XBMC n’interfère d’aucune manière avec l’accès SSH qui passe par le câble réseau ethernet.

      Si vous aviez d’autres questions ou des remarques sur le tutoriel, n’hésitez pas.

      Bonnes bidouilles !

      • Merci pour ces réponses, mais je ne suis pas sûr de tout comprendre.
        En fait, j’aurais du commencer par expliquer ce que je souhaite faire.
        Je souhaite raccorder mon raspberry à une paire d’enceintes par la prise jack. Aucun écran ne sera connecté dessus. Je piloterai le démarrage de la musique avec ma tablette Androïd et le logiciel Yatse. Pour l’instant, cela fonctionne parfaitement.

        Mais comme je n’aurai pas d’écran, je voudrais être sûr que quand je branche le raspberry, il démarre XBMC.

        Mais bien sûr, je voudrais avoir la possibilité d’accéder, pendant ce temps, à l’interface de base par ssh via mon PC, afin de lancer d’autres services (owncloud, mises à jour, etc). En gros, je ne voudrais pas que XBMC, même s’il est lancé, m’empêche de faire d’autres tâches. Cela me paraît évident avec une interface graphique, mais je voudrais éviter de la lancer pour trop solliciter le processeur et la RAM.

        • En ce qui concerne votre installation enceinte par jack sur le Raspberry avec télécommande Yatse, aucun problème particulier pour que cela ne fonctionne pas.
          L’absence d’écran n’empêche pas le redémarrage automatique de XBMC. Je pose d’ailleurs une question qui n’appelle pas de réponse : pourquoi arrêter son Raspberry ?
          Et pour réappuyer ma précédente réponse sur le redémarrage automatique, il faut procéder après installation à un « sudo update-rc.d xbmc defaults » (au pire ça force ce qui est déjà installé).

          XBMC pour peu que la synchronisation verticale soit bien activée consommera environ 20% de CPU et fort peu de mémoire. Ce qui permet tout autre tâche. Sur le mien cohabite un XBMC et un Zabbix, et je peux entreprendre bien des à-côtés. Et si vraiment pour une action ponctuelle il vous faudrait toutes les ressources du Raspberry, un arrêt momentanné du XBMC reste envisageable.

          Il faut noter que XBMC est pleinement orienté vidéo avec gestion de vidéothèque et plug-in TV. Peut-être pourriez-vous trouver un logiciel orienté uniquement musique dont l’interface graphique présenterait une meilleure veille.

          Enfin dernier conseil : n’hésitez pas à installer et tester. En soi ça n’engage à pas grand chose et vous pourrez vérifier que ça répond bien à vos attentes.

  3. Bonjour et merci pour ces explications détaillé. j’aimerais savoir si ensuite il serait possible de transférer le système de fichier sur une clé? est ce que cela n’endommagerait-il pas le fonctionnement de xbmc?

    Merci d’avance

  4. Bonjour,

    Enfin un tuto clair net et précis…

    J’ai 2 soucis…
    sudo cp -Rf $HOME/.xbmc ~xbmc/.xbmc
    sudo chown -R xbmc:xbmc ~xbmc/.xbmc
    Ces 2 lignes me renvoient le fait que les dossiers n’existent pas !
    Et dans les démarrages, je n’ai pas le pulsaudio (/usr/bin/pulseaudio –start)
    Une aide est possible ?
    Merci d’avance.

    • Quelques couches-culottes plus tard…
      sudo cp -Rf $HOME/.xbmc ~xbmc/.xbmc
      sudo chown -R xbmc:xbmc ~xbmc/.xbmc

      Il est possible que ce soit le ~ qui suivant les environnements ne renvoient pas le répertoire home du compte utilisateur.
      Quel est le résultat en essayant « en dur » comme suit ?
      sudo cp -Rf $HOME/.xbmc /home/xbmc/.xbmc
      sudo chown -R xbmc:xbmc /home/xbmc/.xbmc

      Quant au démarrage du pulseaudio il faut que je regarde ce dont il s’agit.

  5. Je suis debutant. J’ai installé kodi sous raspbian mais j’ai un probleme qui persiste: je n’arriva pas à passer en mode fenetre (profiter de kodi mais pouvoir swicher sur raspbian et surfer sur le net) et quand je sors de kodi, le système stoppe:plus moyen de revenir à raspbien et la téloche s’arrete…

Répondre à Olivier Locard Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.