Station sol SDR automatique : le logiciel en général (ordinateur + Jetson Nano)

Il y a quelques temps j’ai publié un article pour réaliser une station sol de réception du satellite UVSQ-SAT. Quelques mois plus tard, j’ai publié une version dédiée à la réception des satellites NOAA de cette même station sol. La version publiée aujourd’hui est une sorte de compilation de ces différentes stations.

Les codes sont disponibles sur mon Github : https://github.com/ebecamel/SDR_automatic_GS

L’objectif de la station

Cette station a pour objectif de permettre la réception en automatique des émissions suivantes :

  • Télémétrie des cubesats utilisant les bandes amateurs VHF / UHF,
  • Transpondeurs audio des satellites (et de l’ISS),
  • SSTV PD120 de l’ISS,
  • APT des NOAA.

Après avoir reçu les signaux, la station est capable de :

  • Déposer les télémétries reçues sur la DB SatNOGS,
  • Déposer les télémétries reçues sur un serveur FTP,
  • Pousser les télémétries reçues via un serveur KISS,
  • Déposer les fichiers images ou audio générés sur un serveur FTP.

Cette station fonctionne aussi bien sur un ordinateur (Linux) que sur un Jetson Nano (2GB et 4GB). Cependant, la version pour ordinateur est limitée à une seule antenne (sauf si un module permettant d’accéder à des GPIO est installé) alors que la version Jetson Nano est fonctionelle avec 2 antennes. Dans ce cas, le choix de l’antenne adaptée est automatique grâce aux GPIO de la carte.

Le fonctionnement

Le fonctionnement logiciel de la station se résume au schéma qui suit :

Pour résumer :

  1. La station sol lit la liste des satellites à suivre ainsi que leur fréquence et mode de réception,
  2. Elle calcule les prochains passages de chaque satellite, puis attend le prochain passage,
  3. Quand un satellite est en vue, elle active la réception et lance le script de démodulation du mode désiré,
  4. A la fin du passage, les données reçues sont stockées, puis la station retourne à l’étape 1.

Installation des logiciels

Pour fonctionner, la station sol a besoin de sdr4space.light, GNU Radio et la librairie gr-satellites.

sdr4space.light

Pour installer sdr4space.light, il suffit de télécharger le .appImage pour votre plateforme depuis ce lien.

Je vous recommande de placer le .appImage dans le dossier software du dépôt git à télécharger plus loin.

Vous aurez sans doute besoin d’installer les dépendances suivantes :

Soapy-sdr 0.8
sudo apt-get install cmake g++ libpython3-dev python3-numpy swig

git clone https://github.com/pothosware/SoapySDR.git

cd SoapySDR

mkdir build && cd build

cmake ..

make -j4

sudo make install

sudo ldconfig

Une fois l’installation terminée, vous pouvez la tester avec :

SoapySDRUtil --info

La procédure d’installation est également disponible sur le wiki de SoapySDR.

Soapy rtlsdr

Pour utiliser SoapySDR avec une clé RTLSDR, il est nécessaire d’installer la librairie dédiée :

sudo apt-get install rtl-sdr librtlsdr-dev

git clone https://github.com/pothosware/SoapyRTLSDR.git

cd SoapyRTLSDR

mkdir build && cd build

cmake ..

make

sudo make install

En exécutant de nouveau la commande info pour SoapySDR vous devriez voir le support de la rtl-sdr dans la liste des modules trouvée par Soapy.

SoapySDRUtil --info

Toute la procédure est disponible sur le wiki de la librairie.

fftw3-3
sudo apt-get install libfftw3-3
liquid-sdr
sudo apt-get install libliquid1d
libsndfile1
sudo apt-get install libsndfile1
mosquitto & mosquitto-clients
sudo apt-get install mosquitto mosquitto-clients

GNU Radio Companion

Si vous êtes sur Jetson Nano et que vous avez utilisé l’image disponible ici comme système d’exploitation, vous pouvez passer cette étape car GNU Radio 3.8 est déjà installé.

Pour installer GNU Radio Companion 3.8 :

sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.8

sudo apt-get update

sudo apt-get install gnuradio

GR-Satellites

La station sol a besoin de la librairie gr-satellites pour fonctionner. Pour l’installer :

sudo apt-get install python3-pip

sudo pip3 install requests construct

git clone https://github.com/daniestevez/gr-satellites.git

cd gr-satellites

git checkout maint-3.8

mkdir build && cd build

cmake ..

make -j4

sudo make install

sudo ldconfig

Vous pouvez ensuite vérifier l’installation avec la commande :

gr_satellites

Vous pouvez avoir une erreur vous disant que le module « satellites » est introuvable. Dans ce cas :

export PYTHONPATH=/usr/local/lib/python3/dist-packages/

Pour appliquer cette correction à chaque démarrage du Linux, il suffit d’ajouter la commande précédente à la fin du fichier ./bashrc :

sudo nano ~./bashrc

Tous les logiciels nécessaires au bon fonctionnement de la station sont désormais installés.


Création du ramdisk

La station sol utilise une fifo pour envoyer le flux IQ de la clé SDR vers le GNU Radio de démodulation. Pour des questions de performance et pour éviter d’endommager la mémoire principale à cause des cycles de lecture / écriture, cette fifo est placée dans un ramdisk.

La fifo est créée automatiquement par sdr4space.light mais il faut cependant créer le ramdisk. Pour cela, il suffit d’ajouter une ligne à la fin du fichier /etc/fstab :

sudo nano /etc/fstab

La ligne à ajouter :

tmpfs /opt/GS_ramdisk tmpfs   defaults,size=128M   0 0

Cette ligne va créer un ramdisk de 128M à l’emplacement /opt/GS_ramdisk. Vous pouvez modifier cet emplacement si vous le souhaitez, il faudra juste penser à le modifier également dans le fichier de configuration général config.js.

Pensez à faire un reboot pour avoir apparaître le ramdisk.


Installation des scripts

Tous les scripts nécessaires au fonctionnement de la station sont disponibles sur mon Github. Pour les installer, il faut suffit de cloner le dépôt dans le dossier que vous aurez choisi :

git clone https://github.com/ebecamel/SDR_automatic_GS.git

Dans le dossier obtenu, vous trouverez un répertoire software. Ce répertoire contient tout le nécessaire :

  • Les scripts de démodulation GNU Radio dans GNU_Radio,
  • La liste des satellites et le fichier de configuration général dans config,
  • Les fichiers javascripts dans scripts-js,
  • Le fichier .sh permettant le lancement du bon GNU Radio en focntion du mode du satellite choisi.

Configuration de la station

Avant de commencer à utiliser la station, vous devez compléter les 2 fichiers présents dans le dossier config.

config.js

Ce fichier contient tous les différents paramètres utiles pour la station sol, à savoir :

  • Groupe Ground station configuration : permet de définir les coordonnées GPS de la station (en degrés décimaux) et son altitude (en mètres),
  • Groupe file path : permet de définir le lien vers les TLE (par défaut la station les TLE des satellites disponibles sur SatNOGS depuis Celestrak), l’emplacement du .sh permettant le lancement des GNU Radio (ne pas toucher si pas déplacé) et l’emplacement du ramdisk,
  • Groupe rtlsdr : permet de définir le gain à appliquer à la clé SDR,
  • Groupe print in terminal : permet d’afficher ou non dans le terminal les prochaines passes et le debug général,
  • Groupe upload config :
    • FTP : permet d’activer ou non l’envoi FTP à chaque fin de passage. Si FTP activé permet de définir les paramètres de connexion du serveur à utiliser,
    • SIDS : permet d’activer ou non l’envoi SIDS (pour les télémétries uniquement) et i activé permet de définir l’adresse du serveur et l’indicatif à utiliser pour l’envoi.
sat_list.txt

Ce fichier contient la liste des satellites que vous souhaitez suivre. Pour le remplir, il faut respecter la structure suivante :

NORAD;frequence;MODE

Saisissez une ligne par satellite, et faites attention à ne pas laisser de ligne vide à la fin du fichier.

  • NORAD : numéro NORAD du satellite,
  • frequence : fréquence à recevoir en Hz (par exemple 145.250e6 , e6 donnant des megas),
  • MODE : mode à recevoir du satellite. Sont disponibles :
    • NFM : réception FM bande étroite,
    • TM : télémétrie du satellite. Si le satellite existe sur SatNOGS le choix de la modulation sera fait automatique par GNU Radio,
    • APT : réception des images APT des satellites météo NOAA15, NOAA18 et NOAA19,
    • PD120 : réception des images SSTV PD120 transmises par l’ISS.

Lancer la station sol

Le lancement de la station sol se fait depuis un terminal. Ouvrez en donc un dans le dossier où se trouve le .appImage de sdr4space.light (je vous recommande de placer le .appImage dans le dossier software du git). Si le .appImage est à l’emplacement recommandé, lancez la commande suivante :

./sdr4space_lite_x86_64.AppImage -d scripts-js/

Si le .appImage est un dossier différent, pensez à adapter les chemins vers le .appImage et vers le dossier scripts-js du git.

Une fois la commande exécutée, vous devriez avoir l’affichage suivant dans le terminal (si vous avez laissé sur true les différents debug) :

Vous n’avez ensuite plus qu’à attendre un passage de satellite ! Vous trouverez les résultats des passages dans un dossier results qui sera créé dans le répertoire software du git.


Cet article concerne la partie logicielle de station, un autre article lui dédié à la partie matérielle pour une utilisation avec le Jetson Nano sera mis en ligne prochainement.