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.
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 :
- 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 ! Page de téléchargement des builds