Rechercher dans ce blog

dimanche 11 novembre 2012

Installation XBMC + PVR sous Ubuntu, IPTV tvheadend et films sur NAS Synology

L'objectif de cet article est de configurer la solution suivante :
  • Installer XMBC PVR sur une machine Ubuntu.
  • Configuration de base XBMC.
  • Organiser ses films.
  • Configurer XBMC pour accéder aux films sur mon NAS Synology.
  • Configurer Ubuntu pour que mes 2 connexions réseau fonctionnent simultanément : mon fournisseur d'accès (K-Net) me permet de recevoir l'IPTV mais sur un port différent du port DATA, j'ai donc besoin de 2 points d'accès réseau).
  • Installer et ajouter les chaînes IPTV à TVHEADEND.
  • Configurer XBMC pour regarder la télé en utilisant TVHEADEND.
  • Configurer l'EPG.
  • Voir ses photos.
  • Configurer son iPhone pour commander XBMC.
  • Empêcher l'écran de se mettre en veille.
  • Améliorer la prise en charge de la télécommande.
Autre points intéressants à étudier :
  • Activer les informations sur les chaînes (EPG).
  • Enregistrer la télé.
  • Regarder la télé depuis un autre client.
C'est parti !

Modifications

27/04/2013 : changement de l'adresse du dépôt pour tvheadend, le site d'Adam Sutton ayant changé.
22/09/2013 : correction de la table de routage, la TV ne fonctionnant plus depuis début septembre.
03/11/2013 : ajout du paramétrage pour corriger le problème des photos qui ne s'affichent pas. Paragraphe ajouté : "Voir ses photos".
30/03/2014 : configuration pour changer les chaines depuis les chiffres de la télécommande, configuration pour ne pas devoir rafraichir le programme TV à la main, diverses corrections.

Installer XMBC PVR sur une machine Ubuntu

Des informations intéressantes sont disponibles ici : http://wiki.xbmc.org/index.php?title=Installing_XBMC_for_Linux.

En 2014, j'utilise la méthode expliquée dans le lien ci-dessus, c'est à dire avec le dépôt officiel :
sudo add-apt-repository ppa:team-xbmc/ppa
sudo apt-get update
sudo apt-get install xbmc

Obsolète :
Le dépôt Ubuntu Pulse-Eight (https://launchpad.net/~pulse-eight) est intéressant car il permet d'installer facilement XBMC-PVR et TVHEADEND :
sudo add-apt-repository ppa:pulse-eight/pulse
sudo apt-get update 
sudo apt-get install xbmc

Autre possibilité pour installer la version unstable (xbmc 12 RC3 à l'heure où je mets à jour cet article).
sudo apt-get install python-software-properties pkg-config
sudo add-apt-repository ppa:team-xbmc/unstable
sudo apt-get update
sudo apt-get install xbmc

Configuration de base XBMC

Lancer XBMC.
Pour la configuration de base de XBMC, cet article est intéressant : http://www.plugngeek.net/tuto-xbmcbuntu-un-mediacenter-puissant.
Le thème AEON est très sympa. Cependant, avant de l'activer, il faut préalablement configurer le mode PVR (cela doit provenir d'un petit bug qui empêche d'activer le mode PVR depuis AEON).

Voici les paramètres de base que j'ai modifiés :
  • System / Settings / Appearance
    • International : changer la langue pour mettre le système en français.
    • Thème : Confluence ou Aeon ou autre.
  • Système / Paramètres / Vidéo
    • Médiathèque 
      • Actualiser la médiathèque au démarrage : ON
    • Lecture
      • Vérifier que l'accélération graphique est activée
  • Système / Paramètres / Musique
    • Médiathèque 
      • Télécharger les infos supplémentaires lors des mises à jour : ON
      • Actualiser la médiathèque au démarrage : ON
  • Système / Paramètres / Météo
    • Général / Paramètres
      • Choisir le nom des villes qui vous intéressent.
  • Système / Paramètres / Réseau
    • Services
      • Permettre le contrôle de XBMC en HTTP : ON
      • Définir le port, le login et le mot de passe.
  • Système / Paramètres / Système
    • Gestion de l'énergie
      • 15 minutes avec un économiseur d'écran.
Pour que XBMC démarre automatiquement à l'ouverture de session, 2 possibilités :
  1. Dans "Applications au démarrage" sous Ubuntu, créer une commande pour démarrer XBMC.
  2. Il est possible de choisir XBMC comme gestionnaire de fenêtre, au lieu de Unity ou Gnome-Shell.
Dernier point, il peut être utile de paramétrer Ubuntu pour que la session s'ouvre automatiquement sans avoir à saisir un mot de passe :

Organiser ses films

Pour organiser ses films, j'ai suivi les conseils de ce site : http://www.nikopik.com/installation-et-configuration-du-mediacenter-xbmc, paragraphe "4.1 Organisation des films". L'idée est de placer un film par dossier, le dossier comportant le nom du film + l'année de sortie.
Pour renommer ses films en masse, vous pouvez suivre le tuto suivant : http://la-taverne.info/configurer-xbmc-addon-fr/. Je n'ai pas encore testé cette solution. J'ai par contre utilisé TheRenamer (http://www.therenamer.com/) qui fait plutôt bien le boulot.

Configurer XBMC pour accéder aux films sur mon NAS Synology

Via NFS

Pré-requis :
Exemple de fichier /etc/fstab :
# Montage permanent du NAS 
nasjmt://volume1/music /media/nas_music nfs soft,intr,rsize=8192,wsize=8192,timeo=14,rw 0 0
nasjmt://volume1/photo /media/nas_photo nfs soft,intr,rsize=8192,wsize=8192,timeo=14,rw 0 0
nasjmt://volume1/video /media/nas_video nfs soft,intr,rsize=8192,wsize=8192,timeo=14,rw 0 0

En fait, je ne monte pas les disques en NFS via XBMC, mais via Ubuntu. Dans XBMC, mes dossiers NFS seront donc vus comme des dossiers locaux. Par exemple, mes films sont donc dans le dossier /media/nas_video, qui est vu comme un dossier local par XBMC, mais qui est un montage NFS dans Ubuntu.
C'est un choix et il existe d'autres méthodes...

Via SMB

La configuration est assez simple.
Cliquer sur "Ajouter une source vidéo" :


Cliquer sur "Parcourir" :


Cliquer sur "Ajouter un chemin réseau" (je configure SMB manuellement car en allant dans "Réseau Windows", j'ai des erreurs d'authentification.


Saisir le nom de son serveur SMB, l'utilisateur et le mot de passe : 


Le serveur SMB doit alors apparaître dans la liste :


En sélectionnant l'entrée précédemment ajoutée, il est possible de parcourir le serveur SMB (en l’occurrence le NAS) :


Configuration d'un scraper

Ensuite, il faut aller dans Vidéos / Fichiers, puis choisir "Ajouter une source vidéo...". Dans "Parcourir", je sélectionne le dossier contenant mes films (/media/nas_videos/Films). Après avoir validé cet écran, j'ai la possibilité de configurer le scraper, c'est très important ! Voici mon paramétrage (j'utilise themoviedb.org que je modifie pour mettre la langue en FR et utiliser les notes de IMDB) :



Le paramétrage pour les séries est le suivant :

Il faut ensuite poursuivre avec la musique, les photos...

Configurer Ubuntu pour que mes 2 connexions réseau fonctionnent simultanément

Mon fournisseur d'accès (K-Net) me permet de recevoir l'IPTV mais sur une entrée réseau différente de l'entrée DATA, j'ai donc besoin de 2 points d'accès réseau. Il est nécessaire d'adapter la table de routage pour que ces 2 points d'accès puissent fonctionner simultanément.

Remarque du 22/09/2013 : je n'avais plus la TV depuis début septembre. J'ai corrigé le problème en modifiant la table de routage pour ajouter une route vers le réseau 192.168.150.0/255.255.255.0 en passant par le réseau TV et non Data (voir ci-dessous dans l'exemple).

2 solutions techniques :
  1. Modifier le fichier "/etc/network/interfaces". J'ai abandonné cette méthode car j'avais des messages "Waiting up to 60 more seconds for network configuration".
  2. Utiliser network-manager.

Utilisation du fichier "/etc/network/interfaces"

J'ai d'abord désactivé network-manager en éditant le fichier "/etc/init/network-manager.conf" et en mettant en commentaire les lignes suivantes :
start on (local-filesystems
         and started dbus)

Ensuite, voici mon fichier "/etc/network/interfaces" :
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth1
iface eth1 inet dhcp
pre-up ifconfig eth1 mtu 9000

# The secondary network interface
auto eth2
iface eth2 inet dhcp
pre-up ifconfig eth2 mtu 9000

# Static route table
up route add -net 10.0.0.0/8 gw 10.0.0.253 dev eth2
up route add -net 224.0.0.0/4 dev eth2
up route add -net default gw 192.168.10.1 dev eth1
up route add -net 192.168.150.0/24 gw 10.0.0.253 dev eth2 

10.0.0.253 est la passerelle K-Net pour l'IPTV.
224.0.0.0/4 permet d'indiquer que toutes les adresses multicast passent par l'interface eth2, qui est l'interface réseau branchée à mon CPE.
La route par défaut est sur eth1, branchée sur mon routeur dont l'adresse est 192.168.10.1.
La dernière route est l'ajout de septembre 2013 pour réparer le flux TV.

Utilisation de network-manager

J'ai ajouté les règles décrites précédemment à network-manager. Voici en quelques copies d'écran à quoi ressemble la configuration.
J'ai renommé mes 2 connexions :


Pour les 2 connexions, j'ai fixé mon MTU à 9000 octets, mon réseau supportant mes Jumbo frames.


Rien de particulier ici. Si ce n'est cliquer sur "Routes" pour accéder aux options de la table de routage :


J'ai ici entré les 3 routes nécessaires à la connexion TV. J'ai aussi coché la case "Utiliser cette connexion..." afin que cette connexion ne soit pas utilisée par défaut. Important, il ne faut pas indiquer de passerelle pour le réseau 224.0.0.0/4. Sur la copie d'écran, il manque la route vers le réseau 192.168.150.0/255.255.255.0 vers la passerelle 10.0.0.253.
 


 Pour la connexion LAN, j'ai uniquement changé le MTU à 9000.


Installer et ajouter les chaînes IPTV à TVHEADEND

J'ai installé TVHEADEND en utilisant le dépôt suivant : https://launchpad.net/~adamsutton/+archive/tvheadend. Note : la dernière ligne fait partie du dépôt XBMC 12 Frodo et permet d'installer le plugin PVR pour TVHEADEND.
curl http://apt.tvheadend.org/repo.gpg.key | sudo apt-key add -
sudo apt-add-repository http://apt.tvheadend.org/stable/
sudo apt-get update 
sudo apt-get install tvheadend
sudo apt-get install xbmc-pvr-tvheadend-hts


TVHEADEND vous demandera de définir un login / mot de passe, il sera nécessaire ultérieurement.
Après l'installation, il faut se connecter à TVHEADEND : http://localhost:9981/extjs.html. Il faut alors aller dans "Configuration" puis "IPTV".

Il faut ensuite ajouter les chaînes une par une en cliquant sur "Add service". "Group" contient l'adresse IP de la chaîne, "Port" étant le port du service. La copie d'écran ci-dessus montre un exemple pour TF1.

Il serait beaucoup plus simple de pouvoir importer les chaînes via un fichier m3u, mais il semble que cela ne soit pas encore possible.

Des informations complémentaires sur la configuration de TVHEADEND sont disponibles ici : http://www.monnetamoi.net/articles.php?lng=fr&pg=70.

Configurer XBMC pour regarder la télé en utilisant TVHEADEND

Dans XBMC, il faut aller dans "Système", puis "Paramètres", "TV" puis "Général".
Il faut ensuite cocher la case "Activé" à la 1ère ligne. XBMC vous informera que vous devez installer un module complémentaire "The PVR manager has been enabled without any enabled PVR add-on...". Il faut alors sélectionner l'add-on "Tvheadend HTSP Client" et le configurer en saisissant les login / mot de passe définis lors de l'installation de TVHEADEND.


Après cela, dans "TV Direct", vous devriez voir les chaînes configurées précédemment dans TVHEADEND.


Configurer l'EPG

L'EPG est le petit nom du Guide Electronique des Programmes.

Création d'un compte sur Kazer.org

Avant tout, il faut aller sur le site http://www.kazer.org et se créer un compte. Ensuite, dans le menu "Mes chaînes", il faut sélectionner les chaînes pour lesquelles on souhaite récupérer les informations. L'élément important est le userhash qui apparaît en haut à gauche.


Configuration de TVHEADEND

Il faut indiquer à TVHEADEND quel module on souhaite utiliser (XMLTV: France (Kazer)) et configurer ce module.

Pour configurer le module, il faut ouvrir une ligne de commande et là, subtilité, il faut se connecter au user hts sinon cela ne fonctionne pas ! Source : https://www.lonelycoder.com/redmine/boards/12/topics/5800. A taper :
sudo su - hts
tv_grab_fr_kazer --configure


L'outil demande alors de saisir son userhash - récupéré précédemment sur le site www.kazer.org - puis de sélectionner les canaux que l'on souhaite obtenir. Ca ressemble à quelque chose comme ça :



Ensuite, tout se passe dans l'interface web de TVHEADEND.
Dans "Configuration", puis dans "EPG Grabber", on va commencer par activer les logs en debug, en cliquant sur la petite roue en bas à droite de l'interface web.
Sélectionner "XMLTV: France (Kazer)" comme "Module", puis faire "Save configuration".

Remarque importante : toutes les semaines j'étais obligé de changer la configuration pour relancer la récupération des programmes. En mettant "Grab interval" à 1h, je n'ai plus le problème. Je pense que le timer démarre au lancement du media center. Dans mon cas, comme celui-ci fonctionne rarement plus de 2h d'affilée, j'ai mis un temps de refresh assez court.


Dans la console en debug, vous devriez voir des informations qui ressemblent à ceci :



Si dans les logs le message "grab returned no data" apparait, vérifier que la commande "tv_grab_fr_kazer --configure" a bien été appelée avec le user hts.

On peut vérifier le mapping dans l'onglet "Channels". Si certaines chaines ne sont pas reconnues, il faut :
  • Soit changer le nom des chaines pour utiliser exactement le même nom que sur le site kazer.org.
  • Soit dans la colonne "EPG Grab source", commencer à saisir "xmltv" pour obtenir l'autocomplétion et la liste des chaines possibles (bizarrement en déroulant la liste déroulant je n'avais rien).
Exemple ci-dessous avec France 2 et France 3 qui ne sont pas reconnues.


Enfin, dans l'onglet "Electronic Program Guide", en cliquant sur les 2 flèches en bas à gauche pour rafraichir la page, les programmes devraient apparaitre.

Le programme TV devrait alors apparaitre dans XBMC.

Les logos des chaines peuvent être trouvés sur internet, sur des sites comme celui-ci par exemple.

Voir ses photos

Pour voir ses photos, il faut régler les sources dans la rubrique "Images".
Par contre, j'ai rencontré le problème suivant : l'affichage est noir et au moment où je change de photo, celle-ci s'affiche et disparait instantanément.
La résolution du problème est expliquée ici : http://forum.xbmc.org/showthread.php?tid=157846.
  • Aller dans Système / Système / Sortie vidéo / Synchronisation verticale : Activée pendant la lecture vidéo (si l'option est sur Activée, je ne vois plus les images).

Configurer son iPhone pour commander XBMC

Il faut installer l'application gratuite XBMC Remote (https://itunes.apple.com/us/app/official-xbmc-remote/id520480364?mt=8).
If faut ensuite suivre le paragraphe "Configuration pour Android/iPhone" sur le site suivante : http://www.plugngeek.net/tuto-xbmcbuntu-un-mediacenter-puissant.

Empêcher l'écran de se mettre en veille

TODO : A COMPLETER et à REVOIR !!!
S'inspirer du script sur cet article : http://askubuntu.com/questions/61291/how-to-permanently-disable-monitor-power-saver-using-the-command-line
Créer un script "switch_dpms" dans /usr/bin (ne pas oublier de lui donner les droits d'exécution) qui contient le code suivant :
#!/bin/bash
export DISPLAY=:0.0
if [ $# -eq 0 ]; then
  echo usage: $(basename $0) "on|off|status|keep-on"
  exit 1
fi

if [ $1 = "off" ]; then
  echo -en "Turning monitor off..."
  xset dpms force off
  echo -en "done.\nCheck:"
  xset -q|grep "Monitor is"
elif [ $1 = "on" ]; then
  echo -en "Turning monitor on..."
  xset dpms force on
  echo -en "done.\nCheck:"
  xset -q|grep "Monitor is"
elif [ $1 = "keep-on" ]; then
  echo -en "Monitor will stay on..."
  xset s off -dpms
  echo -en "done.\nCheck:"
  xset -q|grep "Monitor is"
elif [ $1 = "status" ]; then
  xset -q|sed -ne 's/^[ ]*Monitor is //p'
else
  echo usage: $(basename $0) "on|off|status"
fi

Note : il semble qu'il faille supprimer le "export DISPLAY=:0.0" qui fait planter le script.
Il faut ensuite ajouter ce script au démarrage de la session de l'utilisateur qui exécute xbmc. On peut donc ajouter la ligne suivante dans l'interface "Applications au démarrage" de Ubuntu :
/usr/bin/switch_dpms keep-on

Améliorer la prise en charge de la télécommande

Cf. http://wiki.tuxgasy.fr/doku.php?id=telecommande_konig_cmp-mediarem12 et http://forum.stmlabs.com/showthread.php?tid=4632.

  • Créer un fichier keymap. Le plus simple est de récupérer celui-ci : http://depot.tuxgasy.fr/download/xbmc/remote.konig.cmp-mediarem12.xml
  • Placer ce fichier dans le dossier ~/.xbmc/userdata/keymaps/.
  • Créer le fichier ~/.xmodmap et copier les lignes suivantes :
    keycode 10 = 1
    keycode 11 = 2
    keycode 12 = 3
    keycode 13 = 4
    keycode 14 = 5
    keycode 15 = 6
    keycode 16 = 7
    keycode 17 = 8
    keycode 18 = 9
    keycode 19 = 0
  • Créer un fichier xmodmap_script.sh dans un répertoire de l'utilisateur exécutant XBMC et lui donner les droits d'exécution. Ce fichier doit contenir les lignes suivantes :
    DISPLAY=:0 xmodmap ~/.xmodmap
  • Le script précédent ne peut-être exécuté qu'une fois que l'interface graphique est démarrée. On utilise donc le fichier autoexec.py qui permet d'exécuter des commandes au démarrage de XBMC. Il faut modifier (ou créer) le fichier /home/monuser/.xbmc/userdata/autoexec.py comme suit :
    import xbmc
    import os
    os.system("/home/monuser/monchemin/xmodmap_script.sh")

Sources utilisées

1 commentaire:

  1. Super,
    J'attends avec impatience ton avancement sur la partie réseau avec KNET.
    J'envisage de monter le même systeme que toi.
    A+

    RépondreSupprimer