Partie software de la station sol SDR pour UVSQ-SAT dont l’hardware a été présenté dans cet article.
Fonctionnement général
La station sol n’utilise que 2 logiciels pour fonctionner :
- SDR4space.lite (site officiel) : téléchargement des TLE, prédiction des passages, correction Doppler, enregistrement des passages
- GNU Radio Companion (site officiel) : décodage des trames depuis le fichier IQ, écriture des trames dans un fichier .txt, envoi des trames vers la DB de satnogs
Les 2 logiciels utilisés sont gratuits (GNU Radio est open source et gratuit, SDR4space.lite est la version gratuite de SDR4space).
Préparation de la carteSD pour le Jetson nano
La toute première étape est de flasher la carteSD pour le Jetson nano. Pour cela, il suffit de suivre la procédure expliquée sur le site de Nvidia :
Pour la version 2GB :
https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-2gb-devkit
Pour la version 4GB :
https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit
Téléchargement des fichiers de la station sol
Les scripts SDR4space et GNU Radio sont à télécharger depuis ce lien.
Il suffit ensuite de placer les fichiers Javascript .js, le fichier Python .py et le bash .shd dans un même dossier comme dans la capture ci-dessous.
Pensez à rendre exécutable le fichier bash launch_decode.sh avec la commande :
sudo chmod u+x /chemin/vers/launch_decode.sh
SDR4space.lite
La station sol utilise la version gratuite du logiciel SDR4.space afin de prédire les passages du satellite au dessus de la station, de compenser l’effet Doppler au cours des passes, d’enregistrer les passages et lancer le décodage.
Téléchargement
Pour télécharger SDR4space.lite, il suffit de se rendre ici et de choisir la version pour Jetson nano (ou la version classique si vous êtes sur PC).
Une fois votre exécutable téléchargé, placez le dans le répertoire que vous voulez (le même répertoire que les scripts ou autre, au choix).
Pré-requis
SoapySDR
Pour utiliser SDR4space vous devez installer SoapySDR sur le jetson nano. Pour cela, suivez les commandes suivantes (la procédure est également disponible ici) :
git clone https://github.com/pothosware/SoapySDR.git
cd SoapySDR
mkdir build
cd build
cmake ..
make -j4
sudo make install
sudo ldconfig
Vous pouvez vérifier la bonne installation avec la commande suivante :
SoapySDRUtil –info
qui doit vous retourner quelque chose comme ça (vous ne devriez pas encore avoir rtlsdr de disponible dans les Available factories) :
SoapyRTLSDR
Une fois Soapy installé, il faut lui ajouter le support de la clé RTL-SDR. Pour cela :
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
Une fois SoapyRTLSDR installé, vous devriez avoir rtlsdr dans les « Available factories » avec la commande SoapySDRUtil –info.
autres prerequis
sudo apt-get install mosquitto mosquitto-client libliquid1d
Le fichier de configuration
Différentes variables sont à modifier dans le fichier config.js pour adapter le script à votre station sol :
- gs_latitude et gs_longitude : les coordonnées GPS en degrés décimaux de la station,
- gs_asl : l’altitude de la station,
- tle_path : par défaut télécharge les TLE de Celestrak, mais possibilité de pointer vers un autre lien ou un fichier en local,
- path_cmd_file : chemin absolu vers le fichier launch_decode.sh
- rtl_gain : Gain de la clé RTL-SDR
- print_passes et print_debug : permet d’afficher ou non dans le terminal les prochains passages et les messages de debug
Lancement
Vous pouvez ensuite lancer SDR4space.lite avec le script de la station sol avec la commande (commande pour le Jetson nano, à adapter si vous êtes sur PC) suivante :
/chemin/vers/sdr4space.light -d /chemin/vers/dossier/des/scripts
Sur PC le logiciel étant dans un .appImage vous ne devriez pas avoir d’erreur. Sur Jetson nano, vous pouvez cependant avoir des erreurs pour des packages manquants. Si c’est le cas, installez les packages indiqués dans les erreurs.
Si tout se passe bien, vous devriez avoir un résultat comme celui-ci :

Tant que cette commande est en cours d’exécution le Jetson nano fera le tracking du satellite, enregistrera les passages et décodera les trames.
GNU Radio Companion
Le décodage des trames se fait avec un script GNU Radio Companion 3.8. Pour l’installer il faut compiler ses sources sur le Jetson nano (procédure disponible ici):
git clone https://github.com/gnuradio/gnuradio.git
cd gnuradio
git checkout maint-3.8
git submodule update –init –recursive
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../
make -j4
sudo make install
sudo ldconfig
Au besoin, installez les dépendances nécessaires à l’installation de GNU Radio Companion.
Vous pouvez ensuite vérifier la bonne installation de GNU Radio avec la commande suivante :
gnuradio-companion –help
qui doit vous retourner quelques chose comme ça :
GR-satellite
Le décodage des trames du satellite nécessite la librairie gr-satellites. Pour l’installer :
git clone https://github.com/daniestevez/gr-satellites.git
cd gr-satellites
git checkout maint-3.8
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
Le script GNURADIO
Le script de décodage pour GNU Radio est le fichier .py (au besoin le .grc est également disponible). Quelques modifications sont à apporter dans le fichier nogui_decoder_UVSQSAT_IQ.py pour l’adapter à la station:
- Ligne 40 : un fichier start_time.ini sera généré par SDR4space dans le fichier des scripts. Il faut donc saisir le chemin absolu jusqu’au dossier des scripts pour que GNU Radio trouve par la suite le fichier start_time.ini
- Ligne 50 : vous devez saisir votre indicatif pour SatNOG ainsi que les coordonnées GPS de la station en degrés décimaux.
La station sol va maintenant enregistrer les passages du satellite et les décoder avec le GNU Radio. A chaque fois, le fichier grc_out.txt sera écrasé, si vous voulez conserver les données en local sur votre Jetson il vous faut donc faire un script qui renomme ce fichier texte. Seul l'envoi vers Satnogs est actif pour le moment, mais vous pouvez envoyer les données vers d'autres serveurs SIDS en éditant le .grc et en le recompilant avec GNU Radio.