Voici quelques notes pour jouer, sous linux (ubuntu), avec une clé DVB-T Realtek RTL2832U
(vulgairement une clé RTLSDR). J'indique aussi quelques liens vers des tutoriels et cours plus approfondis sur la radio logicielle.
La clé USB dite "RTLSDR" est conçue pour recevoir la TNT... Seulement le décodage de la TNT est fait coté logiciel, le hardware de la radio est donc "générique". Il peut en effet être utilisé pour recevoir n'importe quel signal radio (entre 52 et 2200 MHz) ! La clé est donc une petite carte bon marché (~10€!) pour faire de la radio logicielle (ou SDR pour Software Defined Radio).
Voyons comment on peux jouer avec...
Instalation des bibliothèques et drivers
Pour installer les soft de base, le packaging dans ubuntu 14.04 est nickel, c'est donc super simple :
$ sudo apt-get install rtl-sdr
Il faut juste blacklister le driver par defaut fait pour décoder la TNT... Pour ca, dans un fichier /etc/modprobe.d/rtlsdr.conf
ajouter juste une ligne :
blacklist dvb_usb_rtl28xxu
Ensuite soit on reboot pour prendre en compte la modif, soit on débranche à la main ce driver avec :
$ sudo rmmod dvb_usb_rtl28xxu
Ensuite quand on branche la clé on doit voir ca dans les log système :
$ dmesg | tail
[1642140.651167] usb 5-1: New USB device found, idVendor=0bda, idProduct=2838
[1642140.651183] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[1642140.651192] usb 5-1: Product: RTL2838UHIDIR
[1642140.651200] usb 5-1: Manufacturer: Realtek
[1642140.651207] usb 5-1: SerialNumber: 00000001
Pour tester que tout va bien :
$ rtl_test
Found 1 device(s):
0: Generic RTL2832U OEM
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
Info: This tool will continuously read from the device, and report if
samples get lost. If you observe no further output, everything is fine.
Reading samples in async mode...
CTRL-C
pour quiter.
Réception de capteurs météo en 433Mhz : instalation de rtl_433
Pour ma part, j'utilise une clé RTLSDR "en production" pour recevoir les données de petits capteurs météo. Le soft "qui va bien" pour ça est rtl_433. En étudiant différentes pistes pour mesurer et enregistrer la température et l'humidité dans différents pièces de ma maison, j'en suis arriver à l'idée d'utiliser des petits capteurs de stations météo (du commerce). C'est il me semble en terme de rapport prix/quantité de travail/fiabilitée. Sachant biensur qu'avec une clé RTL-SDR et rtl_433
il est facile de récupérer les données.
Pour installer rtl_433
:
$ sudo apt-get install git cmake librtlsdr-dev
$ git clone https://github.com/merbanan/rtl_433.git
$ cd rtl_433/
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
Et ensuite pour l'utiliser, super simple :
$ rtl_433
Voir ensuite l'aide avec rtl_433 -h
pour ne décoder que certains capteurs, pour activer une sortie JSON, etc...
Autres usages, liens en vrac...
Biensur l'écoute de capteurs de stations météo n'est pas le seul usage possible. Voici une petite liste d'autres applications avec des liens vers des soft et/ou tuto :
- Ecouter les avions : http://www.framboise314.fr/un-raspberry-pi-pour-suivre-les-avions-sur-flightradar24-2/
- Ecouter la radio en décodant le RDS : https://github.com/bastibl/gr-rds
- récupérer les images de satélites météo : http://slash-dev-blog.me/receive-satellite-images-with-sdr.html
Une liste d'applications bien plus complette est dispo par ici : http://www.rtl-sdr.com/about-rtl-sdr.
Cours et conférences à propos de SDR
Tout d'abords, deux conf en français de @RatZillaS à Pas Sage en Seine :
- en 2014 : https://numaparis.ubicast.tv/videos/radio-logicielle/
- et en 2015 : https://numaparis.ubicast.tv/videos/radio-logicielle_/
Ensuite :
- Une superbe série de cours vidéo (en anglais) sur la radio logiciel par Michael Ossmann : http://greatscottgadgets.com/sdr/
- Une série de tuto vidéo et texte par hackaday sur gnu-radio :
Quelques liens donnant des pistes "to reverse ingineer" un signal :
Et enfin :