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. |