Mythtv

Construction de la page en cours

Mythtv est un logiciel libre et open source distribué sous GPL v2 pour Linux et OSX, transformant un ordinateur en magnétoscope numérique et en centre de divertissement multimédia.

C'est un système qui permet de programmer l'enregistrement d'émissions de télévision à l'aide d'un guide électronique des programmes (EPG), et de regrouper des fonctions telles que la navigation sur le Web, la lecture de DVD, le visionnement de photos numériques et un lecteur audio numérique.

Il est composé d'une ou plusieurs machine(s) équipé(és) de cartes d'acquisitions analogique ou numérique (type DVB-{T,C,S} en PCI ou USB) pour enregistrer les émissions de TV. Le démon en charge de réaliser ces opérations est appelé “backend”. Il est également capable de réaliser des opérations lourdes telle que des transcodes de vidéos ou d'exécuter des algorithmes de détection de publicités. L'interface graphique, appelée “frontend”, est optimisée pour s'afficher sur une télévision et être pilotée avec une télécommande ou un smartphone. Les “backends” et “frontends” communiquent via le réseau et ne sont pas donc pas nécessairement sur la même machine physique. Plusieurs “frontends” peuvent fonctionner en même temps sur autant d'ordinateurs différents.

Un shéma vaut mieux qu'un long discours :

Architecture Mythtv avec des backend et frontend

L'enregistrement des émissions de TV est effectué à l'aide de cartes tuner analogiques (PVR 350) ou numériques (DVB-T : Nova-T-500 ou DVB-C : SATELCO EasyWatch)

Carte Hauppauge PVR 350   Carte Hauppauge NOVA-T-500   Carte SATELCO EasyWatch PCI DVB-C

Frontend

Le frontend s'installe avec le paquet suivant :

sudo apt-get install mythtv-frontend

X11 Autologin

Pour que la session graphique se lance automatiquement au démarrage, plusieurs solutions sont disponibles : utiliser un gestionnaire de login graphique type lightdm, xdm, gdm… ou le faire à la main. J'ai, bien sûr, choisi la dernière solution 8-). Cela consiste à démarrer xinit, un lanceur X très léger qui exécute le script ~/.xinitrc. Ce script doit être bloquant : tant qu'il ne rends pas la main, X tourne. J'ai choisi le gestionnaire de fenêtre openbox pour sa légèretée.

Pour commencer, supprimer le(s) gestionnaire(s) de login :

sudo apt-get remove --purge lightdm xdm gdm

Créer un service systemd, celui ci sera en charge de lancer xinit avec le user mythtv au boot :

/etc/systemd/system/xinit-login.service
[Unit]
After=systemd-user-sessions.service
 
[Service]
ExecStart=/bin/su mythtv -l -c /usr/bin/xinit -- VT08
ExecStop=/usr/bin/pkill openbox
 
[Install]
WantedBy=multi-user.target

Prendre en compte le service

sudo systemctl daemon-reload

Le fichier ~/.xinitrc est un script shell contenant tout les programmes à lancer :

  • chargement de la configuration utilisateur de la carte NVidia
  • gestion du fond d'écran et de l'économiseur d'écran
  • lancement du mapper des touches de télécommande
  • démarrage du frontend mythtv
  • exécution du gestionnaire de fenêtre openbox

J'ai repris celui que j'ai mis en place pour le boot PXE :

~/.xinitrc
# fait disparaitre le curseur
unclutter -idle 0.1 -root -regex -notclass 'Iceweasel|XTerm|Gcalctool|Gthumb' &
 
# charge la configuration utilisateur du driver de carte graphique
nvidia-settings -l
 
# désactive l'extinction automatique de l'écran pour l'économie d'énergie
xset -dpms
 
# écran de veille
xscreensaver &
 
# fond d'écran
xloadimage -onroot -center ~/bg.png
 
# mapping des touches de la télécommande
(sleep 30 ; irexec -d ) &
 
# ftrontend mythtv
mythfrontend --logpath /var/log/mythtv &
 
# gestionnaire de fenêtre
openbox

Installer les packages nécessaires :

sudo apt-get install -y openbox xloadimage unclutter xscreensaver-gl lirc

L'activer :

sudo systemctl enable xinit-login.service

Le démarrer :

sudo systemctl start xinit-login.service