Projet

Général

Profil

Actions

Documentation d'installation complète d'une station

Au cours de cette documentation, nous décrivons l'installation d'une station de radio logicielle complète équipée des modules suivants :
  • GNU/Linux Xubuntu 14.04 LTS ;
  • Pilote UHD (binaires Ettus Research) ;
  • GNURadio (binaires Ettus Research) ;
  • Modules complémentaires (gr-air-modes, multimon-ng...).

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

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

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.

Installation de GNU/Linux Xubuntu 14.04 LTS

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

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.

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.

Partitionnement en dual boot

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

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.

Après le redimensionnement des partitions de Windows, nous créons deux partitions :
  • une SWAP de 1 Go ;
  • une racine ( / ) formatée en ext4 avec tout l'espace de disque disponible (un volume supérieur à 100 Go est recommandé).

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.

Installation de paquets supplémentaires

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

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.

sudo apt-get install arandr subversion git synaptic

Pour l'utilisateur peu familier du système Ubuntu, il est recommandé d'utilisé l'application synaptic pour rechercher et installer des paquets.

Installation d'UHD et GNURadio à partir des paquets binaires Ettus Research

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.

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.

Résolution des dépendances

Avant toute chose, il est nécessaire de satisfaire les dépendances requise pour l'installation du pilote UHD et de GNURadio.

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

Ajout des dépots Ettus Research et installation

On peut ajouter les sources des dépôts de paquets non-officiels pour UHD et GNURadio à l'aide des commandes suivantes.

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

On peut ensuite mettre à jour la liste des paquets puis installer UHD et GNURadio.

sudo apt-get update
sudo apt-get install -t `lsb_release -cs` uhd gnuradio

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

Configuration d'une carte USRP N210

Configuration réseau et optimisation du système d'exploitation

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.

La configuration statique de l’interface peut être réalisée dans le fichier /etc/network/interfaces dans lequel on ajoute les lignes suivantes.

auto eth0
iface eth0 inet static
        address 192.168.10.1
        netmask 255.255.255.0

Il reste ensuite à redémarrer les connexions réseau avec

sudo service network-manager restart
sudo service networking restart

Une fois l’interface réseau configurée (vérifier avec sudo ifconfig), nous pouvons détecter la carte à l’aide du pilote UHD.

uhd_find_devices

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

uhd_usrp_probe

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.

sudo uhd_images_downloader
/usr/lib/uhd/utils/usrp_n2xx_simple_net_burner --addr=192.168.10.2

Optimisation du système pour le pilote UHD

Priorité d'exécution du pilote UHD

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

@usrp    -    rtprio    99

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.

groupadd usrp
adduser <nom_d'utilisateur> usrp

Taille maximale des tampons d'émission-réception

Il est également recommandé de modifier la taille des tampons d'émission-réception en ajoutant les lignes suivantes au fichier /etc/sysctl.conf.

net.core.rmem_max=33554432
net.core.wmem_max=33554432

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.

Vérification du bon fonctionnement

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.

/usr/share/uhd/examples/benchmark_rate --duration 20 --rx_rate 10e6

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

Installation des composants additionnels (exemples et démos)

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.

svn co https://openforge.isae.fr/svn/ralf-radio-logicielle-pour-la-formation/demos

Ces exemples nécessite la résolution de plusieurs dépendances décrites ci-après.

Émetteur-récepteur FM

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.

Récepteur ADS-B

Installation de gr-air-modes

Dans un premier temps, il est nécessaire de satisfaire les dépendances suivantes.

sudo apt-get install python-zmq cmake

On peut ensuite récupérer les sources du projet de Nick Foster.

git clone https://github.com/bistromath/gr-air-modes.git

Une fois positionné dans le répertoire téléchargé, on peut compiler et installer le module.

mkdir build
cd build
cmake ../
make
sudo make install
sudo ldconfig

Installation de Google Earth

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.

sudo apt-get install googleearth-package
make-googleearth-package
dpkg -i google_earth_XXX.deb
apt-get -f install

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.

Récepteur POCSAG

Ce récepteur utilise le programme multimon-ng écrit initialement par Thomas Sailer. On commence par résoudre les dépendances suivantes.

sudo apt-get install libpulse-dev

On peut ensuite installer multimon-ng à l'aide des instructions suivantes.

git clone https://github.com/EliasOenal/multimon-ng.git

Une fois positionné dans le répertoire téléchargé, on peut compiler et installer le programme.

mkdir build
cd build
qmake ../multimon-ng.pro
make
sudo make install

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

À faire

  • Réalisation d'une image disque complète d'une station de travail.
  • Étude des exemples fournis avec GNURadio (voir ~/demos_usrp/examples).
  • Documentation des blocs fournis avec GNURadio (en particulier concernant la synchronisation et l'égalisation).
  • Étudier la possibilité d'avoir une connexion à Internet à proximité pérenne pour les machines d'expérimentations.

Mis à jour par Damien Roque il y a plus de 10 ans · 1 révisions