a6fd2a8267b87a73617463d6d51d3325594d1a0b
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` |