La Radio Définie par Logiciel (SDR) avec le chipset rtl2832u
Introduction
La radio Définie par logiciel, ou SDR pour Software Defined Radio, consiste à utiliser un ordinateur et une suite logicielle pour recevoir/émettre, moduler/démoduler, chiffrer/décrypter des signaux Radio. La pratique s'est développée dans les années 90 avec le perfectionnement du matériel informatique.
Antti Palosaari a découvert que contrairement aux tuners TNT habituels, le rtl2832u permettait de recevoir directement (sans traitements matériels) les signaux radio du fait de ses fonctionnalités DAB/DAB+/FM.
Des drivers permettant son utilisation en SDR ont été développés par osmocom et sont utilisables avec un bon nombre de logiciels.
Ce tutoriel a pour objectif de décrire les procédures d'installation et d'utilisation du rtl2832u.
Choix du matériel
- Les clés USB basées sur le rtl2832u sont nombreuses et peu coûteuses (généralement moins de 20€ frais de ports compris).
- Toutefois, différents tuners sont associé au démodulateur, et il semblerait que le E4000 permette une réception de meilleure qualité grâce à la suppression logicielle de l'AGC.
- De plus, des différences de qualité entre différentes clés ont été observées. Si un comparatif rigoureux mérite encore d'être fait, il est probablement utile de lire quelques retours d'utilisation sur les forum avant de choisir son modèle…
- Bref, une recherche des mots clés rtl2832u + e4000 fera surement votre bonheur
Installation
Attention,ce script pose un problème d'installation sur la dernière version d'ubuntu…En attente de correction.
L'installation des bibliothèques RTL-SDR ou simplement rtl-sdr , de gnuradio muni de ses extensions nécessaires est automatisée par l'utilisation de ce script :
wget http://www.sbrac.org/files/build-gnuradio LE LIEN N'EST PLUS DISPONIBLE
chmod a+x build-gnuradio
./build-gnuradio</code>
Le script s'assure que toutes les dépendances sont installées et installe le nécessaire.
Premiers pas
Commandes RTL-SDR
rtl_test
- Pour commencer, nous pouvons vérifier le fonctionnement de notre clé en testant sa gamme de fréquence.
rtl_test -t
Celle-ci varier en fonction du matériel et de sa température d'utilisation :
Found 1 device(s): 0: Generic RTL2832U (e.g. hama nano) Using device 0: Generic RTL2832U (e.g. hama nano) Found Elonics E4000 tuner Supported gain values (18): -1.0 1.5 4.0 6.5 9.0 11.5 14.0 16.5 19.0 21.5 24.0 29.0 34.0 42.0 43.0 45.0 47.0 49.0 Benchmarking E4000 PLL... [E4K] PLL not locked for 51000000 Hz! [E4K] PLL not locked for 2219000000 Hz! [E4K] PLL not locked for 1109000000 Hz! [E4K] PLL not locked for 1237000000 Hz! E4K range: 52 to 2218 MHz E4K L-band gap: 1109 to 1237 MHz
On obtient aussi les gains supportés par la clé, cela peut être utile de le changer dans le cas d'une mauvaise réception du signal écouté.
- Nous pouvons également déterminer le taux d'échantillonnage maximum possible sur votre PC. Pour cela augmenter le taux tant qu'il n'y a pas de perte :
rtl_test -s 3.2e6
Un taux de 2.4e6 doit être possible à traver une connection tcp connections (voir rtl_tcp). Un taux de 2.88e6 devrait pouvoir être obtenu sans perte, mais tout dépend de la puissance de votre PC.
- Il est nécessaire de déterminer le PPM (décalage entre la fréquence demandée et celle écoutée). Pour cela, il suffit de lancer la commande pendant 10 minutes (faire CTRL+C pour arrêter la commande):
rtl_test -p
Found 1 device(s): 0: Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: Generic RTL2832U OEM Found Rafael Micro R820T tuner Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 Sampling at 2048000 S/s. Reporting PPM error measurement every 10 seconds... Press ^C after a few minutes. Reading samples in async mode... lost at least 196 bytes real sample rate: 2048184 current PPM: 90 cumulative PPM: 90 real sample rate: 2048151 current PPM: 74 cumulative PPM: 82 real sample rate: 2048198 current PPM: 97 cumulative PPM: 87 real sample rate: 2048152 current PPM: 74 cumulative PPM: 84 real sample rate: 2048186 current PPM: 91 cumulative PPM: 85 real sample rate: 2048166 current PPM: 82 cumulative PPM: 85 real sample rate: 2048161 current PPM: 79 cumulative PPM: 84 real sample rate: 2048189 current PPM: 93 cumulative PPM: 85 real sample rate: 2048170 current PPM: 83 cumulative PPM: 85 real sample rate: 2048165 current PPM: 81 cumulative PPM: 84 real sample rate: 2048188 current PPM: 92 cumulative PPM: 85 real sample rate: 2048162 current PPM: 80 cumulative PPM: 85 real sample rate: 2048180 current PPM: 88 cumulative PPM: 85 real sample rate: 2048174 current PPM: 85 cumulative PPM: 85 real sample rate: 2048161 current PPM: 79 cumulative PPM: 84 real sample rate: 2048182 current PPM: 89 cumulative PPM: 85 real sample rate: 2048183 current PPM: 90 cumulative PPM: 85 real sample rate: 2048153 current PPM: 75 cumulative PPM: 84 real sample rate: 2048179 current PPM: 88 cumulative PPM: 85 real sample rate: 2048184 current PPM: 90 cumulative PPM: 85 real sample rate: 2048165 current PPM: 81 cumulative PPM: 85 real sample rate: 2048178 current PPM: 87 cumulative PPM: 85 real sample rate: 2048177 current PPM: 87 cumulative PPM: 85 real sample rate: 2048166 current PPM: 81 cumulative PPM: 85 real sample rate: 2048195 current PPM: 95 cumulative PPM: 85
Ici, on lit le PPM dans la colonne "cumulative PPM" et cette valeur stagne autour de 85.
rtl_sdr
Cette commande peut être utilisée pour lancer un enregistrement. Par exemple, pour s'accorder à 392.0 MHz avec un taux de 1.8 MS/s :
rtl_sdr /tmp/capture.bin -s 1.8e6 -f 392e6
La sortie peut à la fois être se faire dans un fichier ou un tampon de type fifo.
rtl_tcp
Nous pouvons aussi piloter notre récepteur avec d'autres appareils via le web en lançant la commande suivante :
rtl_tcp -a 192.168.1.2 -p 1234
Found 1 device(s). Found Elonics E4000 tuner Using Generic RTL2832U (e.g. hama nano) Tuned to 100000000 Hz. listening...
Il est alors possible de se connecter à un récepteur distant avec GnuRadio-companion en utilisant l'argument rtl_tcp=192.168.1.2:1234 dans l'entrée OsmoSDR afin d'en contrôler les paramètres d'acquisition (fréquence, gain, …) et de recevoir les échantillons.
GnuRadio
Configuration multimode
Pour faire nos premiers pas avec GnuRadio, et plus précisément GnuRadio-Companion (GRC), nous allons ouvrir une configuration appelée multimode qui permet de démoduler les principaux modes de communication analogiques.
Après s'être assuré que subversion est bien installé, ouvrir un terminal pour télécharger la configuration multimode de GnuRadio :
cd svn co https://github.com/bgamari/gnuradio-multimode
Lancer GnuRadio-Companion et ouvrez le fichier de configuration téléchargé ~/multimode/trunk/multimode.grc.
Comme vous pourrez le constater, GnuRadio-Companion permet de configurer graphiquement les paramètre d'acquisition, de traitement et d'affichage du signal radio.
GQRX
gqrx-sdr intègre désormais le support des librairies rtl-sdr.
Exemples d'utilisation