Projet

Général

Profil

Documentation d'installation complète d'une station » Historique » Version 1

Damien Roque, 09/09/2014 10:48

1 1 Damien Roque
h1. Documentation d'installation complète d'une station
2
3
{{>toc}}
4
5
Au cours de cette documentation, nous décrivons l'installation d'une station de radio logicielle complète équipée des modules suivants :
6
* GNU/Linux Xubuntu 14.04 LTS ;
7
* Pilote UHD (binaires Ettus Research) ;
8
* GNURadio (binaires Ettus Research) ;
9
* Modules complémentaires (gr-air-modes, multimon-ng...).
10
11
L'interface d'émission-réception sera une carte Ettus USRP N210 équipée d'une carte fille WBX. Pour le déploiement d'autres modèles, se reporter à la page principale du wiki : https://openforge.isae.fr/projects/ralf-radio-logicielle-pour-la-formation/wiki
12
13
Les logiciels choisis offrent un bon compromis entre stabilité (système d'exploitation supporté jusqu'en 2019) et actualité (composants critiques UHD et GNURadio mis à jour fréquemment par Ettus Research).
14
15
Ce document d'installation se base sur un déploiement réalisé en juillet 2014. Il est nécessaire de disposer d'une clé USB d'installation ainsi que d'une connexion à Internet pour résoudre les dépendances et déployer les modules additionnels.
16
17
h1. Installation de GNU/Linux Xubuntu 14.04 LTS
18
19
Le choix de cette distribution (v. 14.04) est motivé par le fait qu'elle bénéficie d'un support à long terme (de 2014 à 2019) et que la société Ettus Research ait choisi de maintenir des paquets binaires Ubuntu du pilote UHD et de GNURadio. Par ailleurs, notons que nous avons choisi l'environnement graphique de bureau XFCE à la place de Unity fourni par défaut avec Ubuntu (il s'agit de l'unique différence entre Xubuntu et Ubuntu).
20
21
La procédure d'installation se déroule à partir d'une clé USB bootable contenant une image @xubuntu-desktop@ disponible ici : http://xubuntu.org/getxubuntu/. Pour information, cette clé USB d'installation peut être réalisée à partir de la plupart des distributions de GNU/Linux à l'aide de l'outil @unetbootin@.
22
23
Après avoir démarré sur la clé USB, nous choisissons l'option _Live CD_ afin de vérifier que les composants matériels soient supportés (interfaces réseau, carte son...). Une fois ces vérifications faites, nous procédons à l'installation de la distribution à partir du lien disponible sur le bureau. Si l'on ne dispose pas d'une connexion à Internet à haut débit, il est préférable de réaliser l'installation en mode hors ligne afin d'éviter les mise à jour souvent volumineuses.
24
25
h2. Partitionnement en dual boot
26
27
Les ordinateurs sur lesquels le déploiement a été réalisé sont équipés d'un système d'exploitation Windows 7 que nous souhaitons conserver. Pour cela, il est recommandé d'effectuer un partitionnement manuel (choisir l'option "autre chose" lorsque les différentes options d'installation sont présentées).
28
29
Lors du partitionnement, il est nécessaire de redimensionner une ou plusieurs partitions Windows afin de dégager au moins 100 Go pour l'installation de la distribution de GNU/Linux. Si la partition principale de Windows (celle qui contient la racine du système) doit être redimensionnée, il est préférable de dégager de l'espace libre après celle-ci : cela évite le déplacement de données ainsi que d'éventuels problèmes d'alignement du chargeur de démarrage de Windows. S'il n'est pas possible de faire autrement, il sera probablement nécessaire de restaurer le chargeur de démarrage de Windows 7 à l'aide du DVD d'installation.
30
31
Après le redimensionnement des partitions de Windows, nous créons deux partitions :
32
* une SWAP de 1 Go ;
33
* une racine ( / ) formatée en @ext4@ avec tout l'espace de disque disponible (un volume supérieur à 100 Go est recommandé).
34
35
Après l'installation du système de base, il est proposé de créer un compte d'utilisateur. Sous Ubuntu, nous rappelons que le mot de passe du @root@ n'est pas initialisé. L'accès @root@ est tout de même possible via la commande @sudo@. En particulier, pour lancer un _shell_ @root@, on utilisera @sudo -s@.
36
37
h2. Installation de paquets supplémentaires
38
39
Une fois l'installation terminée, il est possible d'installer des paquets additionnels. Une liste des paquets couramment utilisés par user:d.roque est disponible ici : https://openforge.isae.fr/projects/ralf-radio-logicielle-pour-la-formation/wiki/Installation_d%E2%80%99une_station_de_travail_Ubuntu
40
41
La liste précédente est relativement volumineuse (plusieurs Go). Aussi, compte tenu de notre connexion à Internet à bas débit, nous nous limitons aux paquets suivants.
42
43
<pre>
44
sudo apt-get install arandr subversion git synaptic
45
</pre>
46
47
Pour l'utilisateur peu familier du système Ubuntu, il est recommandé d'utilisé l'application @synaptic@ pour rechercher et installer des paquets.
48
49
h1. Installation d'UHD et GNURadio à partir des paquets binaires Ettus Research
50
51
Dans le but d'exploiter les cartes de radio logicielle Ettus Research USRP, il est nécessaire d'installer le pilote _Universal Hardware Driver_ (UHD) ainsi que l'environnement de développement libre GNURadio. Tout d'abord, il est important de mentionner que la distribution Xubuntu 14.04 comporte ces deux logiciels parmi ses paquets officiels. Toutefois, ces derniers ne sont pas nécessairement mis à jour au gré des développements.
52
53
C'est la raison pour laquelle Ettus Research maintien à jour des paquets non-officiels en suivant les cycles de développement du pilote UHD et de GNURadio. Compte tenu de l'évolution rapide de ces projets, nous choisissons ainsi d'outrepasser les paquets officiels de la distribution pour utiliser ceux fournis par Ettus Research.
54
55
h2. Résolution des dépendances
56
57
Avant toute chose, il est nécessaire de satisfaire les dépendances requise pour l'installation du pilote UHD et de GNURadio.
58
59
<pre>
60
sudo apt-get install python python-wxgtk2.8 pyqt4-dev-tools python-qwt5-qt4 python-numpy libboost-all-dev libusb-1.0.0-dev python-opengl python-cheetah
61
</pre>
62
63
h2. Ajout des dépots Ettus Research et installation
64
65
On peut ajouter les sources des dépôts de paquets non-officiels pour UHD et GNURadio à l'aide des commandes suivantes.
66
67
<pre>
68
sudo bash -c 'echo "deb http://files.ettus.com/binaries/uhd_stable/repo/uhd/ubuntu/`lsb_release -cs` `lsb_release -cs` main" > /etc/apt/sources.list.d/ettus.list'
69
sudo bash -c 'echo "deb http://files.ettus.com/binaries/uhd_stable/repo/gnuradio/ubuntu/`lsb_release -cs` `lsb_release -cs` main" >> /etc/apt/sources.list.d/ettus.list'
70
</pre>
71
72
On peut ensuite mettre à jour la liste des paquets puis installer UHD et GNURadio.
73
74
<pre>
75
sudo apt-get update
76
sudo apt-get install -t `lsb_release -cs` uhd gnuradio
77
</pre>
78
79
À l'aide de cette procédure d'installation, notons que le préfixe d'installation est @/usr@. Si l'on avait suivi une installation via les sources, le préfixe aurait été @/usr/local@.
80
81
h1. Configuration d'une carte USRP N210
82
83
h2. Configuration réseau et optimisation du système d'exploitation
84
85
Nous supposons que la carte USRP possède l'adresse @192.168.10.2@ avec un masque de 24 bits (par défaut) ; par conséquent, nous positionnons l’interface de l’ordinateur sur @192.168.10.1@.
86
87
La configuration statique de l’interface peut être réalisée dans le fichier @/etc/network/interfaces@ dans lequel on ajoute les lignes suivantes.
88
89
<pre>
90
auto eth0
91
iface eth0 inet static
92
        address 192.168.10.1
93
        netmask 255.255.255.0
94
</pre>
95
96
Il reste ensuite à redémarrer les connexions réseau avec
97
<pre>
98
sudo service network-manager restart
99
sudo service networking restart
100
</pre>
101
102
Une fois l’interface réseau configurée (vérifier avec @sudo ifconfig@), nous pouvons détecter la carte à l’aide du pilote UHD.
103
104
<pre>
105
uhd_find_devices
106
</pre>
107
108
Des informations supplémentaires sur la configuration matérielle de la carte peuvent être obtenues à l’aide de la commande suivante (ex. : carte fille, type de connexion...).
109
110
<pre>
111
uhd_usrp_probe
112
</pre>
113
114
Si la commande précédente renvoie une erreur liée à une incompatibilité entre le pilote UHD et le _firmware_, il est nécessaire de mettre à jour ce dernier à l'aide de la commande suivante.
115
116
<pre>
117
sudo uhd_images_downloader
118
/usr/lib/uhd/utils/usrp_n2xx_simple_net_burner --addr=192.168.10.2
119
</pre>
120
121
h2. Optimisation du système pour le pilote UHD
122
123
h3. Priorité d'exécution du pilote UHD
124
125
Il est généralement nécessaire d'accorder aux utilisateurs du pilote un haut niveau de priorité pour le traitement en temps réel des échantillons. Pour cela, il faut ajouter dans @/etc/security/limits.conf@ la ligne suivante
126
127
<pre>
128
@usrp    -    rtprio    99
129
</pre>
130
131
On créé ensuite le groupe @usrp@ et l'on ajoute dans ce groupe les différents utilisateurs du système susceptibles d'utiliser le pilote UHD.
132
133
<pre>
134
groupadd usrp
135
adduser <nom_d'utilisateur> usrp
136
</pre>
137
138
h3. Taille maximale des tampons d'émission-réception
139
140
Il est également recommandé de modifier la taille des tampons d'émission-réception en ajoutant les lignes suivantes au fichier @/etc/sysctl.conf@.
141
142
<pre>
143
net.core.rmem_max=33554432
144
net.core.wmem_max=33554432
145
</pre>
146
147
Après avoir configuré ces deux axes d'optimisation, il est nécessaire de redémarrer la machine afin de pouvoir en bénéficier.
148
149
h3. Vérification du bon fonctionnement
150
151
La carte de radio logicielle est à présent prête à l’emploi, nous pouvons ainsi vérifier que la liaison entre celle-ci et l’ordinateur fonctionne correctement.
152
153
<pre>
154
/usr/share/uhd/examples/benchmark_rate --duration 20 --rx_rate 10e6
155
</pre>
156
157
Parmi les erreurs rencontrées, la perte de segments se matérialise par l’affichage de symboles “UUUUUU...” ou “OOO...” sur la sortie standard. Ces deux cas de figure signifient respectivement que l’ordinateur n’envoie pas les données suffisamment rapidement à la carte ou que celle-ci envoie les données trop rapidement à l’ordinateur (voir http://gnuradio.org/redmine/projects/gnuradio/wiki/UsrpFAQGen).
158
159
h1. Installation des composants additionnels (exemples et démos)
160
161
Au cours de cette section, nous décrivons l'installation de module additionnels de GNURadio pouvant notamment être utilisés pour réaliser des démonstrations. Ces modules sont disponibles sur le dépôt de code source SVN du projet RALF. On peut récupérer la copie courante à l'aide de la commande suivante.
162
163
<pre>
164
svn co https://openforge.isae.fr/svn/ralf-radio-logicielle-pour-la-formation/demos
165
</pre>
166
167
Ces exemples nécessite la résolution de plusieurs dépendances décrites ci-après.
168
169
h2. Émetteur-récepteur FM
170
171
L'émetteur-récepteur FM ne nécessite pas de dépendance spécifique, il peut être exécuté directement à partir des fichiers GRC fournis. Dans le cas de l'émetteur, notons toutefois que la source du fichier son à émettre doit être configurée correctement avec un chemin absolu.
172
173
h2. Récepteur ADS-B
174
175
h3. Installation de gr-air-modes
176
177
Dans un premier temps, il est nécessaire de satisfaire les dépendances suivantes.
178
179
<pre>
180
sudo apt-get install python-zmq cmake
181
</pre>
182
183
On peut ensuite récupérer les sources du projet de Nick Foster.
184
<pre>
185
git clone https://github.com/bistromath/gr-air-modes.git
186
</pre>
187
188
Une fois positionné dans le répertoire téléchargé, on peut compiler et installer le module.
189
<pre>
190
mkdir build
191
cd build
192
cmake ../
193
make
194
sudo make install
195
sudo ldconfig
196
</pre>
197
198
h3. Installation de Google Earth
199
200
La paquet n'est pas directement fourni dans la distribution. Il est toutefois possible de le compiler facilement à l'aide d'un paquet d'installation.
201
<pre>
202
sudo apt-get install googleearth-package
203
make-googleearth-package
204
dpkg -i google_earth_XXX.deb
205
apt-get -f install
206
</pre>
207
208
Le récepteur ADS-B peut ensuite être lancé via le script @receive_ads-b.sh@ (clic droit, ouvrir avec un terminal). Lors du premier lancement de Google Earth, il est nécessaire d'ajouter un @lien réseau@ avec actualisation périodique vers le fichier @avions.kml@.
209
210
h2. Récepteur POCSAG
211
212
Ce récepteur utilise le programme @multimon-ng@ écrit initialement par Thomas Sailer. On commence par résoudre les dépendances suivantes.
213
214
<pre>
215
sudo apt-get install libpulse-dev
216
</pre>
217
218
On peut ensuite installer @multimon-ng@ à l'aide des instructions suivantes.
219
220
<pre>
221
git clone https://github.com/EliasOenal/multimon-ng.git
222
</pre>
223
224
Une fois positionné dans le répertoire téléchargé, on peut compiler et installer le programme.
225
<pre>
226
mkdir build
227
cd build
228
qmake ../multimon-ng.pro
229
make
230
sudo make install
231
</pre>
232
233
Le récepteur POCSAG peut être mise en œuvre à l'aide du fichier GRC correspondant. Avant la première exécution, il est nécessaire de spécifier des emplacements absolus corrects pour les fichiers de capture.
234
Parallèlement à l'enregistrement des données POCSAG reçues, il est possible de lancer le fichier @decodeur_pocsag@ afin d'effectuer un décodage périodique des données (clic droit, ouvrir avec un terminal).
235
236
h1. À faire
237
238
* Réalisation d'une image disque complète d'une station de travail.
239
* Étude des exemples fournis avec GNURadio (voir @~/demos_usrp/examples@).
240
* Documentation des blocs fournis avec GNURadio (en particulier concernant la synchronisation et l'égalisation).
241
* Étudier la possibilité d'avoir une connexion à Internet à proximité pérenne pour les machines d'expérimentations.