Guides/Installation-machine-tv.md
... ...
@@ -0,0 +1,169 @@
1
+<!-- --- title: Installation & configuration d'une machine TV -->
2
+
3
+# Objectif
4
+
5
+L'objectif de ce guide est d'installer à zéro une machine gérant un carte TV et la diffusion du flux avec MumuDVB.
6
+Éventuellement, on listera en plus des détail de mapping des câbles/satellites/cartes.
7
+
8
+Objectifs du guide:
9
+* Installation des drivers
10
+* Installation de MuMuDVB
11
+* Configuration de MuMuDVB
12
+* Installation & Configuration de Monit
13
+
14
+# Étapes
15
+
16
+## 0. Dimensionnement
17
+
18
+La première étape est de dimmensionner le nombres de cartes TVs à ajouter à la machine.
19
+
20
+Cela dépendra :
21
+* Du nombres d'emplacement PCIExpress sur la carte mère
22
+* Du nombre de frontend voulus au final
23
+* Du nombres de duplex derrières.
24
+
25
+## 1. Installation des drivers
26
+
27
+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.
28
+
29
+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 :
30
+
31
+```
32
+02:00.0 Multimedia controller: Philips Semiconductors SAA7160 (rev 02)
33
+ Subsystem: Device 6985:0002
34
+ Flags: bus master, fast devsel, latency 0, IRQ 17
35
+ Memory at f7d00000 (64-bit, non-prefetchable) [size=1M]
36
+ Capabilities: <access denied>
37
+ Kernel driver in use: SAA716x TBS
38
+```
39
+(Empreinte obtenue pour une Carte [TBS6984](https://linuxtv.org/wiki/index.php/TBS6984) de [TBS Technologies](http://www.tbsdtv.com/))
40
+
41
+Pour obtenir les drivers adaptés, un peu de recherches est nécéssaire. Le site [linuxtv](https://linuxtv.org/wiki/index.php/TBS) est une mine d'information.
42
+Globalement, il existe des [driver propriétaire pour TBS](http://www.tbsdtv.com/download/) un [driver open source pour TBS](https://github.com/ljalves/linux_media/wiki).
43
+
44
+Au ResEl nous utilisons en ce moment (2017) 3 cartes TBS6984 et 2 cartes TBS????.
45
+
46
+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.
47
+
48
+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:
49
+
50
+`sudo apt-get install build-essential automake unzip`
51
+
52
+Puis installez les headers linux de votre version respective. Une façon de faire ceci est d’exécuter:
53
+
54
+`sudo apt-get install linux-headers-$(uname -r)`
55
+
56
+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:
57
+
58
+`sudo rm -Rf /lib/modules/3.16.0-4-amd64/kernel/drivers/media`
59
+
60
+Ou `3.16.0-4-amd64` remplace votre version de noyau installée en headers.
61
+
62
+**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 !**
63
+
64
+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:
65
+
66
+`wget http://www.tbsiptv.com/download/common/tbs-linux-drivers_v161031.zip`
67
+
68
+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:
69
+
70
+```
71
+unzip tbs-linux-drivers_v161031.zip -d ./tbs-drivers/
72
+cd ./tbs-drivers/
73
+bzcat linux-tbs-drivers.tar.bz2 | tar xv
74
+sudo find -type d -exec chmod 755 \{\} \;
75
+sudo find -type f | xargs chmod 644
76
+sudo find -name '*.sh' | xargs chmod 755
77
+sudo find -name '*.pl' | xargs chmod 755
78
+./v4l/tbs-x86_64.sh
79
+make -j5
80
+sudo make install
81
+```
82
+
83
+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.
84
+
85
+###### Remarque
86
+_**ProTip**: Le `-j5` du `make` est pour paralléliser la compilation/linking sur plusieurs cores._
87
+
88
+Normalement, vous ne devriez avoir aucune erreur. Si vous avez des erreurs, débrouillez vous, c'est ça le ResEl.
89
+
90
+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:
91
+
92
+```
93
+[ 8.556179] DVB: registering adapter 0 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
94
+[ 9.107713] DVB: registering adapter 1 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
95
+[ 9.660162] DVB: registering adapter 2 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
96
+[ 10.212633] DVB: registering adapter 3 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
97
+[ 10.785065] DVB: registering adapter 4 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
98
+[ 11.337509] DVB: registering adapter 5 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
99
+[ 11.889982] DVB: registering adapter 6 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
100
+[ 12.442426] DVB: registering adapter 7 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
101
+[ 13.018868] DVB: registering adapter 8 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
102
+[ 13.571328] DVB: registering adapter 9 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
103
+[ 14.123759] DVB: registering adapter 10 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
104
+[ 14.676222] DVB: registering adapter 11 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
105
+```
106
+
107
+Redémarrez la machine avec `sudo shutdown -r now`
108
+
109
+## 2. Installation de MuMuDVB
110
+
111
+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.
112
+
113
+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:
114
+
115
+`sudo apt-get install dvb-utils dvb-apps`
116
+
117
+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:
118
+`wget https://github.com/braice/MuMuDVB/archive/mumudvb2.zip`
119
+
120
+De la même façon *unzip*-pez le fichier et naviguez vers MuMuDVB-mumudvb2, puis executez les commandes suivantes:
121
+
122
+```
123
+autoreconf -i -f
124
+./configure
125
+make -j5
126
+sudo make install
127
+```
128
+
129
+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.
130
+
131
+## 3. Configuration de MuMuDVB:
132
+
133
+Vous pouvez copier la configuration depuis Gitlab avec:
134
+
135
+`git clone https://git.resel.fr/confs/television.git`
136
+
137
+On essaiera de conserver la structure qui a été établie par les anciens du ResEl, vous pouvez très bien la changer.
138
+
139
+Créez un dossier `/srv/sat/`, puis copiez les fichiers contenus dans `mumudvb/sat` dans le dossier que vous venez de créer.
140
+
141
+## 4. Installation & Configuration de Monit
142
+
143
+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_.
144
+
145
+L'installation se fait à l'aide d'APT avec:
146
+
147
+`sudo apt-get install monit`
148
+
149
+On doit à présent créer un utilisateur pour lancer MuMuDVB avec cet utilisateur. Typiquement, dans cette configuration, on le nommera `tv`.
150
+
151
+`sudo adduser tv`
152
+
153
+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._
154
+
155
+######Remarque
156
+
157
+_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._
158
+
159
+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/`.
160
+
161
+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`
162
+
163
+######Remarque
164
+
165
+_Monit s'exécute uniquement en sudo._
166
+
167
+Finalement, mettre en marche les services MuMuDVB reviens à faire:
168
+
169
+`sudo monit start all`