Home
GNU Radio par la pratique

 

Par Michel Vonlanthen HB9AFO

 

 

La description qui va suivre n'est pas un mode d'emploi exhaustif de GNU Radio mais une marche à suivre pour faire très rapidement ses premiers pas en GNU Radio. Les liens disséminés dans le texte permettront de compléter vos connaissances. Bien que nativement GNU soit un système d'exploitation en lui-même, les expérimentations se feront sur un PC fonctionnant sous Windows 10. Le sujet est quasiment infini puisque ce projet ne touche pas seulement la radio mais des centaines d'autres domaines disponibles sous forme de logiciels libres gratuits développés sous Linux.

 

GNU est un système d'exploitation lancé en 1984 par Richard Stallman et maintenu par le Projet GNU. GNU signifie "gnou" en français, nom d'un animal, sorte de grosse vache, qui vit dans les grandes plaines africaines. C'est aussi l'acronyme de GNU is Not Unix (GNU n'est pas Unix), bien qu'en fait il reprenne les principes de fonctionnement de cet ancien système d'exploitation.

 

Pour en savoir plus (Wikipedia):

On peut aussi lire l'article de Bernard Pidoux F6BVP "Introduction à GNU Radio" en cours de publication dans Radio-REF.

 

 

 

C'est assez fastidieux de décrire GNU Radio par des mots car il s'agit d'un  langage visuel constitué de blocs reliés par des fils. Chacun de ces blocs réalise une fonction dont on peut modifier les paramètres en double-cliquant sur le bloc. Un ensemble de blocs s'appelle graph (.GRC)  et réalise un équipement complet comme, par exemple, un récepteur, un émetteur, un générateur ou autres. On trouve à droite de la fenêtre de travail de GNU Radio Compagnon un volet qui contient une foule de blocs déjà réalisés et qu'on peut ré-utiliser sans limitation.

 

J'utiliserai ma propre expérience et approche de GNU Radio dans ce qui suit, en débutant par la mise en service d'un récepteur DATV DVB-T conçu par Michel HB9DUG sur la base de modules existants.

   Michel avait présenté GNU Radio aux radio Amateurs Vaudois (RAV) il y a quelques années et j'avais été conquis par sa présentation. Et puis le temps a passé et d'autres envies sont passées avant. Ce n'est qu'il y a quelques jours, encouragé par Pierre HB9IAM qui venait lui-même d'installer le récepteur DVB-T de Michel, que je me suis décidé à installer GNU Radio Compagnon sur mon nouveau PC, un "de course" prévu pour les jeux (gaming) et donc très rapide du point de vue graphique. Il faut dire que j'étais limité depuis des années par la puissance de mon notebook H-P, pourtant très récent. La génération de DVB-S à l'aide de la carte DATV-Express n'avait jamais fonctionné selon mes souhaits, images saccadées et résolution limitée. Cela a changé du tout au tout avec ce nouveau PC de table.   

 


Comment ça marche?

 

Un peu de théorie avant de passer à la pratique. La base de tout projet est le logiciel GNU Radio Compagnon.

 

 

 

Fig 1 Fenêtre vide de GNU Radio Compagnon

 

 

Le menu en haut, le volet des blocs déjà réalisés à droite, la liste des exécutions en bas et la fenêtre de travail au milieu. En haut à gauche de celle-ci figurent déjà deux rectangles de base qui contiennent les options de base et les variables.

 

Il faut maintenant charger un graph (.grc) afin de réaliser quelque chose. Ensuite le principe est le suivant:

  • GNU Radio Compagnon et ses blocs sous-jascents sont réalisés en langage C++. On peut utiliser ces derniers tels-quels ou bien les modifier car les codes source sont disponibles en Open Source sur Github. Le graph lui-même (.grc) génère un fichier en langage Python (.py) lorsqu'on l'exécute.
     

  • Lorsqu'on lance l'exécution du graph, les fichiers Python sont interprétés à la volée et on obtient ce qu'on veut en sortie. C'est très différent du fonctionnement d'un Arduino par exemple, où là le code source C++ est tout d'abord compilé et c'est le fichier qui en résulte qui est exécuté. Avant de pourvoir lancer l'exécution, il faut toujours compiler le fruit de son travail, ce qui prend un peu de temps. Avec GNU c'est fondamentalement différent: on modifie le graph, par exemple la valeur d'une variable, et on peut ensuite immédiatement lancer l'exécution du programme ainsi modifié. La contrepartie de cette facilité d'exécution est qu'il faut disposer d'un PC rapide et moderne car l'interprétation d'une source prend plus de puissance machine qu'une simple exécution. C'est le prix à payer pour l'extrême facilité de développement de GNU Radio due au descriptif visuel (le graph sur l'écran) et à son interprétation pour exécution.

Mais tout ce ceci n'est pas important et vous pouvez ne pas le retenir si ce n'est pour votre culture générale si vous vous contentez de simplement charger et exécuter un graph développé par quelqu'un d'autre. C'est ce que j'ai fait avec le graph DVB-T de Michel HB9DUG, aidé au démarrage par Pierre HB9IAM. Je les remercie tous deux ici.

 

En résumé, POUR EXECUTER LE GRAPH REALISE, on peut soit charger GNU radio Compagnon et ensuite, en cliquant sur l'icône triangle, exécuter le fichier graph (.grc) qui est par défaut, soit exécuter directement le fichier Python (.py) qui a été généré et automatiquement mémorisé lors de la première exécution. Cette dernière méthode permet de créer des raccourcis sur le bureau de Windows

 

 

Marche à suivre

 

Contrairement à ce que je pensais, la mise en route de mon premier projet GNU radio, le récepteur DVB-T de Michel, ne m'a pris que le temps d'une soirée. J'ai dû:

  1. Connecter ma clé AirSpy à mon PC via un câble USB (c'était déjà fait pour SDR Sharp)

  2. Télécharger et installer le logiciel GNU Radio Compagnon

  3. Télécharger et installer le graph DVB-T de HB9DUG

  4. Et cliquer sur l'icône  "Exécuter le graph" du menu  (icône triangle gris)

C'est ce que je vais décrire ci-après.

 

 

Récepteur DVB-T avec une clé Air-Spy

 

Il s'agit d'un récepteur DATV DVB-T expérimental (parce que encore en développement) qui permet de recevoir du DVB-T à toutes largeurs de bande (250 kHz à 1 MHz) et à tous FEC (1/2 à 7/8). Il affiche le spectre reçu, sa position à l'intérieur des filtres et la constellation. L'affichage des images se fait au moyen du logiciel gratuit VLC.

      Avec le récepteur Knucker, récemment développé par nos amis de la BATC, c'est le seul récepteur qui permette de recevoir des bandes passantes inférieures à 1 MHz. Jusqu'à présent, Le récepteur Hides HV-122 était le seul à recevoir du 1 MHz.

 

La description de HB9DUG est sur le site du SWISSATV:
http://home.swissatv.ch/2021/03/dvb-t-gnuradio-et-les-rtl-dongles/

 

 

Mise en service

  1. Il faut tout d'abord que la clé Air-Spy au PC et contrôler son fonctionnement au moyen du logiciel SDR #. Le fait que cela fonctionne en récepteur SDR prouve que la clé est bien conneczée et que le driver adlquat a été chargé dans Windows. On peut utiliser une autre clé mais alors le fichier graph devra en tenir compte.
     

  2. Pour le téléchargement de GNU Radio allez ici:
    http://www.gcndevelopment.com/gnuradio/index.htm  

    Et téléchargez gnuradio_3.8.2.0_win64.msi.

    Exécutez-le. Pour ma part j'ai laissé faire l'installation par défaut. Mettre un raccourci sur le bureau afin de pouvoir démarrer GNU Radio Compagnon facilement.
     

  3. Ensuite téléchargez le graph d'HB9DUG  pour faire de la réception DVB-T. Il se trouve sur le site du SWISSATV ici: http://home.swissatv.ch/2021/04/dvb-t-gnuradio-et-airspy-r2/ 
    et téléchargez le fichier appelé dvbt-airspyr2-rx-qpsk-fec-v2.

    Il faudra ensuite le dézipper dans un répertoire créé à cet effet, dans mon cas C:\GNU Radio (C'est là que je mettrai tous les fichiers graph).
     

  4. Il n'y a plus qu'à faire une première réception

    Démarrez GNU Radio Compagnon en cliquant sur son raccourci sur le bureau. Vous obtenez la fenêtre d'exécution des composantes du graph (Fig 2):


 

Fig 2 Fenêtre d'exécution

 

 

A la fin des chargements la fenêtre principale de GNU Radio Compagnon s'ouvre (Fig 3 ci-dessous) avec le fichier

graph dvbt-airspyr2-rx-qpsk-fec-v2.grc (Fig 3 ci-dessous)

Vous pouvez aussi charger le graph de votre choix à partir du menu File/Open. Les fichiers chargés restent en mémoire et vous pouvez passer de l'aun à l'autre en cliquant sur le nom correspondant en haut à gauche de la fenêtre.

 

.

 

Fig 3 GNU Radio Compagnon avec le graph DVB-T chargé

 

Dans le menu, un clic sur l'icône qui a la forme d'un triangle gris (Execute the flow graph) exécutera le graph et le résultat apparaître dans une nouvelle fenêtre (Fig 4).

 

 

 

Fig 4 Fenêtre de travail

 

Il n'y a plus qu'à choisir les paramètres désirés pour que la réception se fasse. Il faudra bien-sûr que l'Air-Spy soit connecté à une antenne.

 

Par défaut la fréquence reçue est 437.0 MHz. On peut en changer dans le champ "RX Frequency" en haut à droite. Afin que cette fréquence reste mémorisée, on peut la modifier dans le bloc correspondant du graph appelé "Variable, id freq_central, value 437M" situé en haut à gauche du graph. Double cliquez sur le bloc avec la souris et inscrivez-y la fréquence en Hertz. Elle restera alors mémorisée lorsque vous fermerez le logiciel.

 

Il faut choisir la bande passante désirée, de 125 kHz à 1 MHz.

 

Le FEC, de 1/2 à 7/8.

 

Dans un premier temps laissez les autres paramètres tels-quels. Si un signal à la fréquence voulue, avec la bande passante et le FEC choisis est présent à la prise antenne de l'Air-Spy, une constellation sous la forme de 4 points apparaîtra dans la fenêtre de droite. Le points devront être les plus petits possibles.

 

Pour voir l'image reçue, ouvrezr le logiciel VLC, qui aura été au préalable téléchargé et installé. Il faudra lui indiquer l'adresse du flux reçu du graph dans le menu Média/Ouvrir un média: TCP://:@127.0.0.1:10000.

 

Si tout se passe bien, vous devez maintenant pouvoir visualiser les images de votre correspondant..

 

 

Fig 5 Premier essai sur Oscar-100: mon signal en retour

 

 

Il ne vous restera plus qu'à vous familiariser avec les différents réglages et, plus tard si vous le désirez, créer votre propre graph.

 

 


Analyseur de spectre

 

C'est mon premier projet en GNU Radio. Il reçoit du 437 MHz, +/- 5 MHz et en affiche le spectre et la chute d'eau. Le curseur permet de faire coïncider très précisément la fréquence reçue avec celle affichée.

 

L'utilisation principale de ce graph est double

  1. Il affiche ce qui se passe sur et autour de la fréquence reçue du satellite Oscar-100.
    L'architecture est la suivante: Récepteur AR5001DX avec sortie FI sur 437 MHz grâce à un convertisseur 45,05/430 MHz, AirSpy et GNU Radio.
     

  2. Si on lui ajoute un bouton de VFO, une sortie BF et des modules de réception, ce sera la base d'un bon récepteur.

 

 

 

Fig 6 Le graph spectrum.grc

 

 

Fig 7 Ecran du spectrum

 


Récepteur DVB-T minimum de base

 

C'est le graphe de Michel HB9DUG mais avec toutes les commutation enlevées de façon à ne laisser que ce qui est exclusivement nécessaire à la compréhension du principe de réception DVB-T. Les paramètres sont les suivants:

  • Fréquence: 437 MHz modifiable avec ajustage fin

  • Bande passante: 250 kHz

  • FEC: 1/2

  • RF gain: ajustable

Mis à part que les paramètre de réception sont bloqués à 250kHz et FEC 1/2, ce récepteur fonctionne de la même façon que celui du graph original. Comme l'original, ce récepteur n'a pas de contrôle automatique de la fréquence (AFC), ce qui implique que la fréquence de réception soit être ajustée à 1 kHz-près d'où la présence du réglage fin. A noter que la stabilité de l'AirSpy est correcte et que celle du Portsdown 2020 (avec Lime junior) que j'utilise comme émetteur DVB-T également.

 

 

Fig 8 Récepteur DVB-T minimum

 

 

Fig 9 Ecran du récepteur

 

 

Exécution

 

On peut exécuter le fichier graph .grc à partir de GNU Radio Compagnon, en le chargeant par le menu "ouvrir", si ce n'est déjà fait, puis en en cliquant sur le triangle "Execute the flow graph".

 

Mais on peut aussi le faire sans passer par GRC, en exécutant directement le fichier Python .py que génère  GRC lors de chaque exécution. Il suffit de créer un fichier batch au moyen du bloc note (Notepad) de Windows avec le contenu suivant:

 

C:
cd \Program Files\GNURadio-3.8\bin
run_gr.bat
c:\GNURadio\dvbt_rx_min.py

 

 

où:

  • C: est le disque où se trouvent tous ces programmes
     

  • \Program Files\GNURadio-3.8\bin est le chemin où a été installé GNU Radio et où se trouve le fichier gr.bat. Ce fichier batch (gr.bat) est indispensable car donne les chemins de tout l'environnement de GNU Radio.
     

  • C:\GNURadio\dvbt_rx_min.py est le chemin complet du fichier dvbt_rx_min.py qui est le fichier Python qui a été créé par GRC et mis dans le répertoire C:\GNURadio\.

Et de le sauvegarder avec le nom  (par exemple) dvbt_rx_min.bat. Il faut encore créer un raccourci vers ce fichier sur le bureau de Windows afin de pouvoir démarrer ce programme en cliquant sur son icône.

 

Et hop !...

 


 

A suivre...