Installation de Kodi+SMB+Transmission sur Raspberry Pi

Tout d’abord, bonjour et bonne année à tous !

Le père noël, ce fieffé geek, a eu l’excellente idée de m’offrir cette année un Raspberry Pi. Le moment que j’attendais pour me décider à remplacer mon insatisfaisant Mediacenter Neufbox  était donc venu.

Pour inaugurer cette nouvelle section, je vous donc détailler comment transformer votre Raspberry Pi en une machine qui servira à la fois :

  1. de boitier Mediacenter pour regarder tous vos DivX sur la TV,
  2. de serveur de partage de fichiers en réseau,
  3. de seedbox, pour télécharger/partager de façon autonome des torrents sur internet.

[EDIT]
Depuis le 1er août 2014, XBMC porte maintenant le nom de Kodi.
{/EDIT]

Mais c’est quoi cette framboise ?

Le Raspberry Pi est une sorte de mini-ordinateur (de la taille d’une carte de crédit), doté d’une configuration et d’une connectique minimales mais suffisantes. Cette structure lui confère donc un attrait de taille : son prix ! Il est vendu nu à 25$, ce à quoi il faut quand même rajouter une alimentation micro-USB et une carte SD pour y mettre l’OS.

Photo du Raspberry Pi (modèle B)
Photo du Raspberry Pi (modèle B)

Compte-tenu de sa config minimaliste, un OS a été spécialement conçu pour lui : Raspbian. Comme son nom l’indique, c’est un dérivé de Debian.

Applications

La très grande force du Raspberry tient de la présence native de ports GPIO.  Ces ports  permettent en gros de brancher tout et n’importe quoi directement sur le Raspberry. L’application la plus courante d’utilisation de ces ports est la domotique domestique. Manuel Dorme (alias Korben) nous donne ici une liste impressionnante (et pourtant non exhaustive) des différentes applications.

Installation de Kodi

L’utilisation la plus habituelle, et la plus simple à mettre en œuvre, est d’utiliser le Raspberry comme Mediacenter.

Câblage

Pour cette phase, rien de bien tuant, il nous faut :

    • l’alimentation via micro-USB
    • un câble HDMI à relier à la TV
    • un disque externe pour le stockage des vidéos
  • Le câble Ethernet pour la liaison avec le routeur

Notre petit défi va être de réaliser toute l’installation sans jamais brancher de périphérique de saisie sur le Raspberry (ni clavier ni souris). Ceci demandera donc une machine déjà connectée au réseau (ordinateur ou smartphone).

A propos du disque externe

Si vous avez l’intention de brancher un disque autoalimenté, alors faites attention à l’ampérage nécessaire par USB. Il se peut en effet que l’intensité délivrée par le port USB du Raspberry soit insuffisante pour le disque (140 mA max). Vous pouvez alors recourir à la solution économique du double USB (si vous avez une alimentation USB disponible à proximité), ou alors utiliser un hub USB alimenté.

Quant au format de fichiers, l’expérience montre que vous avez tout intérêt à formater votre disque en ext4 !

Choix de la distribution de Kodi

Le soft le plus courant pour le Mediacenter est Kodi. Il avait été développé initialement pour la Xbox (sous le nom de XBMC) avant de se populariser et de gagner d’autres supports et OS.

Afin de gagner en performances et en convivialité, il existe trois principales distributions « tout en un » de Raspbian et de Kodi : OpenELEC, Raspbmc et XBian.

La première est réputée comme étant le meilleur compromis stabilité/performances, mais souffre d’une structure assez « rigide » : par défaut, il est impossible d’ajouter ou de supprimer des paquets à cette distro. Raspbmc est paraît-il la solution la plus complète nativement, malheureusement à l’heure où j’écris ces lignes, seul un courageux travaille à son développement (Bravo à Sam Nazarko).

Mon choix s’est finalement porté sur XBian. XBian se veut être la version la plus à jour de Kodi, ce qui a pour conséquence une stabilité légèrement moindre que celles des autres distros précédemment citées. Mais contrairement à OpenELEC, XBian ressemble plus aux distros classiques de Linux (telles que Debian), incluant même le gestionnaire de paquets apt-get !

Installation de XBian sur la carte SD

Cette fois encore, aucune difficulté de ce côté grâce aux utilitaires d’installation fournis sur le site de XBian. Une fois fait, il suffit de mettre la carte SD dans le slot, d’alimenter le Raspberry, et voilà !

Écran d'accueil de XBMC
Écran d’accueil de Kodi

Adresse IP du Raspberry

Pour la suite, vous aurez besoin de connaître l’adresse IP du Raspberry. Pour ce faire, vous pouvez au choix ouvrir l’interface d’administration de votre Box pour y trouver l’IP, ou vous connecter en SSH au Raspberry puis aller dans le menu « Network ».

Personnellement, j’ai l’habitude d’attribuer une IP fixe à toutes les machines de mon réseau. Et si votre Box vous le permet, je vous conseille d’attribuer un DNS de votre choix (par exemple « xbian ») au Raspberry, ce qui vous évitera par la suite d’avoir à retenir son adresse IP.

Configuration de l’accès à distance

Si vous avez de la chance, votre TV est compatible CEC, c’est à dire que vous pouvez utiliser la télécommande de votre TV pour contrôler les menus de Kodi, les signaux reçus par la TV étant transmis grâce au câble HDMI au Raspberry. Dans ce cas vous en avez fini avec la partie Mediacenter.

Si vous n’avez pas cette chance, rassurez-vous, tout n’est pas perdu. On va donc configurer Kodi pour autoriser le contrôle via le réseau. Depuis une autre machine, on va donc se connecter en SSH au Raspberry (utiliser par exemple Putty sous Windows, JuiceSSH sour Android) :

ssh xbian@xbian

Le mot de passe est : raspberry

L’utilitaire de configuration de XBian se lance par défaut. Dans celui-ci, rendez-vous dans la section Settings Kodi settings pour activer le « web server ». Maintenant vous pouvez contrôler Kodi depuis votre ordinateur en vous rendant à l’adresse suivante :

http ://xbian :8080

Notez que le nom de domaine « xbian » ne fonctionne ici que parce que je l’ai défini ainsi comme DNS. Remplacer par l’adresse IP du Raspberry sinon.

Sympa me direz-vous, mais c’est pas très intéressant d’utiliser un ordinateur pour contrôler le Mediacenter… Soit. Bien entendu vous pouvez utiliser votre smartphone pour accéder à cette adresse, mais dans ce cas vous avez tout intérêt à installer l’application Kodi Remote (ici pour Android, ou pour iPhone). Personnellement, ça m’a permis de recycler mon vieux Galaxy S en une télécommande dédiée Kodi…

Comme promis donc, on a réussi à configurer Kodi et son contrôle sans avoir à brancher de périphérique sur le Raspberry.

Bonus : s’affranchir des login/mdp lors des futures connexions SSH

Fainéant que nous sommes, il faut bien dire que c’est un peu pénible d’avoir à rentrer le nom d’utilisateur et le mot de passe lors de la connexion SSH. On va donc mettre en place une connexion par clés publique/privée.

Commencez par générer les clés sur la machine locale (pas le Raspberry, l’autre…)  :

ssh-keygen -t rsa

Enregistrez le tout où bon vous semble (vous pouvez laisser par défaut). Il vous est alors demandé de donner une « phrase de passe ». Le but étant de simplifier la connexion, on ne va pas utiliser de passphrase, donc tapez juste Entrée.

Il reste maintenant à transmettre la clé publique au serveur (XBian) :

ssh-copy-id -i ~/.ssh/id_dsa.pub xbian@xbian

puis de rentrer le mot de passe de l’utilisateur (xbian) sur la machine distante (xbian) : raspberry

Et voilà, maintenant vous pouvez vous connecter à xbian@xbian sans avoir à taper le mot de passe. Mais on va aller encore plus loin en créant un alias. Éditez-donc le fichier ./ssh/config pour y ajouter les lignes suivantes :

Host xbian
  HostName xbian
  Port 22
  User xbian

Et voilà, maintenant, pour vous connecter en tant que xbian sur la machine xbian, il vous suffit de lancer la commande suivante :

ssh xbian

Autre alternative

Frustré de ne pas pouvoir utiliser votre télécommande infra-rouge ? Vous n’avez qu’à installer un récepteur IR sur la framboise !

Partage de fichiers via Samba

Afin de pouvoir accéder facilement (i.e. sans avoir à passer par SSH) aux fichiers du Mediacenter, et ce sous quelqu’OS que ce soit, on va mettre en place un partage de fichiers sous Samba (SMB). On supposera donc que l’on veut partager tout le disque externe branché en USB.

Samba est installé par défaut sous Xbian (ainsi que sous OpenELEC), reste donc à configurer les dossiers partagés. Éditez le fichier /etc/samba/smb.conf :

sudo nano /etc/samba/smb.conf

Et ajoutez-y les lignes suivantes :

[Raspberry]
comment = Video sur Raspberry Pi
path = /media/Video
browseable = yes
public = yes
writeable = yes
printable = no

Vous pouvez vérifier que le fichier de configuration est valide :

testparm -s

Si oui, alors il ne reste plus qu’à relancer Samba :

sudo service samba restart

Enfin, histoire d’être tranquille sur les droits d’accès au disque :

 sudo chmod -R 777 /media/Video

Dès lors, tout le disque externe (appelé ici « Video ») sera accessible en écriture sous le nom « Raspberry » dans l’explorateur Windows.

Personnellement, je profite de serveur Samba pour synchroniser automatiquement les photos de mon smartphone Android avec un dossier de partage (expliqué ici), comme ça, même plus besoin d’allumer mon PC !

Télécharger des torrents directement depuis le Raspberry

Installation du service Transmission

On va maintenant transformer notre Raspberry en ce qui s’appelle une seedbox : on va faire tourner en tâche de fond (un service ou « daemon ») le logiciel de torrents Transmission sur le Raspberry.

Grâce à cela, il vous suffira par la suite d’allumer le Raspberry pour que vos téléchargement en cours se relancent. On commence donc par installer transmission-daemon :

ssh xbian
sudo apt-get install transmission-daemon

Configuration de Transmission

Le but est de pouvoir contrôler Transmission depuis n’importe-quelle machine du réseau (par exemple pour ajouter des torrents) sans avoir à passer par SSH. De plus, afin d’avoir un truc à peu près propre, on va séparer les fichiers en cours de téléchargement des fichiers complets. Dans mon cas, je veux qu’ils soient dans un dossier sur le disque « Video » :

mkdir /media/Video/Torrents
cd /media/Video/Torrents
mkdir Downloading Complets

Modifiez (en super-user) le fichier de configuration du daemon :

sudo nano /etc/transmission-daemon/settings.json

Il nous faut donc modifier les valeurs suivantes (elles sont rangées par ordre alphabétique) :

"download-dir": "/media/Video/Torrents/Complets",
"incomplete-dir": "/media/Video/Torrents/Downloading",
"incomplete-dir-enabled": true,
"rpc-authentication-required": false,
"rpc-enabled": true,
"rpc-whitelist-enabled": false,

Ces paramètres serviront, dans l’ordre, à :

    1. définir le dossier des téléchargement terminés
    1. définir le dossier des téléchargement en cours
    1. activer l’utilisation de dossiers distincts pour les torrents
    1. ne pas avoir à s’identifier pour accéder à Transmission
    1. autoriser le contrôle à distance
  1. avoir accès depuis n’importe-quelle machine

En prime, je vous conseille vivement les lignes suivantes :

"blocklist-enabled": true,
"blocklist-url": " http://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz",
"encryption": 2,

Ainsi vous éviterez les mauvais pairs (ceux de la liste noire), et vous forcerez le chiffrage des connexions, ce qui aura  (entre autres) pour effet de rendre Hadopi encore moins compétente…

Reste plus qu’à relancer Transmission :

sudo invoke-rc.d transmission-daemon reload

Accéder à la liste des téléchargements en cours

Maintenant que l’on a autorisé l’accès extérieur, vous pouvez vos rendre à l’adresse suivante pour consulter les téléchargements en cours :

http ://xbian :9091

(même remarque que précédemment quant au nom de domaine)

Ajouter des torrents à télécharger

Il est possible de faire ça en ligne de commande grâce au paquet transmission-remote, mais le plus intuitif est de le faire depuis son interface graphique. Si la machine cliente est sous Linux :

sudo apt-get install transmission-remote-gui

Ce programme a aussi été porté sous Windows (voir ici) et même sous Android !

Grâce à Transmission Remote, on peut donc lancer un téléchargement depuis son PC ou son smartphone Android, puis se barrer et laisser le Raspberry faire le boulot !

Conclusion

Pour à peine plus de 30€, on a réussi à installer un Mediacenter surpuissant sur sa TV, qui télécharge de façon autonome des torrents et qui permet d’accéder aux fichiers du disque depuis n’importe quel machine du réseau.

Pour aller plus loin

Kodi dispose de (très) nombreux add-on, ce qui laisse à l’utilisateur un très large choix d’utilisation.

En ce qui concerne Transmission, sachez que le fichier de configuration permet beaucoup de fonctionnalités (telles que la programmation horaire, par jour de la semaine etc.). Vous trouverez la liste complète des différents paramètres ici.

Il est possible que la charge CPU due à Transmission impacte un peu le FPS des films en HD. Pour automatiquement stopper les téléchargements lors de la lecture d’une vidéo, puis les relancer ensuite, je vous conseille la lecture de ce billet.

Bons films !