AstroDump : la commutation de fréquence pour la radioastronomie amateur, dans SatDump

Radiotélescope de la Villette – association Dimension Parabole – radio-club F4KLO. Novembre 2026.

En bref

AstroDump est une branche du logiciel libre SatDump. SatDump est l'œuvre de son développeur principal, Alan Antoine, F4LAU, qui l'a conçu pour décoder toutes sortes d'images diffusées par les satellites, ce qu'il fait très bien. Pour les besoins du radiotélescope de la Villette, AstroDump ajoute à l'enregistreur de SatDump une fonction de « commutation de fréquence » (frequency switching), la technique classique des radioastronomes pour faire sortir une raie très faible du bruit, par exemple la raie de l'hydrogène neutre à 1420,405 MHz.

Sa particularité : quand le récepteur est distant, comme au radiotélescope où le SDR Airspy est piloté par un serveur SatDump, c'est le serveur lui-même qui fait la commutation. Le réseau ne transporte plus le flux brut du récepteur, seulement les spectres calculés : quelques dizaines de kilo-octets par seconde au lieu de plusieurs mégaoctets.

Spectre brut du récepteur et fenêtre du résultat replié
Le spectre brut du récepteur (en clair) et, dans la fenêtre « Frequency switching », le résultat de la commutation : la raie de l'hydrogène vers 1420,4 MHz et ses composantes. L'antenne est fixe et regarde le zénith : le 7 novembre à 19 h 53, depuis la Villette, elle visait RA 22 h 10 min et Dec +48,8° (J2000), dans la constellation du Lézard, près du plan de la Voie lactée (longitude galactique 97,5°, latitude −6°). L'axe du haut donne la vitesse radiale corrigée vers le LSR (repos local standard). Sur cette capture, la correction (−3,2 km/s) a été calculée pour d'autres coordonnées saisies à la main ; pour le zénith, elle aurait été de +0,8 km/s, soit un décalage de l'axe d'environ 4 km/s. Le premier pic, vers 0 km/s, est l'hydrogène du bras local d'Orion, auquel appartient le Système solaire ; le second, vers −31 km/s, celui du bras de Persée, situé plus loin sur la même ligne de visée (vitesses corrigées pour le zénith). La ligne de base (polynôme d'ordre 8) est ajustée en dehors de la fenêtre délimitée par les deux traits orange, de −238 à +156 km/s, puis retranchée. À gauche, le panneau de réglages : écart de commutation de 1800 kHz, lissage, échelle en dB, correction LSR, ligne de base et retrait des raies parasites étroites.

Le but

En radioastronomie, le signal recherché est souvent bien plus faible que le bruit du récepteur lui-même. La raie de l'hydrogène à 21 cm, par exemple, ne représente que quelques pour cent du bruit du système.

Une moyenne longue fait baisser le bruit aléatoire, mais elle ne fait pas disparaître la courbe de réponse du récepteur. Le filtre de fréquence intermédiaire, ses ondulations et la pente de la bande passante restent imprimés dans le spectre. Ils sont souvent plus grands que la raie elle-même, qui se retrouve noyée dans ces défauts.

Spectre brut de l'Airspy autour de 1420 MHz
Le spectre brut : la pente et les bords du filtre dominent, la raie de l'hydrogène n'est qu'une petite bosse vers 1420,4 MHz, entourée de raies parasites très étroites (dont celle de 1420,000 MHz, harmonique de l'horloge du récepteur).

Il faut donc une méthode qui corrige la courbe de réponse du récepteur sans retirer le signal reçu par l'antenne. C'est le rôle de la commutation de fréquence.

La méthode

Le principe

Le récepteur est réglé alternativement sur deux fréquences, de part et d'autre de la fréquence d'observation f0 :

D est l'écart de commutation, de quelques centaines de kilohertz.

Dans les deux positions, la courbe de réponse du récepteur reste à la même place dans le spectre : elle est liée au récepteur. La raie de l'hydrogène HI, elle, se déplace de 2D d'une position à l'autre : elle est liée au spectre de fréquence.

On moyenne séparément les spectres de puissance de chaque position, ce qui donne deux spectres moyens A et B.

Corriger la courbe de réponse du récepteur

Le rapport des deux spectres fait disparaître tout ce qui est lié au récepteur :

o1 − o2 = (A − B) / B
o2 − o1 = (B − A) / A

Dans o1 − o2, la raie apparaît en positif à un endroit et en négatif à un autre, décalée de 2D. Le résultat s'exprime directement en fraction de la puissance du système : une valeur de 0,05 signifie une raie égale à 5 % du bruit total.

Les deux courbes o1-o2 et o2-o1 avant repliement
Les deux courbes avant repliement : la raie apparaît deux fois, en positif et en négatif, à 2D d'écart.

Le repliement

Les deux courbes contiennent la même raie, à deux endroits différents. On les recale sur l'axe des fréquences du signal, puis on en fait la moyenne :

T(f) = [ (A − B)/B décalé de −D  +  (B − A)/A décalé de +D ] / 2

C'est la commutation « dans la bande » (in-band frequency switching), décrite par Will Armentrout dans sa présentation « Observing Techniques » de l'observatoire de Green Bank (voir la référence en fin d'article). Toutes les observations servent au résultat, ce qui donne un gain d'environ √2 (1,4) sur le rapport signal sur bruit par rapport à une seule courbe. Chaque moitié utilise sa propre référence (B pour l'une, A pour l'autre), si bien qu'une raie forte n'est pas sous-estimée.

Il reste deux « fantômes » négatifs, de demi-amplitude, à ±2D de la raie. C'est normal et connu : il suffit de choisir D pour que les fantômes tombent hors de la zone utile.

Résultat replié en dB : profil de la raie de l'hydrogène
Le résultat replié, en dB, au radiotélescope le 7 novembre 2026 à 18 h 24 (heure de Paris), antenne au zénith : quatre pics, vers 1420,45, 1420,67, 1420,79 et 1420,96 MHz, un pour chaque bras de la Galaxie traversé par la ligne de visée (voir « Ce que racontent les pics » ci-dessous). Le fond est débarrassé de la courbe du récepteur ; l'ondulation lente qui reste de part et d'autre de la raie vient de la réponse en fréquence radio (voir « La ligne de base »).
Spectre relevé avec un Pluto SDR à 17:19 TU
Pour comparaison, le même jour à 17:19 TU, le spectre relevé avec un récepteur Pluto SDR : on y retrouve le même profil, avec les quatre pics aux mêmes fréquences, mais posé sur la courbe du récepteur.

Ce que racontent les pics

À 18 h 24 le 7 novembre, l'antenne, fixe au zénith, visait RA 20 h 40 min et Dec +48,8° (J2000), dans la constellation du Cygne, presque dans le plan de la Voie lactée (longitude galactique 87°, latitude +4°). Dans cette direction, la ligne de visée part de chez nous et traverse successivement plusieurs bras spiraux, de plus en plus loin du centre de la Galaxie. Plus le gaz est loin du centre, plus il prend de retard sur la rotation du Soleil, et plus sa vitesse radiale est négative : chaque bras donne son propre pic, à sa propre vitesse.

Au-delà de −120 km/s environ (1421,0 MHz), l'émission s'arrête : c'est à peu près le bord du disque d'hydrogène de la Galaxie.

Le bras extérieur est ici plus intense que le bras de Persée, pourtant plus proche. C'est un effet du gauchissement du disque galactique : dans cette région du ciel, les parties extérieures du disque se relèvent au-dessus du plan, justement du côté où pointait l'antenne (latitude +4°). À l'inverse, à 19 h 53 (première figure de l'article), le zénith était passé sous le plan (latitude −6°) : on n'y voit plus que le bras local et le bras de Persée.

Les vitesses sont lues sur les captures, à ±5 km/s près, et tiennent compte de la correction LSR pour le zénith (+3,8 km/s à cette heure). Les distances au centre galactique sont « cinématiques », déduites d'une courbe de rotation plate : elles ne sont qu'indicatives, car les bras ont leurs propres mouvements.

Les raies parasites

Les raies parasites très étroites, comme celle de 1420,000 MHz qui vient de l'horloge de l'Airspy, sont retirées des spectres moyens A et B avant le repliement. Chaque point est comparé à la médiane de ses voisins sur une dizaine de kilohertz : s'il la dépasse de plus de 6 fois le bruit, il est remplacé, avec ses deux voisins de chaque côté, par une droite tracée entre les points propres. La raie de l'hydrogène, large de plusieurs centaines de kilohertz, n'est pas touchée. Les moyennes brutes sont conservées : il suffit de décocher l'option pour les retrouver.

La ligne de base

Le repliement efface la partie de la courbe du récepteur qui reste à la même place dans les deux positions : tout ce qui suit la fréquence intermédiaire. Mais une autre partie de la réponse dépend de la fréquence radio elle-même : l'antenne et sa source, le filtre d'entrée, les réflexions dans les câbles (ondes stationnaires), le filtre de poursuite du tuner qui suit l'accord. Cette partie se déplace avec le spectre de fréquence quand on commute, se comporte comme un signal et survit au repliement : elle laisse dans le résultat une ondulation lente, bien visible sur la figure ci-dessus, de part et d'autre de la raie.

Le calcul en donne la mesure. Si le gain d'entrée ondule avec une période P (en MHz), le résultat replié garde la même période, multipliée par le facteur

1 − cos(4π D / P)

où D est l'écart de commutation. L'ondulation est maximale (facteur 2) pour D = P/4 et s'annule pour D = P/2. Au radiotélescope, la période mesurée sur le résultat est d'environ 6,6 MHz : l'écart de 1,8 MHz utilisé tombe presque sur le pire cas. Une simulation le confirme : avec une ondulation de 6,6 MHz de période, l'écart-type du fond vaut 0,108 pour D = 1,8 MHz, 0,024 pour D = 0,5 MHz, 0,009 pour D = 3 MHz et descend au niveau du bruit pour D = 3,3 MHz. La période renseigne aussi sur l'origine : une onde stationnaire entre deux points distants de L donne une période c / (2L), soit environ 15 m de câble coaxial (ou 23 m dans l'air) pour 6,6 MHz.

Ce qui reste se retire par la méthode classique des radioastronomes : un polynôme (de Legendre, d'ordre 4 par défaut) est ajusté sur le spectre replié en dehors d'une fenêtre qui contient la raie, puis retranché partout. La fenêtre se règle en km/s et se voit sur le graphique sous forme de deux traits orange que l'on déplace à la souris. Un clic droit sur le graphique (ou la case « Show line window ») les masque ou les réaffiche, sans changer le calcul. Les points qui s'écartent de plus de trois fois le bruit sont écartés de l'ajustement, et le bruit restant hors de la raie est affiché pour choisir l'ordre. Les moyennes brutes ne sont pas modifiées : il suffit de décocher l'option pour retrouver le spectre d'origine. En simulation, le fond passe d'un écart-type de 0,071 à 0,0035, le niveau du bruit.

Pour une raie faible et large, la prudence s'impose : un polynôme d'ordre trop élevé, ou une fenêtre trop étroite, peut absorber une partie des ailes de la raie. Mieux vaut d'abord réduire l'ondulation à la source, en choisissant l'écart, puis n'utiliser qu'un ordre faible.

L'échelle des vitesses et la correction LSR

Au-dessus du résultat replié, un second axe donne la vitesse radiale en km/s, selon la convention des radioastronomes :

v = c × (f_repos − f) / f_repos

avec c = 299 792,458 km/s et f_repos = 1420,405752 MHz pour l'hydrogène (la fréquence de repos est réglable, par exemple 1665,402 ou 1667,359 MHz pour les raies OH). Une vitesse positive signifie que la source s'éloigne. La galaxie d'Andromède (M31), qui s'approche à environ 300 km/s, donne ainsi sa raie vers 1421,83 MHz, soit −300 km/s sur l'axe.

La vitesse mesurée contient aussi le mouvement de l'observateur : la rotation de la Terre (moins de 0,5 km/s), sa révolution autour du Soleil (jusqu'à 30 km/s) et le mouvement du Soleil lui-même. La correction LSR ramène la vitesse au « repos local standard », le repère dans lequel les vitesses des catalogues sont publiées. AstroDump additionne les trois mouvements, projetés sur la direction de la source :

La source se donne en coordonnées équatoriales J2000 (ascension droite, déclinaison) ou en coordonnées galactiques (l, b), pratiques pour un relevé du plan de la Galaxie. La correction est calculée pour l'heure courante et affichée avec le détail de ses trois termes. Au survol de la souris, le graphique indique la fréquence, la vitesse correspondante et la valeur de la courbe.

Les réglages

Panneau Frequency switching d'AstroDump
Le panneau « Frequency switching » pendant une mesure : 24 cycles, 117 et 81 points parasites retirés, commutation faite par le serveur.

Pourquoi faire la commutation sur le serveur

Au radiotélescope de la Villette, le récepteur SDR Airspy est branché sur un ordinateur du club qui fait tourner le serveur de SatDump. Les membres l'utilisent à distance, depuis chez eux, avec l'interface de SatDump.

Dans la première version, c'était l'interface qui pilotait la commutation. L'ordre de changer de fréquence partait de chez l'utilisateur, traversait Internet, puis les échantillons revenaient avec un retard variable, parfois de plusieurs secondes. Le logiciel devait deviner à quelle position appartenait chaque morceau de signal : il mesurait ce retard au début, puis le suivait en permanence. Et tout le flux du récepteur, environ 40 Mbit/s, devait traverser une liaison Internet déjà chargée.

Dans AstroDump, c'est le serveur qui commute. Il change lui-même de fréquence, et il sait exactement quels échantillons ont été pris avant et après chaque changement. Il n'y a plus de retard à mesurer, et le temps de stabilisation est compté au nombre d'échantillons près.

Le serveur calcule aussi les spectres, avec la même FFT que l'interface. À la fin de chaque palier, il n'envoie qu'un seul spectre moyen. Le débit tombe d'environ 40 Mbit/s à environ 0,1 Mbit/s, soit 300 fois moins.

Comme le flux brut ne traverse plus le réseau, le récepteur peut travailler à 10 millions d'échantillons par seconde. La bande observée s'élargit d'autant, ce qui sera précieux pour une radiosource comme M31, dont le décalage Doppler est important.

L'interface additionne ces spectres en A et B, fait le repliement et l'affiche. Tous les réglages d'affichage restent donc dans l'interface, sans rien changer sur le serveur.

Si le serveur n'est pas une version AstroDump, l'interface s'en aperçoit au bout de trois secondes et affiche un message : la commutation de fréquence demande un serveur AstroDump. Avec un récepteur branché directement sur l'ordinateur, AstroDump fait lui-même la commutation.

Ce que l'on enregistre

AstroDump propose trois sortes de fichiers, pour le post-traitement.

  1. Le résultat final (fichier CSV, sur le poste de l'utilisateur). Bouton « Save CSV » : pour chaque raie de la FFT, la fréquence, les spectres moyens A et B, la différence relative (A − B)/B, la valeur repliée, deux colonnes qui signalent les points parasites retirés, la vitesse radiale et, si la correction est active, la vitesse LSR (avec la correction appliquée dans l'en-tête du fichier), et enfin la valeur repliée après retrait de la ligne de base.
  2. Un spectre replié par cycle (fichier CSV, sur le poste de l'utilisateur). Option « Save each folded cycle » : une ligne par cycle (un palier A suivi d'un palier B), avec l'heure UTC, le nombre de trames, puis les valeurs repliées sur tout le spectre de fréquence. On peut ensuite moyenner autant de cycles que l'on veut, suivre une dérive au cours de la nuit, ou écarter les cycles abîmés par un parasite. Le volume est d'environ 100 Mo par heure.
  3. Le signal brut (fichier IQ, sur le serveur). Option « Save IQ on the server » : les échantillons bruts du récepteur, en 8, 16 ou 32 bits, avec un fichier d'événements qui donne la position exacte de chaque changement de fréquence et de chaque palier. Il permet de tout refaire après coup : autre résolution de FFT, autre durée de stabilisation. C'est volumineux, de 20 à 90 Go par heure, et le serveur s'arrête de lui-même d'enregistrer si le disque se remplit.

Exemple de lecture du fichier par cycle en Python :

import numpy as np
f = "fswitch_cycles_1420405000Hz_....csv"
freq = np.loadtxt(f, delimiter=",", comments="#", max_rows=1, dtype=str)[5:].astype(float)
data = np.genfromtxt(f, delimiter=",", comments="#", skip_header=5)[:, 5:]
moyenne = np.nanmean(data, axis=0)

Les essais

La méthode a été vérifiée par étapes.

Mode d'emploi

  1. Dans l'enregistreur, choisir le serveur distant du radiotélescope comme source.
  2. Régler le gain du récepteur en fixe, sans contrôle automatique de gain, et laisser la décimation à 1.
  3. Régler la fréquence d'observation, par exemple 1420,405 MHz pour l'hydrogène.
  4. Cliquer sur « Start » pour lancer l'acquisition.
  5. Ouvrir le panneau « Frequency switching (experimental) » : les sections inutiles (traitement, enregistrement, suivi, VFOs, Debug) disparaissent pour faire de la place, et le panneau descend de lui-même tout en bas : tous les réglages de la commutation sont visibles d'emblée. Régler l'écart, le palier et la stabilisation.
  6. Si besoin, choisir la fréquence de repos de la raie, cocher la correction LSR et donner la position de la source, et cocher le retrait de la ligne de base en plaçant la fenêtre de part et d'autre de la raie.
  7. Cocher, si besoin, l'enregistrement par cycle et l'IQ brut sur le serveur.
  8. Cliquer sur « Start switching ». La zone principale affiche le résultat replié, qui s'affine au fil des cycles.
  9. Cliquer sur « Stop switching », ou sur « folded » dans la légende, pour revenir au spectre normal. Les moyennes sont conservées : « Resume switching » reprend la mesure là où elle s'était arrêtée, tant que la fréquence, l'échantillonnage, la taille de FFT et l'écart n'ont pas changé. « Start switching » repart de zéro.

Précautions

Le logiciel

AstroDump est une branche de SatDump, logiciel libre de réception et de décodage de satellites, sous licence GPL version 3. Le code se trouve sur GitHub, dans le dépôt f6bvp/SatDump, branche « astrodump ».

Le dépôt garde aussi, à part, le SatDump d'origine avec nos seules corrections de défauts. Ces corrections ont été proposées au projet SatDump. La commutation de fréquence, plus spécialisée, reste pour l'instant dans la branche AstroDump.

Le protocole entre l'interface et le serveur reste compatible : une ancienne interface fonctionne avec un serveur AstroDump, et une interface AstroDump fonctionne avec un ancien serveur pour la réception normale. La commutation de fréquence, elle, demande un serveur AstroDump.

Référence

Will Armentrout, avec l'aide de David Frayer et Larry Morgan, « Observing Techniques », Green Bank Observatory, mai 2020 (planche 30 : « In-band Frequency Switching ») : présentation en PDF.

Remerciements

À l'équipe de SatDump, pour un logiciel remarquable et ouvert.
À l'équipe du radiotélescope de la Villette et de l'association Dimension Parabole.
À François-Xavier Hugot, qui nous a fait connaître la présentation de Will Armentrout.
À l'outil d'IA Claude (Claude Opus 5.5, Anthropic), pour l'aide au développement.