2

MythTV et Freebox TV sur Seagate Dockstar

Le Seagate Dockstar est un « plug computer » (ordinateur de la taille d’une prise de courant et consommant moins de 5W …) trouvé à 25 € en déstockage. Je compte l’utiliser en remplacement de mon  NSLU2 qui commence à dater, et sa première utilisation va être de tenter d’installer un backend MythTV qui pourra servir pour diffuser la TV et autoriser les enregistrements sur les frontaux suivants :

  • mvpmc
  • XBMC

L’idée est de faire fonctionner dans un premier temps sur le Dockstar le tuner « Network Recorder » de MythTV pour enregistrer la TV Freebox multiposte. Ensuite, essayer de mettre un tuner TNT.

Après un premier essai (fructueux) d’installation de Debian Lenny + le package MythTV 0.23-1, j’ai dû recommencer mon installation, m’apercevant de l’incompatibilité de cette version avec XBMC 9.11 et mvpmc.

J’ai donc utilisé la distribution Linux Debian Squeeze (pourquoi pas?) et de MythTV 0.22 qui et supportée par XMBC et semble d’après les mailing list supportée par mvpmc. Comme ce fut assez laborieux, voici un pense-bête avec les différentes étapes (on trouve quasi tout ailleurs éparpillé sur le web).

Installation de Debian

Voir la procédure documentée ici : Seagate FreeAgent DockStar Linux Debian Squeeze Installation + Application Programs (à partir de la procédure de Jeff Doozan (voir aussi le forum associé Dockstar Debian).

Installé sur un disque dur externe de 2T partitionné en 3 partitions :

Quelques personnalisations :

  • régénérer les clefs SSH :
    rm /etc/ssh/ssh_host*
    ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ""
    ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""
  • Pour gagner de la mémoire, désactiver IPv6 : éditer /etc/sysctl.conf
    net.ipv6.conf.all.disable_ipv6 = 1
  • installer et configurer NTP pour le garder à l’heure
  • on peut aussi faire quelques optimisations de configuration
  • et aussi pour les perfs du système de fichiers XFS sur le réseau : Optimize maximum throughput of the modified Seagate Dockstar

Packages :

  • Editer /etc/apt/sources.list
## squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

## squeeze multimedia
deb http://mirror.home-dn.net/debian-multimedia squeeze main
deb-src http://mirror.home-dn.net/debian-multimedia squeeze main

## squeeze security
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
apt-get update
apt-get install debian-multimedia-keyring
apt-get update

Préparer la base de données MythTV

Suivre les instructions de Sheeva Plug as MythTV master backend

# apt-get install mysql-server mysql-client
# apt-get install libqt4-sql-mysql

Bien se souvenir du mot de passe qu’on donne (exemple newpassword)

Editer /etc/mysql/my.cnf : remplacer 127.0.0.1 par l’adresse IP de la machine

# /etc/init.d/mysql restart

# cd /tmp
# wget http://computingplugs.com/files/mc.sql
# mysql -u root -p <mc.sql
# mysql -u root -p

Au prompt mysql, taper :

mysql> use mysql;
mysql> insert into user (host,user) value('%','mythtv');
mysql> set password for 'mythtv'@'localhost' = password('newpassword');
mysql> flush privileges;
mysql> quit

Autoriser les accès distants à la base mythconverg:

  • depuis le réseau local 192.168.1.0 (à changer si nécessaire),
  • éventuellement depuis le domaine DNS lan (utilisable si on a un DNS local correct, ce qui est recommandé pour éviter de maintenir des fichiers hosts sur les clients, qui ont besoin de connaitre le serveur MythTV par son nom )
$ mysql -u root -p mythconverg
mysql> grant all on mythconverg.* to mythtv@'192.168.1.%' identified by 'newpassword';
mysql> grant all on mythconverg.* to mythtv@"%.lan" identified by 'new_password';
mysql> flush privileges;
mysql> quit

Compilation de la version 0.22

Procédure adaptée de Compiling Mythtv-0.21 on the Sheeva Plug et de Installing MythTV from source

# apt-get install build-essential libqt4-dev libmp3lame-dev
# apt-get install libxxf86vm-dev libxxf86vm1 libfreetype6-dev  libxinerama-dev pkg-config
# apt-get install python

Dans le répertoire home /root :

# wget ftp://ftp.osuosl.org/pub/mythtv/old_releases/mythtv-0.22.tar.bz2
# tar vxjf mythtv-0.22.tar.bz2
# cd mythtv-0.22
# ./configure  --cpu=armv5te
# make
# make install

mythtv s’installera par défaut dans /usr/local

Post-install de mythbackend

Voir : Configurer mythtv (partie backend) et Installing MythTV from source

Créer l’utilisateur mythtv (j’ai pris le même uid que dans le package debian) :

adduser mythtv
usermod -u 106 mythtv
groupmod -g 114 mythtv

Créer les répertoires avec les droits ad-hoc :

# mkdir mythtv
# mkdir mythtv/recordings
# chown mythtv:mythtv /srv/mythtv
# chown mythtv:mythtv /srv/mythtv/recordings

Créer un fichier de démarrage /etc/init.d/mythtv-backend

# cd /etc/init.d
# wget http://computingplugs.com/files/mythtv-backend
# update-rc.d mythtv-backend defaults

Créer répertoire de log

mkdir -p /var/log/mythtv
chown mythtv /var/log/mythtv

Créer le fichier de config de mythbackend

# mkdir /etc/mythtv

Editer /etc/mythtv/mysql.txt (ou /home/mythtv/.mythtv/mysql.txt si seul l’utilisateur mythtv utilise le programme , ce qui est en principe le cas)

 

DBHostName=localhost
# By default, Myth tries to ping the DB host to see if it exists.
# If your DB host or network doesn't accept pings, set this to no:
#
DBHostPing=no
DBHostName=localhost
DBUserName=mythtv
DBName=mythconverg
DBPassword=new_password
# Set the following if you want to use something other than this
# machine's real hostname for identifying settings in the database.
# This is useful if your hostname changes often, as otherwise you
# will need to reconfigure mythtv (or futz with the DB) every time.
# TWO HOSTS MUST NOT USE THE SAME VALUE
#
# LocalHostName=MYCOOLMYTHTVHOST
# If you want your frontend to be able to wake your MySQL server
# using WakeOnLan, have a look at the following settings:
#
#
# The time the frontend waits (in seconds) between reconnect tries.
# This should be the rough time your MySQL server needs for startup
#
#WOLsqlReconnectWaitTime=0
#
#
# This is the number of retries to wake the MySQL server
# until the frontend gives up
#
#WOLsqlConnectRetry=5
#
#
# This is the command executed to wake your MySQL server.
#
#WOLsqlCommand=echo 'WOLsqlServerCommand not set'

Installer et configurer mythWeb

J’ai installé mythWeb de manière à pouvoir :

  • gérer les enregistrements à partir d’un browser
  • gérer la base de données mythconverg de manière plus simple
  • utiliser le serveur web de mythWeb pour héberger le fichier playlist des chaines freebox que je veux garder dans ma config (enlever celles qui ne marchent pas, celles auxquelles je ne suis pas abonné, celles qui n’ont pas la résolution voulue -HD, SD, bas débit-)

Comme le Deskstar est quand même une petite machine avec peu de mémoire, on va tacher d’économiser ses ressources en utilisant un serveur httpd plus léger qu’apache : nginx , associé à spawn-fcgi et php :

# apt-get install nginx
# apt-get install spawn-fcgi

J’ai installé comme suggéré le répertoire des pages web dans /var/www/html mais en utilisant un lien symbolique pour qu’il reside physiquement dans /share/www/html (/dev/sda3 étant monté sur /share)

Editer /etc/nginx/sites-available/default

       location ~ \.php$ {
           fastcgi_pass   127.0.0.1:9000;
           fastcgi_index  index.php;
           fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
           fastcgi_param db_server localhost;
           fastcgi_param db_name  mythconverg;
           fastcgi_param db_login mythtv;
           fastcgi_param db_password mythtv;
           fastcgi_param hostname mymythbox;
           include        fastcgi_params;
       }
location /mythweb/ {
           root /var/www/html;
          # The two Auth Lines assume that you want to password protect - which is recommended
           auth_basic          "Restricted";
          # Supports a standard htpasswd file, which defaults to the same directory as nginx.conf
           auth_basic_user_file htpasswd;
           if (!-e $request_filename) {
        rewrite  ^/mythweb/(pl(/.*)?)$        /mythweb/mythweb.pl?PATH_INFO=/$1 last;
        rewrite   ^/mythweb/(.+)$            /mythweb/mythweb.php?PATH_INFO=/$1 last;
               }
           if (!-f $request_filename) {
           rewrite     ^/mythweb/(.*)$                  /mythweb/mythweb.php last;
                }
            }

récuperer htpasswd et choisir un mot de passe pour le site web mythweb

# apt-get install apache2-utils

# htpasswd -d -c /etc/nginx/htpasswd mythtv

Récupérer mythweb

# cd /var/www
# wget ftp://ftp.osuosl.org/pub/mythtv/old_releases/mythplugins-0.22.tar.bz2
# tar xjvf mythplugins-0.22.tar.bz2
# mv mythplugins-0.22/mythweb html
# mkdir /var/www/html/data
# chgrp -R www-data /var/www/html/data
# chmod g+rw /var/www/html/data
# chown -R mythtv  /var/www/html/data

# apt-get install php5-common php5-cgi php5-mysql

Editer /etc/init.d/fastcgi

#!/bin/bash

COMMAND=/usr/bin/spawn-fcgi
ADDRESS=127.0.0.1
PORT=9000
USER=www-data
GROUP=www-data
PHPCGI=/usr/bin/php5-cgi
PIDFILE=/var/run/fastcgi-php.pid
RETVAL=0

case "$1" in
    start)
      $COMMAND -a $ADDRESS -p $PORT -u $USER -g $GROUP -f $PHPCGI -P $PIDFILE
      RETVAL=$?
  ;;
    stop)
      killall -9 php5-cgi
      RETVAL=$?
  ;;
    restart)
      killall -9 php5-cgi
      $COMMAND
      RETVAL=$?
  ;;
    *)
      echo "Usage: fastcgi {start|stop|restart}"
      exit 1
  ;;
esac
exit $RETVAL

Utiliser ce fichier pour les séquences de démarrage

# chmod +x /etc/init.d/fastcgi
# update-rc.d fastcgi defaults
# /etc/init.d/fastcgi start

Modifier /etc/nginx/sites-available/default

 location / {
 root   /var/www/html;
                index  index.html index.htm index.php;
 }

Tester php avec un programme de type hello world…

Configurer mythbackend

# su - mythtv

Vérifier que la base mySQL fonctionne

$ mysql -u mythtv -p
mysql> use mythconverg
mysql> show tables;
mysql> quit

Ouvrir le display sur un serveur X-Window (serveurX). J’ai personnellement utilisé une machine virtuelle Mint sous VMware (Debian m’ayant contrarié pour les accès X11 distants, je n’ai pas insisté)

$ export DISPLAY=serveurX:0

Configurer le backend (voir Configurez votre setup ) :

$ mythtv-setup

Pour la configuration particulière de Freebox TV : Configuration d’une carte d’acquisition virtuelle ADSL de type freebox V4 et V5.

Voici au moement où je l’écris les chaines SD qui marchent et celles qui ne marchent pas avec mythTV (celles qui ne marchent pas laissent le backend dans un état bizarre : il vaut donc mieux créer un fichier playlist.m3u extrait de celui de Free et qui ne contient que les chaines qui marchent … et l’installer par exemple à la racine de son Web nginx)

– France 2

– France 3

+ France 5

+ Arte

– Direct 8

– TMC

– NT1

– NRJ12

+ LCP

– France 4

– BFM TV

+ i> Tele

– RTL9

– AB1

+ TV5 monde

+ NRJ Hits

+ Clubbing TV

– BFM TV

– i>Tele

+ Euronews

+ Sky News

+ France 24

+ France 24 ENG

+ France O

+ Vox Africa

+ Canal Info News

+ Antenne Caraibe

+ France 3 Cote Azur

+ Telesur

Lancer le backend :

# /etc/init.d/mythtv-backend start

Tester depuis un frontend

Personnellement j’ai d’abord testé mythfrontend sur une machine virtuelle debian, avant de me lancer à tester :

  • XBMC 9.11 :  marche plutôt bien
  • MythBox sur XBMC : idem
  • mvpmc : marche plutôt pas bien
    • la carte virtuelle « Network recorder » n’est pas reconnue; il faudrait patcher le code (pas le temps pour l’instant, j’ai pris un dongle censé avoir les derniers bons patchs pour mythtv) . Du coup la fonction liveTV ne marche pas
    • avec ce dongle je n’ai pas eu les programmes TV ni réussi à programmer d’enregistrement
    • par contre on lit bien les enregistrements déjà enregistrés.

Guide des programmes

crontab de mythtv :

15 23  * * */3 /usr/local/bin/tv_grab_PERSO
 20 23  * *  * /usr/local/bin/mythfilldatabase --file 1 /home/mythtv/tvguide.xml

Voir aussi

Sur le Seagate Deskstar

Sur les plug computers

Sur MythTV

2 Comments

  1. Bonjour,

    Je viens de mettre en ligne sur mon blog un benchmark sur les performances du seagate dockstar avec nginx pour l’autohébergement … Moins de 4W de consommation pour plus de 3000 visiteurs uniques/jours ! VIVE le DockSTar !!

    Je sais, je suis un peu off topic, mais je me suis dit que cela pouvait vous intéresser ?!

    http://goo.gl/z1Lkg

    Cordialement,
    Vincent RABAH

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *