1.  Introduction

Depuis mai 2015 les radioamateurs peuvent recevoir des transmissions vidéo numériques provenant directement de la Station Spatiale Internationale (ISS), avec une qualité très supérieure à celle de la télévision à balayage lent (SSTV) utilisée antérieurement. La presse a commencé à en parler en février 2016, à l'occasion du premier contact vidéo direct entre un astronaute et une école dans le cadre d'un programme de promotion des sciences et des techniques. La plupart du temps, l'ISS émet seulement une mire de test noire. Mais les astronautes communiquent parfois avec les radioamateurs pendant leur temps libre ; cette tradition remonte à l'époque de la station Mir. Avec les compétences requises et le matériel adéquat, n'importe qui peut espérer recevoir des images hors des dates planifiées, et même (avec une licence en règle) tenter de discuter en visioconférence avec l'ISS.

Les appellations Digital Amateur TV, Digital ATV et DATV désignent la vidéo numérique sur les bandes amateur. Les radioamateurs adoptent généralement les mêmes normes que les systèmes de télévision numérique grand public : DVB-S (satellite) et DVB-T (terrestre). Dans le contexte de l'ISS, Ham Video désigne l'émetteur embarqué, et Ham TV désigne le canal vidéo descendant combiné avec un canal voix montant pour des contacts en duplex.

Par rapport aux autres activités DATV, la réception des transmissions DVB de l'ISS présente quelques spécificités :

  • Bilan de liaison .  L'ISS transmet seulement 10 W PIRE environ. La distance minimale est de l'ordre de 400 km (pendant un bref moment, lors des passages les plus favorables). Il est recommandé d'utiliser une parabole de 1,2 m. D'après la norme DVB-S ([DVBS]) et les paramètres FEC utilisés, une réception quasi-sans-erreurs requiert Eb/N0 ≥ 4,5 dB.

  • Pointage .  Contrairement aux stations DATV terrestres et aux satellites géostationnaires, l'ISS est un émetteur mobile. Pour une réception optimale, il est recommandé de disposer d'un rotor azimut/élévation piloté par ordinateur avec une précision de ±2° et une vitesse de balayage de 5°/s. (Mais une petite antenne fixe suffit pour débuter - voir plus bas.)

  • Polarisation .  Les antennes à polarisation circulaire ne sont pas aussi courantes que celles à polarisation linéaire.

  • Fréquence .  La plupart des expérimentations DATV sont menées dans les bandes 70 cm et 23 cm qui sont couvertes par les tuners des récepteurs DVB-T et DVB-S grand public. Pour des raisons techniques l'ISS transmet dans la bande 13 cm (2369, 2395, 2422 ou 2437 MHz). Il faut donc recourir à des convertisseurs de fréquence ou à des récepteurs dédiés.

  • Bruit de fond .  Selon la configuration de l'émetteur, le signal se situe soit à l'intérieur, soit juste à côté de la bande ISM 2,4 GHz qui est aussi utilisée par WiFi, Bluetooth et les fours à micro-ondes.

  • Bande passante .  La transmission est généralement modulée à 2 Msymboles/s, ce qui correspond à 2 MHz de spectre radio (2.7 MHz avec le roll-off). C'est à la portée de quelques récepteurs logiciels amateurs. On peut obtenir des résultats avec un récepteur USB à bas coût de type RTL-SDR, mais cela exige davantage de travail.

  • Mise en réseau .  Comme une station ne peut recevoir la vidéo que pendant quelques minutes à chaque passage de l'ISS, il faut organiser un réseau de stations de réception pour maintenir le contact plus longtemps. À ce jour il y a un répéteur à l'adresse http://www.batc.tv/iss/.

Pour plus d'informations :

2.  Objectifs

Un des objectifs de ce projet est de réduire les coûts et autres barrières à l'entrée. [IZ8YRR] a déjà montré qu'une petite antenne fixe de 12 dB permet de réaliser des expériences intéressantes.

Un autre objectif est d'étudier les avantages des radios logicielles (SDR). Les expérimentations DATV utilisent déjà couramment des modulateurs logiciels, mais côté réception on trouve généralement des démodulateurs "boîte noire" intégrés dans des cartes PCI, des adaptateurs USB ou des appareils autonomes ([N6GHZ]). Un récepteur logiciel open-source permet de se familiariser avec les techniques de traitement du signal modernes, de tester des stratégies de démodulation nouvelles, et de s'affranchir de la disponibilité d'équipements sur étagère trop spécifiques.

3.  Réception DATV ISS avec une parabole fixe de 24 dB, un downconverter et une radio logicielle

Voici la chaîne de réception utilisée pour ma première tentative réussie.

Matériel :

  • Antenne WiFi 2,4 GHz 24 dB TP-Link TL-ANT2424B. La polarisation linéaire fait perdre 3 dB, mais il s'agit d'un produit relativement bon marché et commercialisé à grande échelle, ce qui n'est pas le cas des antennes hélicoïdales.

  • Amplificateur faible bruit et convertisseur de fréquence BOTE BT-480 (oscillateur 3650±1,5 MHz, gain 50 dB, bruit 0,4 dB). C'est le seul composant spécifique.

  • Répartiteur TV satellite 2 voies 5 - 2400 MHz.

  • Récepteur satellite autonome sous Linux embarqué Xtrend ET 4000. Je voulais l'utiliser pour confirmer la présence d'un signal valide avant de me lancer dans la réception logicielle, mais il ne détecte rien. Finalement il sert seulement d'alimentation 13 V pour le convertisseur de fréquence.

  • USRP de Ettus Research avec carte DBSRX (800 - 2300 MHz, échantillonnage I/Q sur 12 bits à 8 Méch/s). C'est l'élément le plus coûteux. Un des prochains objectifs du projet est de sélectionner un récepteur SDR plus abordable.

  • Ordinateur portable générique (Intel Celeron 2955U 1,4 GHz) sous Linux.

Logiciels :

  • Gpredict version 1.3 pour calculer les orbites.

  • GQRX version 2.3.2 pour piloter l'USRP.

  • GNU Radio version 3.6.5.

  • gr-dvb, une implémentation de la norme DVB-S pour GNU Radio ([GRDVB]). J'ai dû apporter quelques modifications qui sont publiées ici.

  • MPlayer pour décoder les Transport Streams.


Figure 1.  Configuration avec antenne fixe de 24 dB antenna

GQRX sur un portable, récepteur satellite et son moniteur, USRP, boussole et inclinomètre, downconverter, antenne.

Le spectrogramme correspond à un enregistrement ; l'ISS n'émettait pas le jour où la photo a été prise.


Réception :

  1. Relever les coordonnées locales avec un récepteur GPS ou sur Google Maps.

  2. Avec gpredict, sélectionner un passage de l'ISS dépassant 60° d'élévation. Vérifier avec un service en ligne de prédiction d'orbites de satellites, par exemple AMSAT. Tenir compte des fuseaux horaires et de l'heure d'été.

  3. S'assurer que l'émetteur sera actif. L'ARISS semble avoir des informations à jour ici.

  4. Pointer manuellement l'antenne vers le point le plus haut au dessus de l'horizon de la trajectoire prédite.

  5. Activer la recherche de canaux sur le récepteur satellite, au moins pour activer l'alimentation 13 V du downconverter.

  6. Démarrer gqrx. Centrer la réception sur 1255 MHz (ou 3650 MHz moins la fréquence d'émission, si ce n'est pas 2395 MHz).

  7. Régler les gains : GC1~40dB, GC2=0, ADC-pga=0. En principe on minimise le bruit interne en saturant d'abord GC1.

  8. Lorsque le signal devient visible dans le spectrogramme, démarrer l'enregistrement. Il est possible que le signal soit décentré à cause de la faible précision de l'oscillateur local du downconverter. Essayer d'estimer le décalage ; cela facilitera la démodulation logicielle.

Figure 2.  Première réception réussie

... à part le décalage en fréquence inattendu, probablement dû au downconverter.


Démodulation et décodage :

  1. Utiliser ce script (tiré en grande partie de [GRDVB]) :

    #!/usr/bin/env python
    
    # export PYTHONPATH=gr-dvb-pabr/swig:gr-dvb-pabr/swig/.libs:gr-dvb-pabr/python
    
    file = "gqrx_YYYYMMDD_hhmmss_FFFFFFFFFF_RRRRRRR_fc.raw"
    sample_rate = 8e6
    symbol_rate = 2000e3
    freq_shift = 0e3
    
    from gnuradio import gr
    import dvb_swig
    import dvb_s_modulator, dvb_interleaver_bb
    
    tb = gr.top_block("DVBS_Receiver")
    
    src = gr.file_source(gr.sizeof_gr_complex, file, False)
    mixer = gr.multiply_cc()
    tb.connect(src, (mixer,0))
    freq_offset = gr.sig_source_c(sample_rate, gr.GR_SIN_WAVE, freq_shift, 1, 0)
    tb.connect(freq_offset, (mixer,1))
    
    demod = dvb_s_modulator.s_demodulator_cc(sample_rate, symbol_rate)
    #demod = dvb_s_modulator.s_demodulator2_cc(sample_rate, symbol_rate)
    puncturing = [1,1]  # For rate 1/2
    decode = dvb_swig.depuncture_viterbi_cb(puncturing)
    deinterleaver = dvb_interleaver_bb.deinterleaver_bb()
    pad = dvb_swig.pad_dvb_packet_rs_encoded_bp()
    rs_decoder = dvb_swig.rs_decoder_pp()
    derandomizer = dvb_swig.derandomizer_pp()
    depad = dvb_swig.depad_mpeg_ts_packet_pb()
    dst = gr.file_sink(gr.sizeof_char, "out.ts")
    
    tb.connect(mixer, demod, decode, deinterleaver, pad,
               rs_decoder, derandomizer, depad, dst)
    
    tb.run()
    

  2. Décoder le Transport Stream MPEG obtenu :

    $ mplayer out.ts
    or
    $ ffplay out.ts
    

    Pendant cet enregistrement (début octobre 2015) l'ISS émettait avec les paramètres suivants. On notera que le bitrate audio est étonnamment élevé.

    Stream #0.0[0x100]: Video: mpeg2video, yuv420p, 720x480 [PAR 8:9 DAR 4:3], 903 kb/s, 35.45 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x101]: Audio: mp2, 44100 Hz, 2 channels, s16, 256 kb/s
    

Figure 3.  Première démodulation réussie

Première démodulation réussie

Ligne bleue d'origine inconnue.



4.  Réception DATV ISS avec un récepteur RTL-SDR

Figure 4.  Configuration avec répartiteur 3 voies et récepteur RTL-SDR

Cliquer sur l'image pour la voir en plus haute résolution.

J'ai pu démoduler des signaux capturés avec un récepteur USB RTL-SDR échantillonnant en quadrature sur 8 bits à 2,4 Méch/s avec le même équipement que ci-dessus. Ceci exige quelques précautions supplémentaires :

  • Régler la fréquence aussi près que possible de la fréquence du signal, afin d'éviter l'atténuation en bord de bande et/ou le repliement de spectre .  Les tentatives précédentes suggéraient que mon downconverter induisait un décalage d'au moins 1 MHz. J'ai donc cherché le signal autour de 1256 MHz au lieu de 1255 MHz. J'ai lancé une seconde instance de GQRX avec l'USRP échantillonnant à 4 Méch/s afin de pouvoir estimer visuellement la fréquence réelle dès l'apparition du signal. J'ai alors ajusté la fréquence du récepteur RTL-SDR dans la première instance de GQRX. On peut voir tout ceci dans le spectrogramme (Figure 4, «  Configuration avec répartiteur 3 voies et récepteur RTL-SDR  »). Il ne restait ensuite plus que quelques secondes pour enregistrer le signal sur disque avant que l'ISS ne sorte du champ de l'antenne. Tout ceci pourrait être réalisé automatiquement et sans USRP, en scannant quelques MHz autour de la fréquence nominal avec le récepteur RTL-SDR jusqu'à ce que le signal soit identifié.

  • Désactiver l'algorithme de synchronisation en fréquence de gr-dvb (digital.fll_band_edge_cc() dans python/dvb_s_modulator.py) .  Il fonctionne correctement avec un signal de 2 MHz échantillonné à 4 Méch/s, mais beaucoup moins bien à 2,4 Méch/s.

  • Corriger l'erreur résiduelle sur la fréquence à 10 kHz près .  Il suffit d'ajuster le paramètre freq_shift jusqu'à ce que les pertes de paquets soient minimales.

5.  Chaîne de réception à bas coût avec tête de réception MMDS

Les downconverters MMDS sont couramment utilisés par les radioamateurs dans la bande des 13 cm. Voir par exemple :

Il devrait être possible de recevoir les transmissions DATV de l'ISS avec la configuration ci-dessous. (La variante que j'ai testée avait un oscillateur compensé en température et une connectique SMA.)

Le signal en sortie de la tête MMDS est aux alentours de 400 MHz. C'est hors de portée des récepteurs DVB-S usuels.

Le convertisseur BT-281B est plus précis en fréquence que le BT-480 : ±30 kHz au lieu de ±1.5 MHz (d'après les spécifications). Un récepteur RTL-SDR non compensé en température ajoute généralement un écart d'au plus 100 ppm, soit ±40 kHz à 400 MHz. Il n'est donc pas utile de brancher un analyseur de spectre en parallèle pour localiser le signal comme dans la Section 4, «  Réception DATV ISS avec un récepteur RTL-SDR  ». Par ailleurs, l'erreur totale sur la fréquence est un ordre de grandeur en dessous de la vitesse de modulation (2 MHz) ; la plupart des démodulateurs devraient pouvoir s'en accommoder. Cependant, comme les signaux DVB-S de l'ISS occupent toute la bande passante d'un récepteur RTL-SDR tournant à 2,4 Méch/s, il est préférable de centrer le signal pour éviter l'atténuation en bord de bande. Le surcoût d'un modèle RTL-SDR TCXO est donc justifié.

Notons que le décalage Doppler est négligeable par rapport à la largeur des signaux en question.

Figure 5.  Configuration avec tête MMDS et récepteur RTL-SDR

(Illustrée avec un récepteur à connectique SMA ; les modèles MCX sont moins chers.)


Figure 6.  Tête MMDS



La variante BT-283 intègre une antenne Yagi (gain non spécifié) au lieu d'un dipôle, mais sa plage d'entrée nominale est 2500 - 2700 MHz. Je l'ai testée pendant un passage de l'ISS au zénith et le signal était à peine détectable. Il reste à déterminer si c'est dû à l'atténuation de l'amplificateur à 2395 MHz ou au faible gain de l'antenne elle-même.


6.  Démodulation logicielle en temps réel

Les algorithmes académiques de démodulation DVB-S, implémentés par exemple dans gr-dvb, sont coûteux en puissance de calcul. J'ai écrit un démodulateur plus simple qui tourne en temps réel sur des plate-formes embarquées, en contrepartie d'une sensibilité réduite : voir [LEANDVB].

7.  Démodulateurs DVB-S sur étagère

La latence et la consommation électrique élevées d'un démodulateur logiciel sont gênantes pour certaines applications. Je me suis donc intéressé aussi aux récepteurs DVB-S dédiés. Les critères d'évaluation sont:

  • compatibilité avec les vitesses de modulation faibles (jusqu'à 1,3 Msymboles/s) ;

  • Tolérance à l'erreur en fréquence induite par les downconverters à bas coût ;

  • Comportement à faible rapport signal/bruit

  • capacité à traiter le Transport Stream de l'ISS (qui n'est pas formaté exactement comme les signaux de TV satellite grand public).

Il n'aurait pas été commode de faire des tests en direct avec le signal de l'ISS, puisque qu'il n'est disponible que pendant quelques minutes par jour. Au lieu de cela, j'ai branché les récepteurs à tester sur l'USRP équipé d'une carte RFX2400, et j'ai ré-émis un enregistrement de 4 Méch/s à 2395 MHz.

J'ai également branché en parallèle un récepteur RTL-SDR. Ceci a permis de confirmer que l'oscillateur local du downconverter 3650 MHz n'est pas très fiable.

7.1. STV6110A / STV0903B

Ces composants équippent la carte PCI TechnoTrend S2 1600, populaire dans la communauté DATV (au moins sous Windows).

Avec une programmation spécifique, cette carte peut apparemment recevoir jusqu'à 2600 MHz, ce qui doit permettre de recevoir le signal DATV de l'ISS sans downconverter avec une antenne suffisamment directive.

7.2. STB6100 / STB0899

Ces composants équippent la carte PCI TechnoTrend S2 3200, un autre récepteur populaire. Le fabricant indique qu'ils sont en fin de vie.

7.3. M88TS2022 / M88DS3103

Ces composants équippent des récepteurs USB à bas coût. J'ai testé le DVBSky S960DVBSky S960DVBSky S960DVBSky S960.

Créer iss.conf en déclarant un transpondeur virtuel à 11.255 GHz :

[ISS]
    SERVICE_ID = 2395
    VIDEO_PID = 256
    AUDIO_PID = 257
    DELIVERY_SYSTEM = DVBS
    FREQUENCY = 11255000
    SYMBOL_RATE = 2000000
    INNER_FEC = 1/2
    POLARIZATION = VERTICAL
    MODULATION = QPSK
    INVERSION = AUTO

Indiquer à dvbv5-scan que le LNB est de type "standard", ce qui correspond à un décalage de 10,000 GHz. Le récepteur va alors syntoniser sur 1255 MHz, ce qui correspond à 2395 MHz converti par le BT-480.

# dvbv5-scan  -l STANDARD  -v  -T 100  iss.conf
ERROR    command BANDWIDTH_HZ (5) not found during retrieve
ERROR    command MODULATION (4) not found during store
...
       (0x00) Signal= 100.00% C/N= 0.00% postBER= 0
       (0x00) Signal= 100.00% C/N= 0.00% postBER= 0
       (0x00) Signal= 100.00% C/N= 0.13% postBER= 0
       (0x00) Signal= 100.00% C/N= 0.11% postBER= 0
Lock   (0x1f) Signal= 100.00% C/N= 0.12% postBER= 0

Le signal est reconnu mais la détection des canaux échoue parce que le flux de l'ISS ne contient pas de Program Map Tables, contrairement aux signaux de télévision par satellite grand public.

Comme nous connaissons les PIDs, nous pouvons récupérer le Transport Stream MPEG de toute façon :

# dvbv5-zap  -l STANDARD  -c iss.conf  ISS  -r
using demux '/dev/dvb/adapter0/demux0'
reading channels from file 'iss.chan'
ERROR    command MODULATION (4) not found during store
tuning to 11255000 Hz
video pid 256
  dvb_set_pesfilter 256
audio pid 257
  dvb_set_pesfilter 257
...
       (0x00) Signal= 100.00% C/N= 0.22% postBER= 0
       (0x00) Signal= 100.00% C/N= 0.13% postBER= 0
       (0x00) Signal= 100.00% C/N= 0.15% postBER= 0
DVR interface '/dev/dvb/adapter0/dvr0' can now be opened

# hexdump -C /dev/dvb/adapter0/dvr0

8.  Pointage manuel de l'antenne

Figure 7.  Parabole portée à l'épaule

Parabole portée à l'épaule

9.  Perspectives

9.1.  Antennes faites maison

Fabriquer des antennes hélicoïdales et les comparer avec l'antenne du commerce.

9.2.  Rotors d'antenne à bas coût

Les rotors d'antennes pour radioamateurs sont chers. Ils sont souvent dimensionnés pour des charges de plus de 100 kg et pour fonctionner en toute saison.

Les antennes de TV satellite à pointage automatique prévues pour les camping-cars pourraient servir de point de départ pour construire des rotors pour petites paraboles. On trouve aussi des antennes de ce type pour les bateaux de plaisance, probablement avec des moteurs plus rapides.

Je construis une monture à fourche pour l'antenne 24 dB et j'étudie d'autres solutions.


Figure 8.  Rotor en LEGO pour satellites en orbite basse

Rotor en LEGO pour satellites en orbite basse

Rotor en LEGO avec GPS, boussole et capteur d'inclinaison, portant une antenne 14 dB de 700 grammes.



9.3.  À long terme

Un jour, on réussira peut-être à reprogrammer le processeur baseband de modules WiFi. On pourra alors regarder la TV amateur simplement en plaçant un smartphone au foyer d'un réflecteur parabolique.

10.  Remarques diverses

Les normes récentes de télévision satellite numérique, comme DVB-S2 and H.264, peuvent transmettre des flux HD. Le flux DATV de l'ISS, lui, utilise les normes DVB-S et MPEG-2 qui datent de 1995, avec un débit très faible. D'un côté, la qualité vidéo sera peut-être décevante (moins bonne que le DVD). D'un autre côté, tous les brevets concernés ont expiré ou expireront très prochainement dans la plupart des pays.

11.  Remerciements

Merci à Edmund Tse d'avoir publié le code source et la documentation de son projet DVB. Quiconque a implémenté des normes ETSI en partant de rien peut apprécier le travail que cela représente.

Tonino Giagnacovo IZ8YRR et Fabrice Bellard ont contribué à la validation de la chaîne de réception.

Bibliographie

[DVBS] Digital Video Broadcasting (DVB); Framing structure, channel coding and modulation for 11/12 GHz satellite services . 1997. ETSI. https://portal.etsi.org/webapp/WorkProgram/Report_WorkItem.asp?WKI_ID=5316.

[N6GHZ] Low Cost DVB-S Receivers Suitable For HAMTV Reception . 2013. Bill Ress. http://ww2.amsat.org/xtra/N6GHZ_HAMTV_Article.pdf.

[IZ8YRR] HamTV reception with a low gain antenna . 2014. Tonino Giagnacovo. http://www.amsat.it/HAMTV%20reception%20with%20a%20low%20gain%20antenna%20-%20IZ8YRR%2020150714.pdf.

[GRDVB] Software Radio for Digital Satellite Television . 2010. Edmund Tse. http://www.edmundtse.com/wp-content/uploads/2009/04/treatise.pdf.

[LEANDVB] leandvb : Un démodulateur DVB-S logiciel simple et rapide . http://www.pabr.org/radio/leandvb/leandvb.fr.html .

[HAMPADS] Une station de réception portative pour les satellites amateurs . http://www.pabr.org/radio/hampads/hampads.fr.html .