Introduction au Software Defined Radio (SDR)

L’utilisation accrue d’objets sans-fil (téléphone, objet connecté, casque audio, télécommande, …) et la mise à disposition d’antennes bon marché favorisent l’étude des signaux radio. Les deux premiers articles de cette série visent à introduire les composants de la radio-logicielle (SDR) et de l’étude des ondes radio. D’autres articles seront ensuite publiés avec pour objectif d’évaluer la sécurité de l’utilisation d’un objet sans-fil.

Définition

Jusqu’à très récemment, il était plus rapide d’utiliser un matériel dédié pour réaliser une tâche ; c’est dans ce contexte que la radio s’est développée. Aujourd’hui, la puissance des calculateurs des ordinateurs permet de traiter une large quantité de données (plusieurs millions par secondes) et donc de traiter les signaux radio efficacement.
Si les briques de traitement du signal (dont la modulation/démodulation) peuvent être aujourd’hui déportés sur un ordinateur, la fonctionnalité de réception (ou d’émission) nécessite toujours un matériel dédié. Plusieurs définitions existent pour le terme de « radio-logicielle » ou SDR an anglais (Software Defined Radio), nous proposons la suivante :
Outils permettant de réceptionner ou d’émettre un signal qui sera par la suite traité par logiciel.
Le matériel nécessaire pour faire du SDR (« antenne SDR ») est donc composé au minimum des éléments suivants :
  • Une antenne avec des capacités en réception et/ou transmission.
  • Un convertisseur Analogique-Numérique (DAC) et/ou Numérique-Analogique (NAC). Il constitue l’interface entre le domaine électromagnétique (analogique) et informatique (numérique).
  • Dans certains cas, l’antenne peut embarquer des filtres et amplificateurs pour faciliter le travail du logiciel.

 

Le RTL-SDR, l’avènement du SDR bon marché

Une bonne « antenne SDR » doit être capable de scanner un large spectre de fréquences (de quelques MHz à plusieurs GHz) avec une bonne précision d’acquisition. Plusieurs produits existent (RTL-SDR, HackRF, LimeSDR, USRP, …) et offrent des possibilités variées (fréquences, réception/émission simultanées, gain, …) il convient donc de bien choisir son matériel.
Notre cabinet s’est doté d’un USRP, la référence des antennes SDR, pour réceptionner et émettre des signaux sur un large spectre de fréquence.

 

Nous l’avons dit, le socle informatique est désormais capable de gérer un grand nombre de données, mais ce n’est pas cette évolution qui est pas à l’origine de la popularisation du SDR. L’avènement de la télévision numérique (DVB-T TV) permet de visionner la télévision numérique sur ordinateur à l’aide d’une clef USB. Sa production en masse permet de diminuer les couts de fabrication et de vente de la RTL2832U qui la compose.
Des personnes ont réussi à interagir avec la puce RTL2832U de ces antennes USB afin de mettre en avant des fonctionnalités des SDR sur ces équipements rendant accessible la radio-logicielle à tous.

Des exemples de logiciels

Comme son nom l’indique, un SDR peut être manipulé par un logiciel pour réceptionner ou émettre des données sans fil. La liste suivante vise à donner un aperçu des logiciels existant et les besoins auxquels ils répondent.

GNU Radio : le couteau suisse du SDR

GNU Radio est un outil qui détaille, à l’aide de blocs de programme, les différentes étapes pour moduler ou démoduler un signal. Les étapes les plus courantes dans le traitement des signaux (FFT, resampling, diagrammes, …) sont déjà implémentés et il est possible de faire interagir des blocs entre eux pour produire un programme qui sera capable, par exemple, d’écouter la radio sur son ordinateur.

Inspectrum et Baudline : visualiser le signal

Dans un premier temps, l’étude d’un signal consiste à le caractériser ; c’est-à-dire à identifier sa fréquence et son type de modulation. Une représentation des composantes (amplitude, fréquence et phase) d’un signal au court du temps est donc nécessaire. Les deux outils Inspectrum et Baudline répondent à ce besoin. Baudline permet aussi la collecte du signal.

rtl_sdr

Un SDR fournit à l’ordinateur un flux continu (stream) de nombres complexes caractérisant le signal. Il est possible d’enregistrer le signal dans un fichier pour ensuite l’étudier.
Nous prenons ici l’exemple du RTL-SDR mais chaque antenne nécessite une suite de logiciels pour les échanges antenne-ordinateur. GNU-Radio offre une interface pour ne pas avoir à installer chaque logiciel. Néanmoins, pour réaliser quelques tests, il peut être intéressant d’avoir le pilote de son SDR installé sur son poste. Par exemple, pour le RTL-SDR, le blog rtl-sdr.com (https://www.rtl-sdr.com/rtl-sdr-quick-start-guide/) décrit les étapes à suivre pour installer les logiciels sur Windows.
Il est maintenant possible d’enregistrer une fréquence donnée à l’aide la commande suivante :
rtl_sdr -f <freq> -s 2000000 fichier.sortie.cu8
Le fichier de sortie (fichier.sortie.cu8) est une suite de nombres complexes encodée sur 8 bits. L’extension cu8 (« Complex 8-bit unsigned integer samples ») est comprise directement dans Inspectrum .

Quelques cas d’école

Comme il est facile de se procurer un SDR à bas coût, une pléthore de logiciels ont été développé pour écouter et visualiser les données.
Parmi les logiciels incontournables, nous présentons dump1090 qui donne la position des avions en temps réel et le système RDS pour écouter et obtenir des informations sur les chaines radio.

Dump1090 : positionner les avions

Salvatore Sanfilippo (Antirez), le développeur de Redis, a développé un outil, Dump1090 , qui permet de visualiser les informations des signaux radio « ADS-B ». Ces signaux sont utilisés dans l’aviation pour signaler la position GPS des avions sur un fréquence de 1090 MHz. À l’aide de son outil, il est donc possible pour un amateur équipé d’un RTL-SDR de repérer facilement les avions autour de lui.
Une fois l’outil installé, il suffit de lancer la commande suivante :
./dump1090 --interactive --net
Et d’ouvrir son navigateur sur :
http://localhost:8000
Depuis nos locaux de La Défense, il est possible de voir les avions dans le ciel parisien.

 

Radio Data System : informations sur une radio FM

Le Radio Data System (RDS) est un service proposé par les radios FM pour fournir aux utilisateurs des informations sur la radio qu’ils écoutent : nom, messages textuels ou encore d’autres fréquence d’écoute.
Pour consulter ces informations, nous allons installer une extension de GNU-radio : https://github.com/bastibl/gr-rds
Une fois celle-ci installée, il convient de démarrer gnu-radio à l’aide de la commande suivante :
gnuradio-companion apps/rds_rx.grc
Ensuite, l’interface proposée permet de positionner la fréquence du SDR et ainsi d’écouter la radio et de lire les information RDS.

 

C’est grâce à ce système que les radios diffusent le nom de la chanson actuellement en écoute.

Pour aller plus loin

Notre prochain article présentera les premières étapes de caractérisation d’un signal, l’identification de sa fréquence et son type de modulation. Ensuite, nous pourrons continuer l’analyse pour savoir comment démoduler des signaux et s’intéresser à leur sécurité.
Back to top