GNU-RADIO

1. Introduction

Je vais essayer d'être le plus clair possible sur le fonctionnement du protocole GNU-RADIO.

Une transmission radio permet d’envoyer et de recevoir des informations d’un point A vers un point B à distance. Ce sont les ondes électromagnétiques qui vont permettre cette communication. Nous sommes donc en présence de deux appareils technologiques appelés émetteur/récepteur radio.

Signal sinusoïdal

Ne vous inquiétez pas je ne vous ramène pas dans vos cours à dormir debout de lycée ou de mathSUP/mathSPE.

Équation d’un signal sinusoïdal

On peut donc modifier son amplitude, sa fréquence, sa phase ou même combiner deux paramètres en fonction des données numériques à transmettre. On dit que l’on module le signal. C’est en fait la célèbre fonction « modulation » dont on entend parler pour toutes les communications radio.

Dans notre exemple, on peut imaginer une modulation très simple :

  • on transmet un 0 logique => A = 0, amplitude nulle

  • on transmet un 1 logique => A = 1, amplitude maxi

Modulation OO-ASK

Cette technologie est très facile à mettre en œuvre, mais présente quelques inconvénients comme la fiabilité, la vitesse et la portée.

  • L’écoute et le piratage sont très simples et rapides puisqu’il n’y a aucune difficulté structurelle dans le matériel utilisé.

  • Le débit binaire est faible puisqu’on ne transmet qu’un bit à la fois.

  • La distance entre l’émetteur et le récepteur est modeste puisque l’on est limité en puissance d’émission et qu’aucune technique d’étalement de spectre n’est utilisée ici.

  • La modulation ASK est encore utilisée dans beaucoup de communications où la sécurité au niveau de la liaison physique n’est pas vraiment la priorité.

2. GNU-RADIO

Des outils tout faits sont disponibles et compatibles avec les émetteurs-récepteurs numériques. Ils sont développés avec ou en parallèle d’un projet très important appelé GNU-RADIO disponible sous LINUX.

Ce projet propose la gestion du matériel et les bibliothèques de traitement du flux radios.

2.1 Installation

Depuis les depots :

sudo apt install gnuradio

Depuis github

https://github.com/gnuradio/gnuradio

Depuis un script

Script d’installation build-gnuradio disponible à l’adresse http://www.sbrac.org/files/build-gnuradio. Quand tout se déroule sans problème, ce script installe tous les outils nécessaires.

Voici une liste de tutoriels pour prendre en mains les différents modules : https://wiki.gnuradio.org/index.php/Tutorials

Parmi les applications intéressantes, on trouve :

  • les outils RTL-SDR développés pour les clés récepteur DVB-T.

rtl_adsb 
rtl_eeprom 
rtl_fm 
rtl_power 
rtl_sdr 
rtl_tcp 
rtl_test

L’outil rtl_fm permet entre autre d’écouter une station radio FM, ou bien encore rtl_sdr qui, lui, permet d’enregistrer les signaux I/Q dans un fichier afin d’être analysés ultérieurement ou rejoués tels quels.

On va s'interesser ici à gnuradio-companion qui est un environnement de développement graphique dans lequel vous pouvez assembler des blocs . Il construit ensuite un script Python utilisant les modules liés aux librairies GNU-RADIO compilées. L’intérêt de gnuradio-companion est de pouvoir assez facilement adapter le traitement à vos besoins. On lance gnuradio-companion :

$ gnuradio-companion

Prenons un exemple pour illustrer la chose :

Nous disposons d’une télécommande et l’objectif est de trouver le code émis pour éventuellement créer une télécommande copie. Pour faire cette simple opération, il existe des solutions logicielles comme l’application hackrf_transfer qui enregistre les signaux sur une fréquence et les rejoue à destination des récepteurs. Il existe aussi des « clôneurs » sous forme de petits circuits électroniques qui réalisent plus ou moins bien cette opération. Vous pouvez aussi utiliser gnuradio-companion pour créer un diagramme qui met en évidence les code de la télécommande.

On note deux chose :

  • Rapport cyclique < 10%

  • Fz : 433.92 MHz

Tout d’abord, vérifions la fréquence avec osmocom_fft :

$ osmocom_fft -f 433.8M -s 2M

La première pointe au centre est celle du HackRF, celle à droite est la transmission de la télécommande. On voit bien que la fréquence est de 433,945 MHz. La forme de la pointe nous indique que c’est probablement de la modulation d’amplitude.

Je vous laisse maintenant chercher comment créer un diagramme pour cette télécommande avec gnuradio-companion et trouver que la télécommande en question utilise le protocole HomeEasy spécialisé dans les objets domotiques.

3. Le matériel disponible

La réalisation de la partie électronique peut être une opération envisageable, mais serait hors sujet. Il existe suffisamment de matériels disponibles, aux performances et aux prix variés, pour éviter l’étape de la fabrication. Une liste non exhaustive des plus utilisés est présentée ci-après.

3.1 La clé RTL-SDR

Clé RTL SDR

Ses principales caractéristiques :

  • Bande de fréquence : 30 - 1700 MHz

  • Échantillonnage : 2 MHz

Grâce à ces paramètres, ce circuit permet l’écoute et le décodage de beaucoup de communications comme les radios AM/FM, les télécommandes 433Mhs 868MHz ou d'autres objets se trouvant dans la même bande de fréquence.

Cependant, sa limite en fréquence (environ 1,7-2,0 GHz) ne permet pas d’atteindre la bande ISM (Industrielle Scientifique et Médicale) des 2,4 GHz où beaucoup de communications se trouvent comme le Wi-Fi, le Bluetooth, NRF24, le ZigBee, etc.

3.2 Le HackRF One

Le HackRF One

Ses caractéristiques :

  • half-duplex transceiver (transmetteur half-duplex)

  • operating frequency : 10 MHz to 6 GHz (plage de fréquence de travail)

  • supported sample rates : 2 Msps to 20 Msps (quadrature) (fréquences d’échantillonnage)

  • resolution : 8 bits

  • interface : High Speed USB (with USB Micro-B connector)

  • power supply : USB bus power

Le hackRF est un transmetteur HALF-DUPLEX (émission ou réception, mais pas les deux en même temps), ce qui est un inconvénient pour certaines applications comme l’intégration dans un réseau ou la mise en place d’un Man in The Middle. Et oui il va falloir trouver un autre moyen !

Un autre inconvénient du HackRF c'est sa portée... Parfait pour des test locaux mais dès qu'il s'agit de communications éloignées il faudra penser à utiliser autre chose.

3.3 Le bladeRF (une alternative un peu plus haut de gamme)

Le bladeRF de chez NUAND

3.4 Le PandwaRF

Sa plage de fréquence n’est pas très étendue (inférieure à 1 GHz) et présente des zones mortes (fréquences non gérées). Le PandwaRF est toutefois émetteur et récepteur dans les fréquences les plus utilisées, 315/433/868/915 MHz pour les modulations ASK/OOK/MSK/2-FSK/GFSK. L’utilisateur ne peut pas configurer le traitement numérique des signaux reçus ou émis, mais dispose d’applications sous Linux ou smartphone, connectées en USB ou Bluetooth LE, permettant de recevoir, enregistrer et renvoyer des communications radio numériques avec ou sans modifications.

3.5 L’USRP

Cet émetteur-récepteur numérique est le best de sa catégorie. Mais... c''est cher... entre 1000 à 5000 euros suivant les versions.

RX/TX WBX 20 - 2200 MHz

Last updated