Objectif

L'objectif de ce guide est d'installer à zéro une machine gérant un carte TV et la diffusion du flux avec MumuDVB. Éventuellement, on listera en plus des détail de mapping des câbles/satellites/cartes.

Objectifs du guide:

  • Installation des drivers
  • Installation de MuMuDVB
  • Configuration de MuMuDVB
  • Installation & Configuration de Monit

Étapes

0. Dimensionnement

La première étape est de dimmensionner le nombres de cartes TVs à ajouter à la machine.

Cela dépendra :

  • Du nombres d'emplacement PCIExpress sur la carte mère
  • Du nombre de frontend voulus au final
  • Du nombres de duplex derrières.

1. Installation des drivers

Pour installer les cartes, il faut installer les pilotes pour que le noyau Linux puisse communiquer avec. Une fois fait un fichier spécial de périphérique sera disponible dans /dev pour discuter avec.

Lorsque les cartes sont branchées, démarrer le serveur. On peut les détecter avec la commande lspci. On devrait obtenir une empreinte semblable :

02:00.0 Multimedia controller: Philips Semiconductors SAA7160 (rev 02)
        Subsystem: Device 6985:0002
        Flags: bus master, fast devsel, latency 0, IRQ 17
        Memory at f7d00000 (64-bit, non-prefetchable) [size=1M]
        Capabilities: <access denied>
        Kernel driver in use: SAA716x TBS
(Empreinte obtenue pour une Carte TBS6984 de TBS Technologies)

Pour obtenir les drivers adaptés, un peu de recherches est nécéssaire. Le site linuxtv est une mine d'information. Globalement, il existe des driver propriétaire pour TBS un driver open source pour TBS.

Au ResEl nous utilisons en ce moment (2017) 3 cartes TBS6984 et 2 cartes TBS6205.

Le driver qu'on utilisera dans le guide est le driver propriétaire tbs-linux-drivers_v161031.zip, sur Debian Jessie. Le driver open-source fonctionne aussi, mais pose quelques soucis.

Tout d'abord, si vous avez suivi le guide de mise en place d'un serveur, vous n'aurez pas besoin de cette étape, mais pour être sur, installez les packets suivants:

sudo apt-get install build-essential automake unzip

Puis installez les headers linux de votre version respective. Une façon de faire ceci est d’exécuter:

sudo apt-get install linux-headers-$(uname -r)

La compilation des drivers au moment de l'écriture a donné une erreur, et en cherchant sur Internet, la solution était de supprimer une partie des headers linux qu'on vient de télécharger, à l'aide de la commande suivante:

sudo rm -Rf /lib/modules/3.16.0-4-amd64/kernel/drivers/media

Ou 3.16.0-4-amd64 remplace votre version de noyau installée en headers.

N'oubliez pas de désinstaller linux-headers et de les réinstaller après la fin de l'installation pour laisser une version propre pour les personnes qui viennent après !

Une fois ceci fait, téléchargez sur Pegase (la passerelle vers le VLAN admin à l'heure d'écriture de ce guide) votre version de drivers avec par exemple:

wget http://www.tbsiptv.com/download/common/tbs-linux-drivers_v161031.zip

Puis transférez sur Reychnam le fichier zip avec scp tbs-linux-drivers_v161031.zip nom_machine.adm.resel.fr:/home/uid/. Déplacez vous sur le dossier contenant le fichier zip et exécutez les commandes suivantes:

unzip tbs-linux-drivers_v161031.zip -d ./tbs-drivers/
cd ./tbs-drivers/
bzcat linux-tbs-drivers.tar.bz2 | tar xv
sudo find -type d -exec chmod 755 \{\} \;
sudo find -type f | xargs chmod 644
sudo find -name '*.sh' | xargs chmod 755
sudo find -name '*.pl' | xargs chmod 755
./v4l/tbs-x86_64.sh
make -j5
sudo make install

La ligne 1 on extrait les fichiers de l'archive zip, puis on extrait l'archive bzip à la ligne 2. Les lignes 4 à 7, on répare les permissions des fichiers, car après l'extraction, les permissions ne sont pas écrites pour des utilisateurs de l'installation. Les lignes 8 à la fin sont pour compiler et installer les drivers.

Remarque

ProTip: Le -j5 du make est pour paralléliser la compilation/linking sur plusieurs cores.

Normalement, vous ne devriez avoir aucune erreur. Si vous avez des erreurs, débrouillez vous, c'est ça le ResEl.

Essayez avec lspci, vous devriez avoir des entrées drivers, et si vous voulez être encore plus sur, exécutez dmesg | grep frontend et vous devriez avoir quelque chose comme ça:

[    8.556179] DVB: registering adapter 0 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
[    9.107713] DVB: registering adapter 1 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
[    9.660162] DVB: registering adapter 2 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
[   10.212633] DVB: registering adapter 3 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
[   10.785065] DVB: registering adapter 4 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
[   11.337509] DVB: registering adapter 5 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
[   11.889982] DVB: registering adapter 6 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
[   12.442426] DVB: registering adapter 7 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
[   13.018868] DVB: registering adapter 8 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
[   13.571328] DVB: registering adapter 9 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
[   14.123759] DVB: registering adapter 10 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
[   14.676222] DVB: registering adapter 11 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...

Redémarrez la machine avec sudo shutdown -r now

2. Installation de MuMuDVB

MuMuDVB est le logiciel qui permet de lire sur les cartes le flux TV, de le décoder, et de le diffuser soit en Unicast sur HTTP, soit en Multicast. Pour conserver la bande passante, on utilise l'Unicast.

On va tout d'abord installer les packets dvb-utils et dvb-apps pour que la compilation de MuMuDVB se fasse avec les paramètres optimaux. Pour ce faire, exécutez:

sudo apt-get install dvb-utils dvb-apps

Ensuite, téléchargez la tarball des sources de MuMuDVB, à priori depuis la page Github du projet sur Pegase, et copiez là sur Reychnam à l'aide de SCP: wget https://github.com/braice/MuMuDVB/archive/mumudvb2.zip

De la même façon unzip-pez le fichier et naviguez vers MuMuDVB-mumudvb2, puis executez les commandes suivantes:

autoreconf -i -f
./configure
make -j5
sudo make install

Normalement, tout devrait marcher puisque toutes les dépendances sont installées, et pour tester, vous pouvez tout simplement exécuter un mumudvb -l pour vérifier que l'installation est bonne.

3. Configuration de MuMuDVB:

Vous pouvez copier la configuration depuis Gitlab avec:

git clone https://git.resel.fr/confs/television.git

On essaiera de conserver la structure qui a été établie par les anciens du ResEl, vous pouvez très bien la changer.

Créez un dossier /srv/sat/, puis copiez les fichiers contenus dans mumudvb/sat dans le dossier que vous venez de créer.

4. Installation & Configuration de Monit

Monit est un système de monitoring, qui permet de relancer les services au cas ou ces derniers tombent, mais évite aussi d'écrire des commandes ou on peut foirer parfois. Ça n'arrive jamais au ResEl, mais bon.

L'installation se fait à l'aide d'APT avec:

sudo apt-get install monit

On doit à présent créer un utilisateur pour lancer MuMuDVB avec cet utilisateur. Typiquement, dans cette configuration, on le nommera tv.

sudo adduser tv

Créez un dossier /home/tv si il n'existe pas encore. Pour vous rendre la vie facile en tests, chmod 777. Comme ça MuMuDVB aura accès à ce répertoire, que ce soit vous qui exécutez pour tester ou Monit qui lance sous l'utilisateur tv. Si vous avez du temps, trouvez une meilleure solution.

Remarque

Bon, en vrai, on n'a pas vraiment besoin de ce compte, mais choisissez un mot de passe fort, et gardez le au secret, notamment, le KeePass du président.

Retournez à présent au dossier dans lequel vous avez clonez le repo git des configurations, et copiez le fichier monit/mumudvb dans /etc/monit/conf.d/.

La configuration est à présent chargée, et vous devriez faire un reload pour que les changements soient pris en compte à l'aide d'un sudo monit reload

Remarque

Monit s'exécute uniquement en sudo.

Finalement, mettre en marche les services MuMuDVB reviens à faire:

sudo monit start all