Raspberrypi : Lire des dvds commerciaux sous Raspbmc

Raspbmc est une distribution pour le Raspberry pi, un ordinateur qui fonctionne avec 5 volts et qui coûte 35 € sans les taxes. Il s'agit d'une base Debian, version ARM, sur laquelle on fait tourner une version patchée de Xbmc. Par défaut, pour des raisons notamment légales, la lecture de DVDs commerciaux est désactivée. Il faut donc compiler Xbmc avec les options qui vont bien, et installer quelques librairies liées à la lecture de DVD.

Mise en place de l'environnement de compilation

Pour compiler Xbmc, on ne vas pas s'amuser à compiler tout ça sur le Rpi directement, car la puissance du CPU prolongerait cette opération de façon conséquente. On va plutôt passer par un cross-compiler ; on compile pour une famille de CPU depuis un système dont le processeur ne fais pas partie (i.e : compilation d'exécutable 32 bits depuis une architecture 64 bits, ou vers une architecture ARM, etc.). De plus, Sam Nazarko nous facilite le travail, puisqu'une image est disponible en ligne, qui contient un système complet. On est certain de cette façon de disposer de toutes les librairies nécessaires et du bon réglages des variables d'environnement et autres détails.

Téléchargement de l'image

On va donc commencer par télécharger cette image de 363 Mo prévue pour une exécution dans un environnement i386, en lançant cette commande depuis un système 32 bits.

wget http://download.raspbmc.com/downloads/source/filesystem/buildfs-bcm_rootfs-raspbmc-i386_cross_r2-hardfp.tar.gz

On décompresse ensuite l'image dans un dossier cross_builder:

mkdir cross_builder tar -xzf buildfs-bcm_rootfs-raspbmc* -C cross_builder/

Source :

Chroot dans l'environnement de compilation

Le 'chroot' va nous permettre d'utiliser le contenu d'un dossier comme s'il s'agissait de l'installation complète d'un système d'exploitation. Une fois chrooté, ce sera donc comme si vous étiez dans un système distinct du vôtre. Dans les manipulations qui suivent, il peut être nécessaire d'exécuter les commande en tant que root en préfixant toutes les lignes avec 'sudo'. On règle dans un premier temps le réseau en copiant deux fichiers de configuration :

cp /etc/network/interfaces cross_builder/etc/network/interfaces cp /etc/resolv.conf cross_builder/etc/resolv.conf

Puis on monte le dossier spécial /proc de l'invité :

sudo mount proc -t proc cross_builder/proc

Préparation des sources et compilation

On télécharge les sources de Xbmc en utilisant le client Git :


1.  Si on a pas le client git d'installé :
2.  apt-get install git

git clone  ``` 

Un dossier 'xbmc' devrait avoir été créé. On y entre :  cd xbmc 

On patche le tout avec un script élaboré par notre cher Samy :

 wget  [ http://svn.stmlabs.com/svn/raspbmc/patches/XBMC-hardfp/patch_xbmc.sh ](http://svn.stmlabs.com/svn/raspbmc/patches/XBMC-hardfp/patch_xbmc.sh)
 sh patch_xbmc.sh 

### Modification de la configuration : enable-libdvdcss 

Le but de toute cette manipulation est de modifier une option de
compilation qui se trouve dans le fichier
*xbmc/tools/rbp/depends/xbmc/Makefile*. Il ne faut pas oublier cette
Ă©tape, sinon vous vous retrouverez avec un build classique de Raspbmc !

On va donc Ă©diter le fichier *xbmc/tools/rbp/depends/xbmc/Makefile* pour
remplacer Ă  la ligne 12 l'option '--disable-dvdcss' par
'--enable-dvdcss' :

 nano -c xbmc/tools/rbp/depends/xbmc/Makefile 

Validez vos modifications avec le raccourci clavier 'Ctrl + o', puis
quittez 'nano' avec le raccourci 'Ctrl + x'

Nos sources sont maintenant prêtes à être compilées !

On lance les scripts automatisés suivants

 sh xbmc/tools/rbp/setup-sdk.sh   make -C xbmc/tools/rbp/depends/xbmc 

Une fois que toutes les opérations sont terminées, on lance la
compilation depuis la racine des sources xbmc :

 cd xbmc   make -j'X' 

Si on a un processeur Ă  plusieurs coeurs, on remplace 'X' ci-dessus
par le nombre de processeurs.

Source : 

## Packaging de la version compilée de Xbmc 

Une fois la compilation terminée, il reste à créer un paquet du binaire,
puis à le déployer sur notre Rpi :

On télécharge un petit script Kifétou© :

 wget  [ http://svn.stmlabs.com/svn/raspbmc/patches/nightly_scripts/create_tarball.sh ](http://svn.stmlabs.com/svn/raspbmc/patches/nightly_scripts/create_tarball.sh)

Puis on lance les commandes suivantes :

 make install   sh create_tarball.sh 

Après tout ça, on doit avoir une belle archive TAR dans le dossier
*/opt*, du nom de *xbmc-rbp*.tar.gz*.

Source : 

## Licence Mpeg2 

Pour lire des DVDs, il vous faudra dans tous les cas une licence Mpeg2.
Pour l'activer, il faut un numéro de série qui sera rattaché à celui de
votre Rpi. Pour en obtenir un, il vous faudra vous affranchir de 3 euros
environ, puis entrer le numéro de série via l'add-on *Raspbmc settings*

Plus d'informations :  - en
Anglais  Achat de la licence : 
Faire cette manipulation avant d'installer notre version compilée
permet de ne pas avoir Ă  repasser par l'add-on plus tard.
##### Problème avec l'add-on "Raspbmc settings" 

Si le lancement d' l'add-on pose un soucis plus tard, il faut modifier
le fichier
*/opt/xbmc-bcm/xbmc-bin/share/xbmc/addons/script.raspbmc.settings/default.py*,
et commenter les lignes 61 Ă  64 en ajoutant le sign '##' devant :
  1. if os.path.isfile(UPGRADE_PATH):
  2. os.remove(UPGRADE_PATH)
  3. if not os.path.isdir(UPGRADE_PATH):
  4. os.makedirs(UPGRADE_PATH)

### Installation de la version toute fraîche 

On s'arrange pour transférer l'archive crée plus tôt sur le Rpi, par
SSH ou FTP par exemple, puis on se logue en SSH. Puis on effectue les
opération suivantes
Il faut que les mises à jour automatique soient désactivées via
l'add-on "Raspbmc settings" ! Si ce n'est pas le cas,
l'installateur se lancera au redémarrage du Rpi et écrasera votre
version avec la plus récente disponible sur le serveur.
  1. on stoppe xbmc

sudo initctl stop xbmc

  1. on backup l'installation existante

cp /opt/xbmc-bcm /opt/xbmc-bcm_bak

  1. on décompresse l'archive dans '/opt'

sudo tar -xzf xbmc-rbp*.tar.gz -C /opt

  1. on relance xbmc

sudo initctl start xbmc ```

Installation des librairies DVD

On installe les librairies suivantes sur le Rpi:

sudo apt-get install libdvdread4 libdvdnav4

On installe enfin la fameuse librairie de décodage des DVD commerciaux :

wget http://www.deb-multimedia.org/pool/main/libd/libdvdcss/libdvdcss2_1.2.12-dmo2_armhf.deb sudo dpkg -i libdvdcss2_1.2.12-dmo2_armhf.deb

Téléchargement du build

Le build fait 140 Mo et je ne pense pas pouvoir le mettre à disposition via mon serveur, dont la bande-passante est limitée. Si quelqu'un peut héberger le fichier sur un serveur, je serais heureux de lui fournir le fichier ! Une fois cette version installée, il vous faudra suivre les indications concernant les librairies DVD ci-dessus ! Page de téléchargement des builds