Expériences Linux et Android

Accueil > Articles > XBMClogin

XBMClogin

Un outil pour démarrer automatiquement XMBC en standalone via LIRC

mercredi 8 août 2012, par Admin

Introduction

Mon serveur actuel est basé sur un processeur AMD E-350. Celui-ci est capable de décoder via la carte graphique les flux H264 et VC-1 utilisé pour la majorité des vidéos HD.

Ce serveur fonctionne en permanence en mode « console », c’est à dire sans session X11 de démarrée. Or, à la demande, je souhaitais pouvoir lancer une session X11 avec XBMC en mode « standalone » pour pouvoir visionner ma médiathèque via un vidéo-projecteur ou une télévision Full HD connectés en HDMI.

Ci-dessous, vous trouverez toute les étapes nécessaires afin de rendre possible le lancement de XBMC via une simple touche (par exemple la touche « Media » de votre clavier).

Installer XBMC

Afin d’exploiter au mieux les caractéristique de mon serveur, j’utilise une version spécifique d’XBMC, qui exploite directement l’API XvBA d’AMD. L’installation de cette version fera l’objet d’un article ultérieurement. En attendant, vous pouvez utiliser un dépôt Ubuntu pour installer une version standard d’XBMC très facilement.

Voir les liens ci-dessous pour vous aider à installer XBMC sous Ubuntu (en anglais) :

Après avoir suivi l’une de ses deux pages, vous devriez être en possession d’une version d’XBMC fonctionnelle sur votre système.

Créer et configurer un utilisateur XBMC

Première étape ici, créer l’utilisateur XBMC, en lui donnant les droits d’accès aux périphériques audio, video, cdrom et users (si la médiathèque est partagée entre les différents utilisateurs) :

$ sudo useradd -m -G audio,video,cdrom,users,games -c "XBMC Media Center,,," xbmc
...
$ sudo passwd xbmc
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à jour avec succès

Maintenant que l’utilisateur est créé, la suite de la configuration pour celui-ci doit se faire en étant connecté en tant que « xbmc ». Donc, sur une autre console (switcher avec les touches Alt+F1 à Alt+F6), connectez vous en tant qu’utilisateur « xbmc ».

Nous allons maintenant faire qu’XBMC, installé au chapitre précedent, se lance correctement quand l’utilisateur xbmc lance une session X11. Pour cela, il faut créer le fichier « /home/xbmc/.xinitrc » :

#!/bin/sh
xrandr --output DFP2 --off
xbmc-standalone --debug

L’appel à la command « xrandr » me permet de désactiver l’écran connecté en DVI et donc n’afficher XBMC que sur l’écran branché en HDMI. La configuration par défaut de mon serveur X11 est multi-écran, mais un seul est utilisé avec XBMC. Mettez cette ligne en commentaire si vous n’étes pas en configuration multi-écran.

Après écriture de ce script de lancement de session X, vous pouver l’essayé en tapant la commande « startx ». Le serveur X11 doit se lancer, votre script Xinit personnalisé doit s’exécuter et donc XBMC doit démarrer en mode standalone. Quitter XBMC et déconnecter vous pour l’étape suivante.

Dernière étape, changer le shell par défaut de l’utilisateur pour lancer automatiquement XBMC quand l’utilisateur se connecte sur une console :

$ sudo usermod -s /usr/bin/startx xbmc

Maintenant, XBMC se lancera automatiquement quand l’utilisateur xbmc se connectera sur la console.

PS : Toute cette manipulation suppose qu’aucun gestionnaire de connexion graphique n’est lancé. Au cas ou celui-ci est lancé automatiquement, il faut l’interdire. Éditer « /etc/init/lightdm.conf » et modifier la partie « start on » comme ci-après :

start on ((filesystem
          and runlevel [!026]
          and started dbus
          and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
               or stopped udev-fallback-graphics))
         or runlevel PREVLEVEL=S)

L’ajout de 2 dans « [!026] » permet d’interdire le lancement de LightDM dans le runlevel 2, celui par défaut du système.

Installer XBMClogin

Récupérer les sources de XBMClogin avec « git » :

$ git clone http://dhgirault.fr/gitweb/repos/xbmclogin.git xbmclogin

Compiler et installer dans « /usr/local » :

xbmclogin $ make
...
xbmclogin $ sudo make install
...

L’installation ajoute un fichier de configuration pour upstart, « /etc/init/tty11.conf », qui permet de lancer automatiquement XBMClogin sur tty11 au lancement du système.

Ensuite, il ne reste plus qu’à configurer la touche de lancement de XBMC dans les fichier de configuration. Editer le fichier de configuration comme ci-dessous :

# Configuration file for xbmclogin
# Lines with '#' are comments
# Line must have this format:
# <token>=<value>
# Where token is 'user', 'device' or 'hotkey'
# Value is anything you want, taken from after the '=' sign to EOL excluded.
loglevel=2
user=xbmc
device=/dev/lircd
hotkey=KEY_MEDIA

Vous pouvez voir que le « device » spécifié est « /dev/lircd ». C’est une dépendance actuellement de XBMClogin qui utilise lircd ou inputlircd pour recevoir les evenements en provenance d’une télécommande ou d’un périphérique « input » standard (clavier, souris).

Si vous souhaiter lancer XBMC via une combinaison de touche de votre clavier, installer le package « inputlirc » et configurer le en éditant le fichier « /etc/default/inputlirc » :

# Options to be passed to inputlirc.
EVENTS="/dev/input/event2"
OPTIONS="-c -r 250"

Utiliser les commandes « lsinput » et « input-events » du package « input-utils » pour trouver le périphérique à utiliser et le code correspondant à la touche qui sera utilisée. Pour info, les touches de mon clavier actuel sont réparties sur 3 périphériques !!!

$ sudo lsinput
...
/dev/input/event2
  bustype : BUS_USB
  vendor  : 0x45e
  product : 0x745
  version : 273
  name    : "Microsoft Microsoft® 2.4GHz Tra"
  phys    : "usb-0000:00:1a.0-1/input0"
  uniq    : ""
  bits ev : EV_SYN EV_KEY EV_MSC EV_LED EV_REP

/dev/input/event3
  bustype : BUS_USB
  vendor  : 0x45e
  product : 0x745
  version : 273
  name    : "Microsoft Microsoft® 2.4GHz Tra"
  phys    : "usb-0000:00:1a.0-1/input1"
  uniq    : ""
  bits ev : EV_SYN EV_KEY EV_REL EV_ABS EV_MSC

/dev/input/event4
  bustype : BUS_USB
  vendor  : 0x45e
  product : 0x745
  version : 273
  name    : "Microsoft Microsoft® 2.4GHz Tra"
  phys    : "usb-0000:00:1a.0-1/input2"
  uniq    : ""
  bits ev : EV_SYN EV_KEY EV_REL EV_ABS EV_MSC EV_REP
...
$ sudo input-events 4
/dev/input/event4
  bustype : BUS_USB
  vendor  : 0x45e
  product : 0x745
  version : 273
  name    : "Microsoft Microsoft® 2.4GHz Tra"
  phys    : "usb-0000:00:1a.0-1/input2"
  uniq    : ""
  bits ev : EV_SYN EV_KEY EV_REL EV_ABS EV_MSC EV_REP

waiting for events
11:35:55.960705: EV_MSC MSC_SCAN 786855
11:35:55.960710: EV_KEY KEY_DOCUMENTS (0xeb) pressed
11:35:55.960722: EV_SYN code=0 value=0
11:35:56.160721: EV_MSC MSC_SCAN 786855
11:35:56.160724: EV_KEY KEY_DOCUMENTS (0xeb) released
11:35:56.160737: EV_SYN code=0 value=0
11:35:58.016793: EV_MSC MSC_SCAN 786870
11:35:58.016796: EV_KEY ??? (0x1ba) pressed
11:35:58.016808: EV_SYN code=0 value=0
11:35:58.192847: EV_MSC MSC_SCAN 786870
11:35:58.192850: EV_KEY ??? (0x1ba) released
11:35:58.192869: EV_SYN code=0 value=0
11:36:00.880930: EV_MSC MSC_SCAN 786989
11:36:00.880933: EV_KEY KEY_ZOOMIN (0x1a2) pressed
11:36:00.880945: EV_SYN code=0 value=0
11:36:01.056931: EV_MSC MSC_SCAN 786989
11:36:01.056934: EV_KEY KEY_ZOOMIN (0x1a2) released
11:36:01.056947: EV_SYN code=0 value=0
...

Profiter de votre système

Et voilà ! Vous avez maintenant un système pour lancer à la demande XBMC via une simple touche de votre clavier.