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
In order to build xbmc, we're not going to use the rpi CPU, because its relatively poor performances would extend the duration of this operation greatly. We'd rather cross-compile ; build for a CPU architecture from a system which the processor is not the same ( i.e :building 32bits binaries from a 64bits environment, ARM, etc.). Sam Nazarko has made available a full environment image
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 : http://www.raspbmc.com/wiki/technical/build-filesystem/
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 :
#Si on a pas le client git d'installé :
#apt-get install git
git clone https://github.com/xbmc/xbmc
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
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 : http://www.raspbmc.com/wiki/technical/building-xbmc/
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
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 : http://www.raspbmc.com/wiki/technical/building-xbmc/
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 : http://www.raspberrypi.org/archives/1839 - en Anglais Achat de la licence : http://www.raspberrypi.com/
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 de 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 :
# if os.path.isfile(UPGRADE_PATH):
# os.remove(UPGRADE_PATH)
# if not os.path.isdir(UPGRADE_PATH):
# 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.
# on stoppe xbmc
sudo initctl stop xbmc
# on backup l'installation existante
cp /opt/xbmc-bcm /opt/xbmc-bcm_bak
# on décompresse l'archive dans '/opt'
sudo tar -xzf xbmc-rbp*.tar.gz -C /opt
# 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 !