<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yann Klein</title>
    <description>The latest articles on DEV Community by Yann Klein (@yannklein).</description>
    <link>https://dev.to/yannklein</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1124478%2Fbd71e7d2-ba54-47ad-8529-b414e3c58d12.jpeg</url>
      <title>DEV Community: Yann Klein</title>
      <link>https://dev.to/yannklein</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yannklein"/>
    <language>en</language>
    <item>
      <title>L'antenne qui visait les étoiles</title>
      <dc:creator>Yann Klein</dc:creator>
      <pubDate>Sun, 13 Sep 2026 10:53:07 +0000</pubDate>
      <link>https://dev.to/yannklein/lantenne-qui-narretait-pas-de-grandir-5c5i</link>
      <guid>https://dev.to/yannklein/lantenne-qui-narretait-pas-de-grandir-5c5i</guid>
      <description>&lt;p&gt;&lt;a href="https://dev.to/yannklein/the-antenna-that-wouldnt-stop-growing-43jk"&gt;English version here 🇬🇧&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prologue : Ouvre la fenêtre et regarde le ciel 🌌
&lt;/h2&gt;

&lt;p&gt;En ce moment même, pendant que vous lisez ces lignes, des satellites valant plusieurs millions d'euros passent au-dessus de vos têtes. Certains d'entre eux transmettent des images de la Terre à qui veut bien les écouter. Pas seulement en interne à leur propre entreprise, ou bien à des services gouvernementaux, à &lt;em&gt;n'importe qui&lt;/em&gt;. Les images sont transmises non chiffrées, vers tout point de la Terre, sur des fréquences que tu peux capter avec environ 100 euros de matériel et un balcon qui donne sur le ciel.&lt;br&gt;
Et ils ne transmettent pas que des images de la Terre: on peut aussi capter données météo, des info sur le traffic aérien/maritime, les radios amateurs, et même des vidéos de la Station spatiale internationale 🛰️ !&lt;/p&gt;

&lt;p&gt;Quand j'ai découvert ce fait assez incroyable, j'ai senti qu'un nouvelle espace s'ouvrait à moi, comme si je pouvais vraiment atteindre les étoiles, depuis chez moi. De nouvelles aventures spatiales et de nouvelles découvertes m'attendaient, un satellite après l'autre.&lt;/p&gt;

&lt;p&gt;Ceci est une histoire de satellites (d'imagerie météo en particulier!). C'est aussi l'histoire de comment ce qui a commencé par un « et si je tentais ça », un petit challenge, s'est transformé en une station de réception distribuée sur deux pays. Une épopée impliquant un vieux MacBook ressuscité en serveur, mon père sur une échelle à Théding en France configurant un système que je suis digitalement depuis Barcelone en Espagne et, au moment où j'écris ces lignes, un satellite géostationnaire qui dérive lentement dans le ciel vers le seul point qui me permettrait de le recevoir. Et ladite épopée n'est pas terminé: cet article se termine sur un engin spatial encore en mouvement préparant la suite de l'histoire.&lt;/p&gt;

&lt;p&gt;Mais présentons les personnages de cette aventure: les satellites. &lt;br&gt;
Nous allons rencontrer deux types de satellites, et leur différence &lt;em&gt;est&lt;/em&gt; la clé de tout ce projet:&lt;/p&gt;

&lt;p&gt;La première, ce sont les &lt;strong&gt;satellites en orbite polaire&lt;/strong&gt; 🛰️. Ils volent bas, à quelques centaines de kilomètres d'altitude, et vite, du nord au sud pendant que la Terre tourne en dessous, si bien qu'ils finissent par passer partout (au-dessus de vous aussi ! 👾). Ce sont ceux que je traque dans cette histoire : en particulier, la série russe &lt;strong&gt;METEOR-M&lt;/strong&gt;, à 800 km au-dessus de nos têtes, qui émet en bande VHF autour de &lt;strong&gt;137 MHz&lt;/strong&gt;. Le hic, c'est qu'ils ne sont au-dessus de nos têtes que dix à quinze minutes à chaque fois. Ce genre de  satellite sort de l'horizon, décrit un arc au-dessus de nous, puis disparaît, et on a juste ce laps de temps pour capter tout ce qu'il raconte avant qu'il ne s'en aille. Si on le rate, on est bon pour attendre l'orbite suivante (dans 1 à 2 jours !).&lt;/p&gt;

&lt;p&gt;La deuxième famille, ce sont les satellites &lt;strong&gt;géostationnaires&lt;/strong&gt; 🌍. Ils se trouvent &lt;em&gt;incroyablement&lt;/em&gt; loin, à environ 36 000 km, sur une orbite calée si précisément qu'ils font le tour de la Terre en exactement un jour, ce qui fait que, vus du sol, ils semblent parfaitement immobiles. Fixés dans le ciel. Toujours là, toujours tournés vers la même face de la planète, en émission continue. Pas de fenêtre de dix minutes 🤩. Mais ils émettent tout là-haut en &lt;strong&gt;bande L&lt;/strong&gt; (~1,7 GHz), une tout autre type de signal. Gardez ces satellites ça en tête, la fin de cet article met en scène l'un d'eux, l'&lt;strong&gt;Elektro-L3&lt;/strong&gt;, littéralement en train de glisser jusqu'à sa nouvelle position.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/editor/yannklein/embed/01a02119-7a99-784e-aefe-2eaf94b6bed0?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapitre 1 : « Et si je pointais une antenne vers le ciel ? »
&lt;/h2&gt;

&lt;p&gt;Mon challenge étant clair, il était temps de passer à la pratique : j'ai acheté une clé USB &lt;a href="https://www.rtl-sdr.com/" rel="noopener noreferrer"&gt;RTL-SDR&lt;/a&gt; bon marché,  livrée avec une petite antenne dipôle télescopique, j'ai déployé l'antenne sur ma terrasse, je l'ai pointée, un peu au petit bonheur la chance, vers le ciel, j'ai attendu un passage de METEOR, et j'ai lancé l'enregistrement.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr2wmpu193er1436euz5t.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr2wmpu193er1436euz5t.jpg" alt="Kit de clé RTL-SDR" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Faisons un petit zoom sur cette clé USB, parce qu'elle est vraiment centrale dans ce project.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Le coin des geeks :&lt;/strong&gt; les petits récepteurs RTL-SDR sur lesquels toute la communauté d'amateur de signaux satellites s'est construite n'ont jamais été conçus pour être des radios. Ils ont commencé leur vie comme de simples &lt;strong&gt;tuners de télévision DVB-T&lt;/strong&gt;, des clés USB pour regarder la TV numérique sur son ordinateur portable. Vers 2012, des gens en train de bidouiller la puce ont réalisé qu'on pouvait contourner le décodage TV et accéder aux &lt;em&gt;échantillons radio bruts&lt;/em&gt; de l'antenne caché à l'intérieur.&lt;br&gt;
Grâce à cette découverte, une clé TV à 60 € devenait une radio digitale (SDR) polyvalente. Elle capture une tranche du spectre radio, la numérise, et envoie les données brutes à un ordinateur. Tout la partie &lt;em&gt;radio&lt;/em&gt;, la detection de fréquence, le filtrage, la démodulation, transformer une ondulation du signal en pixel, se passe en aval dans un logiciel sur un ordinateur. Dans un sens, cette clé USB est bien moins qu'une radio, elle est à peine plus qu'une antenne, et laisse la majorité du travail aux dévelopeurs.&lt;/p&gt;



&lt;p&gt;C'est un super outil, très simple et adaptable. Ce qui signifie aussi que quand ça ne marche pas, il n'y a pas de « radio » à blâmer. Dans la plupart des cas, l'erreur et logicielle... et elle vient de nous (et dans ce cas précis, moi!).&lt;/p&gt;

&lt;p&gt;Et quand j'ai commencé à l'utiliser... ça n'a pas du tout marché!&lt;/p&gt;

&lt;p&gt;Le satellite est passé, pile à l'heure prévue (j'expliquerai &lt;em&gt;pourquoi&lt;/em&gt; l'horaire est si précis dans un chapitre plus loin). J'ai enregistré le passage. J'ai lancé le décodeur. Et voilà ce qui en est sorti...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxkf3m6hybeh0o8qmorsl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxkf3m6hybeh0o8qmorsl.png" alt="Première image reçue" width="784" height="24"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vous voyez cette bande presque noire 👆? C'est l'image que j'ai obtenue. Pas même une image noire rectangulaire. Dix minutes de diffusion satellitaire au-dessus de ma tête, et j'ai capté une baguette noire 🥢 (ça, ou bien une image de Rorschach pour ordinateur?).&lt;/p&gt;

&lt;p&gt;Mais ce premier, hmm, machin noire, avait de l'importance, une fois que j'ai compris ce que je regardais. C'était le fragment du passage où le signal avait réussi, brièvement, à se hisser au-dessus du bruit radio : le moment où le satellite était au plus haut et au plus près, traversant le moins d'air et de distance possible. Partout ailleurs, quand il était bas sur l'horizon et loin, son signal ne dépassait jamais le vacarme radio de la ville, et le décodeur n'avait rien du tout, ou rien d'autre à se mettre sous la dent que du bruit statique, qu'il a fidèlement restitué en noir ⬛️. L'image n'était pas un échec total, puisqu'elle m'a aidé à diagnostiquer mon problème.&lt;/p&gt;

&lt;p&gt;Mon problème, c'était le &lt;strong&gt;signal&lt;/strong&gt; 📶. Ou plutôt son absence 🥸 : le satellite se trouve à quelques centaines de kilomètres d'altitude et émet à peine quelques watts, et le temps que ce murmure atteigne mon décodeur, il était déjà englouti dans tout le bruit radio de fond d'une ville. Le décodeur a besoin que le signal dépasse ce plancher de bruit pour reconstruire une image. Le mien y arrivait à peine, une fois, au sommet du passage, et se noyait partout ailleurs.&lt;/p&gt;

&lt;p&gt;Cette bande noire de bruit radio n'avait rien d'inspirant. Mais si la différence entre le noir et une vraie image n'était qu'une question de &lt;em&gt;qualité de signal&lt;/em&gt;, alors c'était un problème que j'étais en capacité de résoudre!&lt;/p&gt;

&lt;p&gt;Et la première solution était dans la boîte depuis le début : l'antenne ! 📡 J'avais bien branché l'antenne, mais je l'avais traitée comme un accessoire alors que c'était en réalité un &lt;em&gt;instrument&lt;/em&gt;. Une antenne dipôle n'est pas juste un bout de metal qu'on pointe vers des choses, c'est un objet paramétré finement dont la longueur est censée correspondre à la longueur d'onde qu'on cherche à capter. La mienne n'était parametrée sur rien de particulier...&lt;/p&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapitre 2 : « L'antenne : bien plus qu'un bout de metal... ! » 📡
&lt;/h2&gt;

&lt;p&gt;Il s'est avéré que l'antenne avait un &lt;a href="https://www.rtl-sdr.com/using-our-new-dipole-antenna-kit/" rel="noopener noreferrer"&gt;manuel&lt;/a&gt;. Je n'avais pas lu le manuel. Du Yann (-&amp;gt; moi) tout craché !&lt;/p&gt;

&lt;p&gt;Le dipôle fourni avec le kit RTL-SDR n'est pas figé : les tiges sont télescopiques, et la base permet de régler l'angle entre elles. Et bien les régler fait toute la différence entre une capture terrestre impeccable et rien du tout. Pour la bande 137 MHz, la recommandation est la suivante : chaque bras doit mesurer &lt;strong&gt;53,4 cm de long&lt;/strong&gt;, avec un &lt;strong&gt;angle de 120°&lt;/strong&gt; entre eux. J'ai déployé les tiges télescopiques à 53,4, réglé le V, et les images se sont immédiatement améliorées.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnqe0wk6oi84ic23nf185.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnqe0wk6oi84ic23nf185.jpg" alt="Description de l'image" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La plupart d'entre nous n'ont eu affaire qu'à des antennes de radio FM/AM 📻. Et si vous vous souvenez bien, les régler n'a jamais été très difficile. C'est dû à la force et à l'omniprésence du signal FM/AM autour de nous. Les signaux satellites sont une tout autre histoire.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Le coin des geeks :&lt;/strong&gt; ce 53,4 n'est pas un chiffre magique trouvé par tâtonnement, c'est tout simplement &lt;em&gt;137 MHz écrit en centimètres&lt;/em&gt;. Les ondes radio ont une longueur physique. À 137 MHz, chaque onde mesure environ 2,19 mètres de crête à crête (c'est la vitesse de la lumière divisée par la fréquence). Une antenne dipôle doit mesurer une demi-longueur d'onde, d'une extrémité à l'autre, donc chacun de ses deux bras doit faire un quart de longueur d'onde, soit environ 54,7 cm, raccourci légèrement à ~53,4 cm pour tenir compte du comportement réel du métal à ses extrémités (2-3 % de rabot nécessaires). Et si on veut recevoir une fréquence plus haute? Les tiges doivent être plus courte, parce que l'onde l'est aussi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm6hkjoyu8r1auqmwvsmp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm6hkjoyu8r1auqmwvsmp.png" alt="Schéma de réception du signal satellite" width="800" height="707"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;La question des dimensions s'est révélée être la partie facile. L'orientation, elle, a été la partie difficile, et j'y ai perdu des journées entières.&lt;/p&gt;

&lt;p&gt;C'est un moment de galère que je veux partager avec vous pour souligner que dans ce genre d'aventures, il y a beaucoup de frustrations, d'erreurs, d'attentes, mais que la joie du succès final en vaut la chandelle 😌. Au début, j'avais placé l'antenne en V dressé &lt;em&gt;à la verticale&lt;/em&gt;, pointes vers le ciel, avec la logique de la pointer en direction du satellite. Grossière erreur! Et la comprendre m'a pris du temps et de nombreux échanges avec mes amis IA (dédicaces à Claude et au Chat).&lt;br&gt;
Quand le satellite est juste au-dessus de nos têtes, son signal voyage verticalement vers nous, mais le champ électrique &lt;strong&gt;E&lt;/strong&gt; du signal, celui que nous allons finalement capter, est perpendiculaire à la direction du signal : dans ce cas précis, il est horizontal. En plaçant l'antenne à la verticale, &lt;strong&gt;E&lt;/strong&gt; n'a aucune action sur ladite antenne &lt;em&gt;précisément&lt;/em&gt; au moment où le satellite est vertical au-dessus de nous, au plus près, et envoie son signal le plus clair... J'avais construit une antenne précisément optimisée pour ignorer les meilleures 90 secondes de chaque passage !&lt;/p&gt;

&lt;p&gt;La correction qui a apporté le plus gros bond en qualité d'image de tout le projet était assez simple : mettre l'antenna à l'horizontale. Un dipôle horizontal à un maximum de sensibilité pile à la verticale au-dessus de lui. Après ce changement, mon antenne capté son meilleur signal précisément quand le satellite était le plus proche !&lt;/p&gt;

&lt;p&gt;L'orientation était aussi un point clé. L'antenne dipôle doit être alignée &lt;strong&gt;est-ouest&lt;/strong&gt;, pour que les zones mortes tombent à l'est et à l'ouest, là où le satellite n'est pas, et que le lobe principal couvre l'arc nord-sud qu'il parcourt.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa8ypg0uqry3zd9o4v540.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa8ypg0uqry3zd9o4v540.png" alt="Étapes du fonctionnement de l'antenne" width="800" height="884"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Le coin des geeks :&lt;/strong&gt; un satellite météo polaire ne prend pas une &lt;em&gt;photographie&lt;/em&gt;. Il construit son image ligne par ligne, comme un scanner, ou une vieille imprimante de bureau. À son bord, un miroir balaie de gauche à droite, &lt;em&gt;perpendiculairement&lt;/em&gt; à la direction de vol du satellite, peignant une fine bande est-ouest du sol en dessous. Puis le mouvement nord-sud du satellite le fait avancer d'un cran, il peint la bande suivante, puis la suivante, empilant des milliers de bandes pour former une image. L'image est &lt;em&gt;tissée&lt;/em&gt; : la largeur vient du miroir balayeur, la hauteur vient de l'orbite. Vous comprenez maintenant pourquoi ma première image était une &lt;strong&gt;bande&lt;/strong&gt; noire..!&lt;/p&gt;



&lt;p&gt;Une fois qu'on visualise l'image construite de cette façon, une conséquence en découle, propre à l'endroit où je vis. Je suis dans un « intérieur » de Barcelone, un espace encaissé par des immeubles qui rognent mon horizon au nord et au sud. On pourrait croire que ça rend juste mes images &lt;em&gt;mauvaises&lt;/em&gt; visuellement. Ce que ça fait en réalité, c'est les rendre &lt;em&gt;plus courtes&lt;/em&gt; en hauteur, tout en gardant leur &lt;em&gt;pleine largeur&lt;/em&gt;, à cause du mécanisme de balayage.&lt;/p&gt;

&lt;p&gt;Chaque ligne de balayage est-ouest est tracée par le satellite qui regarde vers le bas et vers les côtés, sur une fauchée large d'environ 2 900 km. Il se moque complètement de l'allure de mon horizon : pour que je reçoive cette ligne entière, il me suffit de capter le satellite &lt;em&gt;à cet instant précis&lt;/em&gt;, et au milieu du passage, il est haut dans le ciel, bien dégagé de tout bâtiment. Donc j'obtiens la pleine largeur, à chaque fois. Ce que les immeubles me volent, c'est le &lt;em&gt;début et la fin&lt;/em&gt; du passage, les moments où le satellite est bas sur les horizons nord et sud, caché derrière du béton avant même d'avoir dégagé ma ligne de toits. Ce sont le haut et le bas de l'image. Du coup, mes captures ressemblent à une image large : le balayage est-ouest complet du continent, mais coupé court au nord et au sud, parce que les toits de Barcelone décident de la portion de chaque passage que j'ai le droit de voir.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyx8ro9cpml3porr209iq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyx8ro9cpml3porr209iq.png" alt="Passage reçu depuis Barcelone" width="800" height="748"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ce fait a été un coup assez dur pour mon project : j'ai découvert que certaines limites été physiques, qu'on ne pouvait ni les amplifier ni les contourner en se réorientant. Cet immeuble sur mon horizon nord n'allait jamais bouger. Si je voulais un jour les tranches de ciel que Barcelone me cachait, je n'aurais pas besoin d'une meilleure antenne. J'aurais besoin d'un &lt;em&gt;ciel différent&lt;/em&gt;. (Gardez cette idée en tête, elle est à quelques pays de distance!)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🔧 Notes de construction : le dipôle en V pour capter ses premières images&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ce montage devrait vous donner une assez bonne première image de la Terre. 🌍&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dimensions :&lt;/strong&gt; chaque bras à &lt;strong&gt;53,4 cm&lt;/strong&gt; (un quart de longueur d'onde à 137 MHz), mesuré depuis le connecteur central jusqu'à la pointe. Les deux bras de longueur égale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Angle :&lt;/strong&gt; environ &lt;strong&gt;120°&lt;/strong&gt; entre les deux bras, le « V ». (Cela élargit et uniformise le diagramme de réception zénithal par rapport à un dipôle droit à 180°.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;La mettre à l'horizontale : c'est le point le plus important.&lt;/strong&gt; Posez le V bien à plat. « Pointes vers le haut » est l'erreur classique du débutant : ça dirige le trou de signal de l'antenne pile sur le satellite au zénith, c'est-à-dire au moment le plus fort du passage. À plat = sensibilité maximale au-dessus.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choisissez ensuite l'azimut :&lt;/strong&gt; les éléments alignés &lt;strong&gt;est-ouest&lt;/strong&gt;, avec un horizon dégagé.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Emplacement :&lt;/strong&gt; plus votre horizon &lt;strong&gt;nord-sud&lt;/strong&gt; est dégagé, plus vos images seront &lt;em&gt;grandes verticalement&lt;/em&gt; (voir la note sur le balayage plus haut).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Note sur la polarisation (le saviez-vous ?) :&lt;/strong&gt; la liaison descendante de METEOR est polarisée &lt;em&gt;circulairement&lt;/em&gt;, alors qu'un dipôle droit (comme notre antenne en V) est polarisé &lt;em&gt;linéairement&lt;/em&gt;. À cause de ça, on perd environ 3 dB à cause de ce décalage. Ça fonctionne quand même très bien. L'antenne la plus adaptée est une antenne &lt;strong&gt;QFH&lt;/strong&gt; (hélice quadrifilaire), qui figure sur ma liste de possibles futur projets (un peu trop chère/&lt;a href="https://www.instructables.com/Inexpensive-NOAA-APT-Ground-Station-Utilizing-the-/" rel="noopener noreferrer"&gt;compliquée à construire&lt;/a&gt; pour le moment).&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Après cette étape, l'antenne était enfin bien configurée, et les images le prouvaient. Mais le signal restait faible, faisant perdre une partie des images reçues. Et, l'antenne étant désormais bien réglée, mon hypothèse était qu'une autre partie de mon montage étouffait le signal. Ce qui nous amène au chapitre 3.&lt;/p&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapitre 3 : « Et si j'amplifiais le signal avant que le câble ne le dévore ? »
&lt;/h2&gt;

&lt;p&gt;L'antenne étant configurée, mes images étaient passées d'une bande noire à une image reconnaissable des côtes de la Méditerranée. Du progrès! Mais elles étaient loin d'être parfaites :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl5if518sucun3fkds93y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl5if518sucun3fkds93y.png" alt="Première image de la Terre" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Les bandes noires horizontales que l'on voit sont des &lt;em&gt;lignes perdues&lt;/em&gt;. Souvenez-vous, dans le chapitre précédent, que l'image est peinte ligne par ligne. Donc, une bande noire correspond à un moment où le signal est tombé sous le seuil dont le décodeur a besoin. L'image arrivait proprement pendant un moment, puis se déchirait en noir, puis se rétablissait. Des passages entiers gâchés par ces trous.&lt;/p&gt;

&lt;p&gt;Je suis donc parti à la chasse pour trouver où je perdais du signal. Et je l'ai trouvé dans le composant le moins glamour de tout le montage : le câble.&lt;/p&gt;

&lt;p&gt;Voilà ce qui se passe : il y a environ &lt;strong&gt;10 mètres de câble coaxial&lt;/strong&gt; entre mon antenne et la clé USB de décodage radio RTL-SDR. J'avais commencé avec 5 mètres, puis j'ai hissé l'antenne du sol de ma terrasse jusqu'à ma pergola pour dégager plus de ciel (des images plus hautes, exactement comme promis au chapitre précédent), ce qui a coûté 5 mètres de plus. 10 mètres, c'est &lt;em&gt;beaucoup&lt;/em&gt; de câble à faire traverser à un signal déjà faible, et un câble coaxial n'est pas un supraconducteur, loin de là. Chaque mètre &lt;em&gt;atténue&lt;/em&gt; un peu le signal, grignotant ce signal ténu qui avait déjà traversé 800 km. Ça, c'est déjà gênant, mais supportable. Le vrai problème est plus subtil, et c'est le cœur de tout ce chapitre :&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Le coin des geeks :&lt;/strong&gt; dans une chaîne de réception, &lt;em&gt;l'ordre de vos composants détermine votre plancher de bruit&lt;/em&gt;, et la toute première chose que touche le signal compte plus que tout le reste combiné. C'est une vraie loi, qui porte un nom (la formule de Friis pour le bruit en cascade), et en version courte : chaque étage ajoute un peu de son propre bruit, mais la contribution de chaque étage est divisée par tout le gain qui le précède. Donc le premier composant apporte tout son bruit, le deuxième apporte son bruit réduit par le gain du premier étage, le troisième encore plus réduit. Placez un bon amplificateur &lt;em&gt;en premier&lt;/em&gt;, avec un vrai gain, et il noie mathématiquement le bruit de tout ce qui suit, y compris une clé RTL-SDR bon marché et électriquement bruyante !&lt;/p&gt;



&lt;p&gt;Voici le piège dans lequel j'étais tombé: la perte électrique d'un câble n'est &lt;em&gt;pas seulement&lt;/em&gt; une perte, &lt;strong&gt;la perte, c'est du bruit.&lt;/strong&gt; Un câble avec pertes placé au début de votre chaîne se comporte comme un très mauvais premier étage, en installant un plancher de bruit que rien en aval ne pourra jamais défaire. Donc la question n'est pas « comment amplifier le signal faible ? » mais plutôt « &lt;em&gt;où&lt;/em&gt; l'amplifier ? ».&lt;/p&gt;

&lt;p&gt;Si vous placez l'amplificateur à la fin du cable, près de la radio RTL-SDR, vous avez déjà perdu! Le signal a d'abord traversé tout ce câble avec pertes, il arrive dégradé, et &lt;em&gt;ensuite&lt;/em&gt; vous l'amplifiez... ce que vous amplifiez, c'est le signal ET le bruit du câble ensemble. Vous avez transformer un brouhaha en brouhaha plus fort 🥲. Si au contraire vous placez l'amplificateur juste à l'antenne, &lt;em&gt;avant&lt;/em&gt; le câble, il amplifie le notre petit signal radio dès le départ, et &lt;em&gt;ensuite&lt;/em&gt; seulement envoie ce signal désormais robuste dans le câble coaxial. Le câble prend toujours sa part, mais c'est la part d'un signal fort. Même câble. Même amplificateur. Résultat opposé, décidé entièrement par l'extrémité à laquelle vous le boulonnez. Et avec 10 mètres de câble, se tromper sur ce choix aurait été fatale.&lt;/p&gt;

&lt;p&gt;Le composant qui fait le travail d'amplification est appelé un &lt;strong&gt;amplificateur faible bruit&lt;/strong&gt;, ou &lt;strong&gt;LNA&lt;/strong&gt; en abrégé (Low Noise Amplifier), et celui que j'ai acheté est un &lt;a href="https://www.nooelec.com/store/sawbird-plus-noaa.html" rel="noopener noreferrer"&gt;Nooelec &lt;strong&gt;SAWbird+ NOAA&lt;/strong&gt;&lt;/a&gt;, conçu spécifiquement pour cette bande météo d'environ 137 MHz. Il fait deux boulots à la fois. Il amplifie, en premier dans la chaîne, au niveau de l'antenne. Et la partie « SAW » est un &lt;strong&gt;filtre à ondes acoustiques de surface&lt;/strong&gt;, une petite porte passe-bande qui ne laisse passer qu'environ 137 MHz et rejette le reste.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Le coin des geeks :&lt;/strong&gt; ce filtrage est plus important qu'il n'y paraît, parce qu'un amplificateur &lt;em&gt;amplifie tout, ABSOLUMENT TOUT !&lt;/em&gt;, y compris les signaux forts dont vous ne voulez pas. Les villes regorgent d'émetteurs puissants juste au-dessus de la bande FM : radio professionnelle, contrôle du trafic aérien, balises de navigation, etc. Si vous laissez tout ça frapper un amplificateur grand ouvert, les signaux les plus forts peuvent le saturer et le &lt;em&gt;désensibiliser&lt;/em&gt; au signal faible qui vous intéresse vraiment. Le filtre SAW claque la porte au bruit hors bande &lt;em&gt;avant&lt;/em&gt; qu'il n'atteigne l'étage d'amplification, si bien que tout ce précieux gain est dépensé sur votre signal à 137 MHz, et rien d'autre.&lt;/p&gt;

&lt;p&gt;Note que ça signifie aussi que vous ne pourrez pas capter de signaux hors 137 MHz avec ce LNA ; si le trafic aérien ou d'autres signaux de la ville vous intéressent, il vous faudra une antenne séparée.&lt;/p&gt;



&lt;p&gt;J'ai monté le SAWbird directement au point d'alimentation de l'antenne. Il a besoin d'être alimenté, et la clé RTL-SDR Blog vient à la rescousse : elle peut envoyer une petite tension continue &lt;em&gt;vers le haut&lt;/em&gt;, dans le même câble coaxial qui fait descendre le signal (c'est ce qu'on appelle un &lt;strong&gt;bias tee&lt;/strong&gt;), si bien que l'amplificateur puise son énergie dans le câble même qu'il alimente 😻. Une option en plus dans la ligne de commande qui lance le décodage sur mon ordinateur, et le LNA sur la terrasse s'allume.&lt;/p&gt;

&lt;p&gt;Et les bandes noires se sont refermées ✨.&lt;/p&gt;

&lt;p&gt;Pas entièrement, pas sur tous les passages marginaux, mais la différence a vraiment été notable. Les passages qui se déchiraient auparavant en bandes arrivaient maintenant entiers, de haut en bas. Les images sont passées de « reconnaissables mais abîmées » à « presque toujours complètes ».&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjz7fyc8mq2z4ra0xkdmx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjz7fyc8mq2z4ra0xkdmx.png" alt="Première image complète de la Terre" width="800" height="653"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🔧 Notes de construction : bien ajouter un LNA&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Quoi acheter :&lt;/strong&gt; un &lt;a href="https://www.nooelec.com/store/sdr/sdr-addons/sawbird/sawbird-plus-noaa-308.html" rel="noopener noreferrer"&gt;&lt;strong&gt;Nooelec SAWbird+ NOAA&lt;/strong&gt;&lt;/a&gt; (~50 €), un LNA avec un filtre passe-bande SAW intégré, centré sur la bande météo 137 MHz. Il existe des variantes de SAWbird pour d'autres bandes, prenez bien la version &lt;em&gt;NOAA&lt;/em&gt; pour METEOR/NOAA en VHF. (Cible différente, filtre différent : un montage GOES/bande L a besoin d'un SAWbird complètement différent, on y reviendra bien plus tard.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;La seule règle qui compte :&lt;/strong&gt; montez-le &lt;strong&gt;au point d'alimentation de l'antenne&lt;/strong&gt;, pas près du récepteur. Un LNA côté radio lutte contre une perte de câble déjà survenue, un LNA côté antenne fixe un plancher de bruit bas &lt;em&gt;avant&lt;/em&gt; le câble.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;La longueur de câble fait partie de l'équation :&lt;/strong&gt; je fais courir 10 m de câble coaxial d'une antenne montée sur la pergola jusqu'à la clé RTL-SDR. Plus la ligne est longue, plus la règle « LNA à l'antenne » compte : 10 m de perte &lt;em&gt;avant&lt;/em&gt; l'amplificateur auraient fixé un plancher de bruit que rien en aval n'aurait pu corriger.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;L'alimenter :&lt;/strong&gt; activez le &lt;strong&gt;bias tee&lt;/strong&gt; sur une clé RTL-SDR Blog pour envoyer du courant continu dans le câble jusqu'au LNA (pas besoin de câble d'alimentation séparé jusqu'au toit). Dans SatDump/&lt;code&gt;rtl_sdr&lt;/code&gt;, c'est une option/un bouton bias-tee ; &lt;strong&gt;rappelez-vous de le désactiver&lt;/strong&gt; quand vous utilisez la clé pour autre chose. Quand c'est activé, vous devez voir un voyant vert sur votre LNA.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pourquoi le filtre SAW justifie son prix :&lt;/strong&gt; un LNA non filtré amplifie &lt;em&gt;tout&lt;/em&gt;, et un émetteur fort à proximité, hors bande, peut le saturer et le désensibiliser à votre signal faible. Le filtre rejette les déchets avant l'étage de gain. Dans un coin rural tranquille, vous pourriez vous en passer, en ville, non ! Note que le filtre fonctionne même quand le LNA n'est pas alimenté. Pour capter des signaux hors 137 MHz depuis la même antenne, il vous faudra le débrancher physiquement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ordre du montage complet, de bout en bout :&lt;/strong&gt; antenne → &lt;strong&gt;SAWbird (LNA + filtre)&lt;/strong&gt; → câble coaxial → clé.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Après cette étape, j'avais une antenne bien conçue, orientée pour mon ciel, avec un amplificateur faible bruit qui amplifiait le signal avant que le câble ne puisse le gâcher. Pour la première fois, capter un bon passage de METEOR paraissait &lt;em&gt;fiable&lt;/em&gt; plutôt que dépendant de la chance.&lt;/p&gt;

&lt;p&gt;Ce qui, bien sûr, est exactement le moment où un nouveau genre d'insatisfaction apparût! Parce que maintenant je captais les passages de façon fiable... en restant debout devant mon ordinateur, à la bonne minute, en lançant manuellement un enregistrement, puis en lançant manuellement le décodeur, puis en sauvegardant manuellement l'image. Le goulot d'étranglement n'était plus la radio. &lt;strong&gt;Le goulot d'étranglement, c'était moi, pauvre être humain qui avait d'autres choses à faire que d'activer une antenne.&lt;/strong&gt;&lt;/p&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapitre 4 : « Et si un ordinateur faisait tout ça pendant que je dors ? »
&lt;/h2&gt;

&lt;p&gt;Il y a une fatigue bien particulière qui vient du fait d'être la partie la plus lente de son propre système 🥲. Je pouvais désormais capter un bon passage, mais seulement en étant physiquement présent à la bonne minute, en démarrant l'enregistrement à la main, en attendant dix minutes, en lançant le décodeur, en sauvegardant l'image, et en recommençant pour le satellite suivant le lendemain. La radio fonctionnait. Le goulot d'étranglement avait un nom, c'était &lt;a href="https://yannklein.dev/" rel="noopener noreferrer"&gt;Yann&lt;/a&gt; (ouais, c'est moi !).&lt;/p&gt;

&lt;p&gt;J'ai donc décidé de me retirer de la boucle. Et la machine que j'ai choisie pour me remplacer était de celles que la plupart des gens auraient jetées : &lt;strong&gt;un vieux MacBook&lt;/strong&gt;, largement passé de mode, plus digne de confiance pour rien qui nécessite qu'un humain s'assoie devant. Je l'ai réinitialisé, j'y ai installé &lt;a href="https://www.debian.org/" rel="noopener noreferrer"&gt;Debian&lt;/a&gt;, et je l'ai exilé dans une pièce de rangement pour qu'il vive sa seconde vie de serveur.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn8123c9ez3bmmrgnyl13.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn8123c9ez3bmmrgnyl13.jpg" alt="Description de l'image" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Le coin des geeks :&lt;/strong&gt; un ordinateur portable, surtout un vieil ordinateur, a fortiori avec un disque SSD, est en secret un &lt;em&gt;excellent&lt;/em&gt; serveur maison, et il en dort un dans la moitié des tiroirs du monde. Réfléchissez à ce qu'il a qu'un Raspberry Pi ou une VM dans le cloud n'a pas :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;un &lt;strong&gt;onduleur intégré&lt;/strong&gt; : la batterie encaisse les coupures et micro-coupures de courant qui, sinon, redémarreraient la machine en plein milieu d'un passage satellite&lt;/li&gt;
&lt;li&gt;un &lt;strong&gt;écran et un clavier intégrés&lt;/strong&gt;, en permanence disponibles pour exactement le moment où le SSH plante et où vous devez voir ce qui cloche&lt;/li&gt;
&lt;li&gt;des &lt;strong&gt;cartes Wi-Fi et Bluetooth intégrées&lt;/strong&gt;, assurant toute la connectivité dont un serveur maison a besoin.
C'est un ordinateur tout-en-un, auto-alimenté, avec son propre écran, et plutôt portable en plus ! On a juste appris à les voir comme jetables dès qu'ils ne peuvent plus faire tourner le dernier OS 💻💔.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le cerveau de l'opération, c'est &lt;a href="https://n8n.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;n8n&lt;/strong&gt;&lt;/a&gt; : un outil d'automatisation de workflows très populaire et open source, qui permet de connecter différents services dans une seule et même application (par exemple, connecter Slack à Claude AI et à l'API LinkedIn pour générer et publier automatiquement des posts LinkedIn).&lt;/p&gt;


&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyk35zndtd75faiavnnc2.png" width="799" height="145"&gt;Mon flux de planification des passages
  
&lt;br&gt;



&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff8pxbbk27fty5vqyn339.png" width="799" height="240"&gt;Mon flux de capture d'images
  
&lt;br&gt;


&lt;p&gt;n8n est l'orchestrateur de ma « station de réception satellite » : il calcule quand aura lieu le prochain passage, allume la radio RTL-SDR, enregistre le signal, le décode, traite l'image, et dépose le résultat dans la galerie publique. Tout cela via un planificateur, sans surveillance, pendant que je sirote ma Vodka Martini, sans alcool bien sûr 🙄🍸.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Le coin des geeks :&lt;/strong&gt; vous pouvez savoir &lt;em&gt;exactement&lt;/em&gt; quand un satellite va passer au-dessus de chez vous, plusieurs jours à l'avance, à la seconde près : leurs orbites sont déterministes. Leur trajectoire est publiée sous forme de &lt;strong&gt;TLE&lt;/strong&gt; (« Two-Line Element », un jeu de deux lignes), un enregistrement texte laconique d'environ 140 caractères décrivant la forme et l'orientation de l'orbite à un instant connu. Donnez ce TLE et vos coordonnées à un programme bien codé et il vous prédit que le satellite apparaîtra au-dessus de votre horizon à, disons, 14h 03 min 27 s demain, montera jusqu'à 71° d'élévation, et se couchera à 14h16.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7h0yvcw8eqcjqs7m0qu4.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7h0yvcw8eqcjqs7m0qu4.jpeg" alt="Explication du TLE" width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Je n'ai pas fait le calcul moi-même. Je fais plutôt une requête à l'&lt;a href="https://www.n2yo.com/satellite/?s=59051" rel="noopener noreferrer"&gt;API N2YO&lt;/a&gt;. En plus de la position du satellite, je calcule aussi le lever/coucher du soleil grâce à l'&lt;a href="https://api.sunrise-sunset.org" rel="noopener noreferrer"&gt;API Sunrise-Sunset&lt;/a&gt; : la caméra du satellite METEOR est trop faible pour détecter la moindre lumière nocturne venant de la Terre, les images capturées après le crépuscule sont pratiquement noires ⬛️.&lt;/p&gt;

&lt;p&gt;Quand le satellite est juste au-dessus de mon antenne et que le soleil brille, n8n exécute ceci :&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Enregistrer le passage en bande de base brute&lt;/span&gt;
rtl_sdr &lt;span class="nt"&gt;-f&lt;/span&gt; 137900000 &lt;span class="nt"&gt;-s&lt;/span&gt; 2400000 &lt;span class="nt"&gt;-g&lt;/span&gt; 20 ~/satellite-images/meteor_&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%H%M&lt;span class="si"&gt;)&lt;/span&gt;.raw
&lt;span class="c"&gt;# 2. Décoder les échantillons bruts en image&lt;/span&gt;
./satdump pipeline meteor_m2-x_lrpt baseband &lt;span class="se"&gt;\&lt;/span&gt;
  meteor_HHMM.raw decoded_HHMM &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--samplerate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2400000 &lt;span class="nt"&gt;--baseband_format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;cu8
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Le décodeur, c'est &lt;a href="https://www.satdump.org/" rel="noopener noreferrer"&gt;&lt;strong&gt;SatDump&lt;/strong&gt;&lt;/a&gt;, le couteau suisse de la réception d'images satellite. Il transforme des échantillons radio bruts en images jpg de la Terre.&lt;/p&gt;

&lt;p&gt;La dernière étape à construire, c'était la publication. Les images décodées avaient besoin d'un chez-elles sur Internet, et j'ai choisi &lt;a href="https://coolify.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;Coolify&lt;/strong&gt;&lt;/a&gt; pour déployer facilement une page web de galerie d'images satellite. C'est un peu comme un Heroku ou un Vercel mais auto-hébergé sur mon MacBook. Il gère l'hébergement de mes sites (via des conteneurs Docker), me donne des tableaux de bord et des déploiements façon git-push, et transforme mon vieux MacBook Pro 2011 en ma propre petite plateforme cloud ☁️ 💻 ☁️.&lt;/p&gt;

&lt;p&gt;La page de galerie elle-même est un simple conteneur nginx qui "serve" les images sur une page index.html. Elle est en ligne sur &lt;strong&gt;satellite.yannklein.dev&lt;/strong&gt;, accessible depuis n'importe où dans le monde, malgré le fait que le MacBook soit sur une connexion domestique sans IP fixe, grâce à un tunnel Cloudflare. (&lt;em&gt;Comment&lt;/em&gt; ce tunnel fonctionne sans IP fixe et sans port ouvert est assez intéressant, mais je garde ça pour le chapitre où il fait quelque chose de bien plus impressionnant : atteindre des signaux au-delà des frontières nationales.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3smaeqbsnp8lftbmwfoe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3smaeqbsnp8lftbmwfoe.png" alt="Flux du site satellite vers le web" width="799" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pour la première fois, tout le système tournait sans moi. Je me réveillais, je regardais mon téléphone, et il y avait une image fraîche de la Méditerranée qu'un vieux MacBook avait captée, décodée, et publiée pendant que j'étais absent.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🔧 Notes de construction : automatiser la boucle capture→décodage→publication&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Les parties de base (enregistrement + décodage) sont des commandes réelles, copiables-collables. La partie orchestration est décrite pour que vous puissiez en reconstruire la &lt;em&gt;forme&lt;/em&gt;. J'ai publié mes vrais flux et configs n8n dans &lt;a href="https://github.com/yannklein/satellite-images/tree/7ba07e5768031c2b9676b5641764856818b025be/docs" rel="noopener noreferrer"&gt;ce dossier du dépôt&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enregistrer un passage&lt;/strong&gt; (bande de base brute, l'entrée de tout le reste) :&lt;/li&gt;
&lt;/ul&gt;


&lt;pre class="highlight shell"&gt;&lt;code&gt;  rtl_sdr &lt;span class="nt"&gt;-f&lt;/span&gt; 137900000 &lt;span class="nt"&gt;-s&lt;/span&gt; 2400000 &lt;span class="nt"&gt;-g&lt;/span&gt; 20 ~/satellite-images/meteor_&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%H%M&lt;span class="si"&gt;)&lt;/span&gt;.raw
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;code&gt;-f 137900000&lt;/code&gt; = 137,9 MHz. Pour &lt;strong&gt;M2-3 et M2-4, 137,9 est la fréquence principale&lt;/strong&gt;. (Le gain &lt;code&gt;-g 20&lt;/code&gt; fonctionne bien une fois que le SAWbird soulève le signal ; avec un LNA puissant en amont, vous ne voulez souvent &lt;em&gt;pas&lt;/em&gt; du gain max, qui peut saturer la clé.)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Le décoder&lt;/strong&gt; avec le pipeline METEOR LRPT de SatDump :&lt;/li&gt;
&lt;/ul&gt;


&lt;pre class="highlight shell"&gt;&lt;code&gt;  ./satdump pipeline meteor_m2-x_lrpt baseband IN.raw OUT_DIR &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--samplerate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2400000 &lt;span class="nt"&gt;--baseband_format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;cu8 &lt;span class="nt"&gt;--fill_missing&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;code&gt;--fill_missing&lt;/code&gt; interpole les lignes manquantes pour que le rare trou de signal restant soit rattrapé plutôt que laissé en bande noire, une jolie finition par-dessus le travail du SAWbird du Chapitre 3.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Le bug qui m'a coûté une soirée :&lt;/strong&gt; si SatDump signale &lt;em&gt;aucun décodeur/plugin&lt;/em&gt;, c'est que vous le lancez depuis le mauvais endroit ; lancez-le depuis son propre dossier &lt;code&gt;build/&lt;/code&gt;, pas depuis une installation système.&lt;/li&gt;
&lt;li&gt;dans mon cas, &lt;strong&gt;SatDump est compilé depuis les sources&lt;/strong&gt; (il existe &lt;a href="https://www.satdump.org/download.htm" rel="noopener noreferrer"&gt;différentes façons de l'installer&lt;/a&gt;). Il compile et tourne très bien sur du matériel ancien et peu puissant, ne laisse donc pas un vieil ordinateur portable vous arrêter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prédire les passages :&lt;/strong&gt; les orbites sont déterministes, utilise l'&lt;a href="https://www.n2yo.com/api/" rel="noopener noreferrer"&gt;API N2YO&lt;/a&gt; pour planifier les captures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quand l'image est vide et que ce n'est &lt;em&gt;pas&lt;/em&gt; de votre faute :&lt;/strong&gt; METEOR-M2-3 a une antenne partiellement non déployée 😅, son signal est faible et intermittent. Vérifie l'état du satellite (la communauté &lt;a href="https://www.facebook.com/groups/Satellite.apt.group" rel="noopener noreferrer"&gt;APT Group&lt;/a&gt; rapporte en direct la qualité des passages) avant de blâmer votre montage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le stack, en résumé :&lt;/strong&gt; vieux portable → Debian → &lt;strong&gt;n8n&lt;/strong&gt; (orchestration) → &lt;strong&gt;SatDump&lt;/strong&gt; (décodage) → &lt;strong&gt;Coolify&lt;/strong&gt; (PaaS auto-hébergé gérant Docker) → conteneur &lt;strong&gt;nginx&lt;/strong&gt; (la galerie) → &lt;strong&gt;tunnel Cloudflare&lt;/strong&gt; (accès public, sans IP fixe). Chaque brique est gratuite et open source.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Quel voyage épique depuis mes premiers essais de capture d'images terrestres ! J'avais construit une machine qui captait le ciel à ma place et publiait les résultats en ligne. Mais les images qu'elle publiait étaient encore brutes, grises, et, j'allais bientôt le découvrir que certaines étaient à l'envers et inversées.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwy75zg1vxqkkkmm6zjaq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwy75zg1vxqkkkmm6zjaq.png" alt="Première image en niveaux de gris de la Terre" width="800" height="653"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapitre 5 : « Et si ces scans gris devenaient de vraies cartes en couleur ? »
&lt;/h2&gt;

&lt;p&gt;Mon vieux MacBook captait désormais les passages et les publiait sans moi. Il ne restait qu'un problème avec les images publiées : elles étaient grises et déformées. C'était encore de la sortie brute d'un scanner en orbite. Quid des magnifiques cartes en couleur que j'avais vues d'autres personnes publier, des cartes avec des côtes nettes, des villes étiquetées ? Ce genre de carte demandait trois étapes de plus :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Étape un : la couleur.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Un satellite METEOR ne « voit » pas en couleur comme votre œil. Son scanner, le MSU-MR, observe la Terre dans plusieurs &lt;strong&gt;bandes spectrales&lt;/strong&gt; séparées, en même temps. Il produit 3 photos en noir et blanc simultanées, chacune prise à travers un filtre différent : une en lumière visible, une en proche infrarouge, une en infrarouge à ondes courtes. Chacune n'est qu'une grille de valeurs de luminosité.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8176ov8t4ylztq1p34tr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8176ov8t4ylztq1p34tr.png" alt="Spectre lumineux reçu par le MSU-MR" width="800" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5fzpnjp07j5695z7oumf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5fzpnjp07j5695z7oumf.png" alt="Trois images fréquentielles de la Terre" width="800" height="155"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pour fabriquer une image couleur, vous assignez trois de ces bandes aux canaux rouge, vert et bleu d'une image et vous les laissez se mélanger. C'est un &lt;strong&gt;composite en fausses couleurs&lt;/strong&gt;. « Fausses » parce que les couleurs ne sont pas ce que votre œil verrait, c'est un mappage choisi pour faire ressortir certaines caractéristiques.&lt;/p&gt;

&lt;p&gt;J'utilise 3 recettes de SatDump pour produire des images en fausses couleurs qui mettent en évidence des éléments intéressants :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fswdhv673kq0d71ed6bwd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fswdhv673kq0d71ed6bwd.png" alt="Trois images en fausses couleurs de la Terre" width="800" height="155"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fausses couleurs AVHRR 221&lt;/strong&gt; (Rouge = Ch.2, Vert = Ch.2, Bleu = Ch.1) : une vue générale en fausses couleurs construite à partir des deux canaux réflectifs ; mon réglage habituel pour le contraste terre/végétation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fausses couleurs AVHRR 3a21&lt;/strong&gt; (Rouge = Ch.3a/SWIR, Vert = Ch.2/proche IR, Bleu = Ch.1/visible) : le canal infrarouge à ondes courtes est sensible à la chaleur intense et aux terrains calcinés, donc c'est celui où les feux actifs et les cicatrices de brûlure ressortent en rouge/orange vif contre le reste de la scène.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MSA&lt;/strong&gt; : une amélioration dédiée à la détection de points chauds plutôt qu'un simple réarrangement RVB ; elle signale directement les anomalies thermiques, ce qui permet de faire ressortir les feux plus faibles ou plus petits que les composites en fausses couleurs peuvent manquer.

&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa6go5d035xijl9c7sooj.png" width="799" height="315"&gt;Incendies et fumée en Espagne - 26 juillet 2026


---&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🤓 &lt;strong&gt;Le coin des geeks :&lt;/strong&gt; sur ces images, vous pouvez distinguer un &lt;em&gt;nuage&lt;/em&gt; d'un &lt;em&gt;panache de fumée&lt;/em&gt;, et l'astuce, c'est la taille des particules ! Les nuages sont faits de gouttelettes d'eau et de glace relativement grosses, et les grosses gouttelettes diffusent &lt;em&gt;toutes&lt;/em&gt; les longueurs d'onde de lumière plus ou moins également (visible, proche infrarouge, infrarouge à ondes courtes). Être lumineux dans les trois canaux signifie du rouge + vert + bleu vifs, ce qui se mélange en &lt;strong&gt;blanc&lt;/strong&gt;. La fumée, c'est l'inverse : elle est faite de particules &lt;em&gt;minuscules&lt;/em&gt;, et les minuscules particules diffusent préférentiellement seulement les longueurs d'onde les &lt;em&gt;plus courtes&lt;/em&gt;, en laissant passer les plus longues. Donc la fumée est lumineuse dans la bande visible mais presque &lt;em&gt;transparente&lt;/em&gt; en infrarouge proche et en infrarouge à ondes courtes. Dans cette recette, la bande visible est câblée sur le Bleu, donc la fumée illumine le canal bleu et presque rien d'autre, et ressort dans un &lt;strong&gt;bleu&lt;/strong&gt; distinct et fantomatique, contre les nuages blancs autour d'elle.&lt;/p&gt;

&lt;p&gt;Et l'&lt;em&gt;empreinte&lt;/em&gt; de l'incendie apparaît aussi, par la logique inverse : la végétation en bonne santé est intensément lumineuse en proche infrarouge (c'est le canal Vert ici, ce qui explique pourquoi l'Espagne brille en jaune-vert), donc une &lt;strong&gt;cicatrice de brûlure&lt;/strong&gt;, là où la végétation a brûlé, devient sombre et ressort nettement contre le vert du terrain environnant. Dans une seule image, vous pouvez voir à la fois la cicatrice de l'incendie &lt;em&gt;et&lt;/em&gt; sa fumée, grâce aux différentes façons dont la matière interagit avec différentes longueurs d'onde de lumière.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Étape deux : la projection.&lt;/strong&gt; Maintenant les images étaient colorées mais toujours &lt;em&gt;mal formées&lt;/em&gt;.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Le coin des geeks :&lt;/strong&gt; un scan satellite brut est fortement déformé, et la déformation est pire sur les bords. Le scanner balaie un immense arc, large de près de 3 000 km, et près des extrémités de chaque balayage, il regarde la Terre selon un angle rasant, si bien que chaque pixel étale bien plus de terrain qu'un pixel pris à la verticale. L'image brute est en « perspective satellite », pas dans la perspective habituelle d'une « carte du monde ».&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg7xtcs6kjnai2okneev9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg7xtcs6kjnai2okneev9.png" alt="Image satellite mettant en avant la distorsion périphérique" width="799" height="473"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;La &lt;strong&gt;projection&lt;/strong&gt; (ou géoréférencement) corrige ça. On connaît l'orbite exacte du satellite et son orientation pour chaque ligne de balayage, donc on peut calculer la vraie latitude et longitude que &lt;em&gt;chaque pixel&lt;/em&gt; observe, et redessiner toute l'image déformée sur une vraie grille cartographique. Après traitement, la côte déformée s'aligne sur la vraie côte à laquelle on est tous habitués. C'est l'une des améliorations les plus satisfaisantes du projet. (Côté technique, l'image brute d'un canal fait environ 1568 px de large, le composite corrigé est étiré à ~2800 px pour défaire la distorsion panoramique, soit environ 1,79× de correction horizontale.)&lt;br&gt;
Une fois que chaque pixel a une coordonnée réelle, une jolie chose devient possible : on peut y ajouter des étiquettes.&lt;/p&gt;

&lt;p&gt;J'ai écrit 2 petits scripts :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;compute_barcelona_px.py&lt;/code&gt; : fait l'inverse de la projection : étant donné la latitude et la longitude d'un lieu, il calcule &lt;em&gt;quel pixel&lt;/em&gt; correspond à ce lieu.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;add_map_overlay.py&lt;/code&gt; : l'utilise pour placer des marqueurs de villes exactement où ils doivent être : Barcelone sur son cap, Madrid dans les terres, Marseille, Rome et Alger chacune épinglée au bon point. La carte a cessé d'être une jolie image pour devenir une image &lt;em&gt;référencée&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Étape trois : le retournement&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Environ la moitié de mes images ressortaient &lt;strong&gt;à l'envers et inversées en miroir.&lt;/strong&gt; J'ai passé une soirée convaincu que quelque chose était cassé dans mon traitement. Mais j'ai vite compris que ce n'était pas le cas... !&lt;br&gt;
Souvenez-vous qu'un satellite polaire peint son image ligne par ligne pendant son vol, et qu'il peut traverser mon ciel dans l'une de deux directions : parfois il se dirige vers le sud (un passage « nord-sud »), parfois vers le nord. Quand il vole dans la direction opposée, il peint l'image &lt;em&gt;dans le sens opposé&lt;/em&gt;, et comme il regarde aussi de l'autre côté, la gauche et la droite s'inversent aussi.&lt;/p&gt;

&lt;p&gt;Le correctif, une fois compris, était presque trivial : déterminer dans quelle direction le satellite voyageait et retourner les images qui doivent l'être. Vous pouvez lire la direction directement dans la géométrie du passage fournie par l'&lt;a href="https://api.n2yo.com/" rel="noopener noreferrer"&gt;API N2YO&lt;/a&gt;, l'azimut auquel le satellite se lève, et retourner ces images de 180°.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Un détail clé : je fais tourner deux SatDump.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SatDump est un projet formidable qui évolue vite, ce qui signifie parfois qu'une fonctionnalité dont vous dépendez n'est pas ou seulement partiellement disponible dans la version que vous utilisez. Mon décodeur principal, c'est la toute dernière version de SatDump, et elle est si récente que l'équipe de développement n'a pas encore eu le temps d'y ajouter la projection cartographique et la correction géographique. Donc, pour obtenir des cartes correctement projetées, j'ai installé une seconde version, plus ancienne (&lt;strong&gt;v1.2.2&lt;/strong&gt;), à côté, réservée uniquement à l'étape de projection. Pas le flux de traitement d'image le plus propre, mais il a l'avantage de fonctionner pour l'instant 😬&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Et puis, la récompense.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Avec la couleur, la projection et les étiquettes de villes qui fonctionnaient toutes, je pouvais enfin faire ce que je voulais secrètement depuis la première image noire : les empiler. J'ai construit un petit visualiseur (assisté par IA, j'y reviendrai plus tard sur cette façon de travailler) qui prend chaque passage d'une journée, les projette tous sur la &lt;em&gt;même&lt;/em&gt; carte centrée sur Barcelone, et les joue en fondu enchaîné sous forme de &lt;strong&gt;timelapse&lt;/strong&gt;. Cinquante-deux passages, la météo de toute une journée qui s'écoule sur une carte fixe de mon coin du monde, les villes restant immobiles pendant que les nuages se déplacent au-dessus d'elles.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/QJdPIwKNX7w" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🔧 Notes de construction : du scan gris à la carte étiquetée&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fausses couleurs :&lt;/strong&gt; dans SatDump, le composite &lt;code&gt;321&lt;/code&gt; / &lt;code&gt;3a21&lt;/code&gt; fait correspondre &lt;strong&gt;ch3 (SWIR)→Rouge, ch2 (proche IR)→Vert, ch1 (visible)→Bleu&lt;/strong&gt;. Très efficace pour séparer la végétation (vert), les nuages (blanc/cyan), la fumée (bleu), et les cicatrices de brûlure (sombre). Les composites sont définis dans &lt;code&gt;satdump_cfg.json&lt;/code&gt;, sous les &lt;code&gt;rgb_composites&lt;/code&gt; de l'instrument, chacun avec une &lt;code&gt;equation&lt;/code&gt; du type &lt;code&gt;"ch3, ch2, ch1"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Projection :&lt;/strong&gt; activez &lt;code&gt;geo_correct&lt;/code&gt; et &lt;code&gt;project&lt;/code&gt; (avec &lt;code&gt;draw_map: true&lt;/code&gt;) dans la config du composite pour que SatDump projette la fauchée brute sur une vraie grille cartographique et dessine les côtes. Le géoréférencement est ce qui rend possibles les étiquettes et l'empilement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le retournement à 180° :&lt;/strong&gt; si la moitié de vos passages arrive à l'envers et en miroir, c'est la &lt;strong&gt;direction du passage&lt;/strong&gt; (ascendant ou descendant). Je détecte la direction à partir de l'azimut de lever (&lt;code&gt;startAz&lt;/code&gt; entre 90 et 270° = &lt;code&gt;NtoS&lt;/code&gt;) et je la stocke dans un champ &lt;code&gt;direction&lt;/code&gt;, dans le &lt;code&gt;meta.json&lt;/code&gt; de chaque passage et dans &lt;code&gt;passes.json&lt;/code&gt;. Je corrige ensuite ça à deux endroits : l'étape de traitement fait pivoter les images du canal &lt;code&gt;NtoS&lt;/code&gt; de 180° côté serveur avec ImageMagick (&lt;code&gt;convert "$f" -rotate 180 "$f"&lt;/code&gt;), et la galerie retourne aussi les images &lt;code&gt;NtoS&lt;/code&gt; à l'affichage avec du CSS &lt;code&gt;transform: scale(-1,-1)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Étiquettes :&lt;/strong&gt; une fois projeté, chaque pixel a un lat/lon, donc vous pouvez faire l'inverse, calculer le pixel correspondant aux coordonnées d'une ville, et superposer des marqueurs. (Mes scripts &lt;code&gt;compute_barcelona_px.py&lt;/code&gt; + &lt;code&gt;add_map_overlay.py&lt;/code&gt; font exactement ça ; je les publierai avec le reste.)
Plus de détails dans &lt;a href="https://github.com/yannklein/satellite-images/tree/main/docs" rel="noopener noreferrer"&gt;la doc de ce dépôt&lt;/a&gt;.
Pour la première fois, la galerie ressemblait à ce que je voulais construire. Vraie couleur, vraies cartes, ma ville étiquetée au centre. J'aurais pu m'arrêter là. C'était, selon n'importe quelle définition raisonnable, &lt;em&gt;terminé.&lt;/em&gt;
Mais il restait cette limitation... les immeubles autour de mon toit, qui m'empêchaient d'obtenir plus qu'une fine bande de terrain européen sur mes images satellite.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fadfmk7nutamk98q3pxbu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fadfmk7nutamk98q3pxbu.png" alt="Bande d'image reçue depuis mon appartement à Barcelone" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapitre 6 : « Et s'il y avait une deuxième antenne, dans un autre pays ? »
&lt;/h2&gt;

&lt;p&gt;On ne peut pas déplacer un immeuble, j'avais établi ça 🥲. Alors j'ai arrêté d'essayer de réparer mon ciel, et je suis parti en chercher un autre.&lt;/p&gt;

&lt;p&gt;J'ai de la famille à &lt;a href="https://en.wikipedia.org/wiki/Th%C3%A9ding" rel="noopener noreferrer"&gt;&lt;strong&gt;Théding&lt;/strong&gt;&lt;/a&gt;, une petite ville de la Moselle, dans le nord-est de la France. Un ciel ouvert, un vrai horizon, et la partie qui transforme ce projet matériel en histoire : &lt;strong&gt;mon père&lt;/strong&gt;, prêt à être mon coéquipier dans cette aventure satellite, à 1 000 km de distance.&lt;/p&gt;

&lt;p&gt;Voici comment la collaboration fonctionne concrètement. Je configure tout côté informatique depuis Barcelone, à distance, en SSH. Le boulot de mon père, c'est ce que je &lt;em&gt;ne peux pas&lt;/em&gt; faire depuis 1 000 km : placer et orienter physiquement l'antenne. Et ensuite, c'est le côté sympa, j'ai créé &lt;a href="https://satellite.sergeklein.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;sa propre copie du site de la galerie&lt;/strong&gt;&lt;/a&gt;. Il l'ouvrira et l'utilisera dans son propre navigateur, guettera l'arrivée des images, et ajustera son antenne en fonction de ce qu'il voit. Il est de facto l'ingénieur de terrain de la station de réception satellite de Théding.&lt;/p&gt;

&lt;p&gt;La station de Théding avait une contrainte principale, qui m'a beaucoup appris sur mon système et sur comment je pourrais/voudrais le faire évoluer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm2krh3xztvnfc31w7tqa.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm2krh3xztvnfc31w7tqa.webp" alt="Netbook Compaq Mini i386" width="474" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La machine à Théding est un &lt;strong&gt;vieux netbook i386&lt;/strong&gt;, ancien et bien, bien, bien plus faible que même mon MacBook ressuscité. Il ne peut pas décoder un passage satellite dans un temps raisonnable. Il ne peut pas faire tourner l'étape de projection. Il ne peut même pas faire tourner mon habituel assistant IA embarqué sur la machine pour m'aider à travailler dessus, il est tout simplement trop faible pour servir d'environnement de développement. À tous points de vue, c'est le mauvais ordinateur pour ce travail 😅.&lt;br&gt;
Pour cette raison, je lui ai confié seulement &lt;em&gt;un&lt;/em&gt; seul et unique job.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Le coin des geeks :&lt;/strong&gt; la bonne stratégie avec un nœud distant faible, c'est de lui faire faire presque &lt;em&gt;rien&lt;/em&gt;, et de pousser tout le vrai travail là où le calcul est réellement disponible. Le netbook de Théding ne fait que ceci : quand un passage est prévu, il enregistre les échantillons radio bruts dans un fichier, écrit un petit fichier annexe de métadonnées (quel satellite, à quelle heure, dans quelle direction), et renvoie un compte-rendu. C'est tout. Le fichier brut est rapatrié vers le sud, et mon serveur maison à Barcelone le décode, le colorise, le projette, et le publie sur la galerie de mon père, exactement comme si le passage avait eu lieu sur mon propre toit.&lt;/p&gt;



&lt;p&gt;Et c'est ce choix de conception qui explique &lt;em&gt;pourquoi&lt;/em&gt; le détail suivant compte autant:&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Le coin des geeks :&lt;/strong&gt; vous pouvez réduire vos données d'environ un facteur dix, en n'échantillonnant pas plus vite que nécessaire. À Barcelone, où le fichier brut ne quitte jamais la machine, j'enregistre à 2,4 millions d'échantillons par seconde (&lt;code&gt;-s 2400000&lt;/code&gt;). À Théding, ce même fichier brut doit voyager sur 1 000 km via la connexion domestique modeste d'un netbook, donc j'enregistre plutôt à &lt;strong&gt;250 000 échantillons par seconde&lt;/strong&gt; (&lt;code&gt;-s 250000&lt;/code&gt;). Ça représente environ un &lt;em&gt;dixième&lt;/em&gt; de la taille du fichier, et la belle nouvelle, c'est que les images sont tout aussi bonnes ! Le signal LRPT de METEOR ne fait qu'environ 120 kHz de large. Le taux d'échantillonnage doit être au moins le double de la largeur du signal qu'on veut capturer (une règle appelée le &lt;a href="https://www.dsprelated.com/foundations/sampling.php" rel="noopener noreferrer"&gt;théorème de Nyquist-Shannon&lt;/a&gt;), donc 250 kS/s couvre très bien un signal de 120 kHz.&lt;/p&gt;



&lt;p&gt;La dernière question était de savoir comment Barcelone parle à un netbook en France, et c'est là qu'une astuce que j'ai évoqué dans le Chapitre 4 montre enfin son utilité:&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Le coin des geeks :&lt;/strong&gt; normalement, pour atteindre une machine à distance, il faudrait qu'elle ait une adresse fixe et un port ouvert vers le monde, ce qui est à la fois contraignant (les IP domestiques changent) et un risque de sécurité (les ports ouverts se font scanner et attaquer). J'ai utilisé un &lt;strong&gt;tunnel Cloudflare&lt;/strong&gt;, qui inverse le flux : un petit programme sur le netbook de Théding établit une connexion &lt;em&gt;sortante&lt;/em&gt; vers Cloudflare et la maintient ouverte, et tout mon trafic atteint le netbook en remontant &lt;em&gt;par cette même connexion&lt;/em&gt; que la machine a elle-même ouverte. Le netbook de Théding est joignable de n'importe où, et simultanément invisible pour tout le reste d'Internet. Depuis Barcelone, mon serveur l'atteint aussi simplement qu'avec &lt;code&gt;ssh theding&lt;/code&gt;, et le tunnel fait le reste en coulisses.&lt;/p&gt;



&lt;p&gt;Donc le trajet complet d'un passage à Théding ressemble à ceci :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mon serveur maison, à l'heure prévue, traverse la frontière via le tunnel et dit au netbook d'enregistrer&lt;/li&gt;
&lt;li&gt;le netbook capture un fichier brut léger à 250 kS/s et renvoie le chemin du fichier&lt;/li&gt;
&lt;li&gt;le serveur maison rapatrie ce fichier vers Barcelone par &lt;code&gt;rsync&lt;/code&gt;, puis le pipeline habituel décodage-couleur-projection-publication du serveur maison, décrit dans les trois derniers chapitres, s'exécute dessus, et une image du ciel au-dessus de la France apparaît dans la galerie de mon père, et dans la mienne.
En septembre 2026, tout est en place et fonctionne, mais nous cherchons encore un bon emplacement pour installer l'antenne à Théding. J'espère avoir bientôt de belles images à vous montrer.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🔧 Notes de construction : un second site de capture, à distance&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Répartis le travail selon où se trouve le calcul.&lt;/strong&gt; Le nœud distant fait le &lt;em&gt;minimum&lt;/em&gt; : enregistrer la bande de base brute, écrire un fichier annexe de métadonnées, renvoyer le chemin du fichier. Tout le décodage/la projection/la publication se fait de retour sur la machine capable. Une machine distante faible (la mienne est un netbook i386) suffit, c'est juste un capteur.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;N'échantillonne qu'aussi vite que le signal est large.&lt;/strong&gt; Le LRPT de METEOR fait environ 120 kHz de large, donc &lt;strong&gt;250 kS/s&lt;/strong&gt; le capture entièrement (Nyquist-Shannon : échantillonner à ≥ 2× la largeur du signal). C'est environ 10× plus petit qu'un fichier à 2,4 MS/s, ce qui est décisif quand le fichier brut doit voyager sur une connexion distante modeste. En local, où le fichier ne bouge jamais, 2,4 MS/s convient très bien.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atteins le site distant avec un tunnel Cloudflare, pas avec du port-forwarding.&lt;/strong&gt; Lancez &lt;code&gt;cloudflared&lt;/code&gt; sur le nœud distant ; il se connecte &lt;em&gt;vers l'extérieur&lt;/em&gt;, donc vous n'avez besoin ni d'IP statique ni de port entrant ouvert (ça fonctionne derrière NAT/CGNAT, ça survit aux changements d'IP, rien n'est exposé aux attaques). Ensuite, c'est juste &lt;code&gt;ssh &amp;lt;alias&amp;gt;&lt;/code&gt; depuis chez vous.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le saut n8n, honnêtement :&lt;/strong&gt; n8n tourne sur le serveur maison et atteint le site distant via un alias SSH classique (&lt;code&gt;ssh theding&lt;/code&gt;, avec le tunnel configuré en dessous dans &lt;code&gt;~/.ssh/config&lt;/code&gt;). Il enregistre à distance, puis &lt;code&gt;rsync -e ssh theding:$RAW $LOCAL&lt;/code&gt; rapatrie le fichier pour le décodage. Garder le nœud distant simple garde aussi tout ça bête et disciplinée.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Développe à distance.&lt;/strong&gt; J'édite le code du site distant depuis mon ordinateur portable avec &lt;a href="https://code.visualstudio.com/docs/remote/ssh-tutorial" rel="noopener noreferrer"&gt;VS Code en remote-SSH&lt;/a&gt;, via le même tunnel ; le netbook est trop faible pour héberger un vrai environnement de développement lui-même, mais il n'en a pas besoin ; les fichiers paraissent locaux, la machine se contente de les conserver.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;J'avais désormais deux ciels potentiels. Un ouvert en France et un encaissé à Barcelone, tous deux alimentant le même pipeline, tous deux publiant vers des galeries que n'importe qui pouvait visiter. Le projet était devenu une petite station de réception distribuée, à cheval sur deux pays, quelque chose que je n'aurais jamais imaginé construire au départ 🚀.&lt;/p&gt;

&lt;p&gt;Et j'aurais pu, enfin, m'arrêter là.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Mais il restait tout un autre genre de satellite que je ne pouvais toujours pas toucher : celui qui ne bouge jamais.&lt;/em&gt;&lt;/p&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapitre 7 : Où en est le projet?
&lt;/h2&gt;

&lt;p&gt;Il est temps de présenter officiellement la version finale de ma &lt;a href="https://satellite.yannklein.dev/" rel="noopener noreferrer"&gt;galerie d'images satellite&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Un travail qui n'a l'air de rien. Un travail que beaucoup ne comprennent pas (d'innombrables personnes m'ont demandé pourquoi je faisais ça). Mais un travail qui m'a beaucoup appris, qui m'a fait un peu rêver d'espace, qui m'a fait sentir que je pouvais accomplir beaucoup avec peu de ressources et un peu d'ambition.&lt;/p&gt;

&lt;p&gt;Chaque chapitre de cette épopée a pris pas mal de temps, des heures de frustration, de recherche. J'ai utilisé d'innombrables contournements pour compenser mon montage très "cheap" (je travaille quand même avec une vieille clé TV et deux ordinateurs portables dépassés..!). J'ai adoré/détesté chaque minute de tout ça !&lt;br&gt;
Et la machine continue de tourner. Je ne &lt;em&gt;fais&lt;/em&gt; plus rien maintenant, toute la boucle tourne toute seule. Les passages sont prédits, l'enregistrement démarre, le décodage tourne, les images sont colorisées, projetées, retournées et publiées, le tout sans surveillance, selon un planning, sur les deux sites. Je me réveille avec de nouvelles images de la Méditerranée que je n'ai rien fait pour mériter ce matin-là. J'en suis même à me demander ce que je devrais faire de toutes ces images..!&lt;/p&gt;

&lt;p&gt;En plus de 3 mois, ça a rempli une galerie que n'importe qui peut ouvrir dès maintenant :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Barcelone :&lt;/strong&gt; &lt;a href="https://satellite.yannklein.dev" rel="noopener noreferrer"&gt;satellite.yannklein.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Théding&lt;/strong&gt; (le ciel de mon père) : &lt;a href="https://satellite.sergeklein.com" rel="noopener noreferrer"&gt;satellite.sergeklein.com&lt;/a&gt; &lt;em&gt;(en ligne, mais encore vide, l'antenne n'est pas installée)&lt;/em&gt;
Mais je vous avais promis au début que cette saga n'était pas terminée, et je le pensais.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tout ce que j'ai construit chasse des satellites qui &lt;em&gt;bougent&lt;/em&gt;, qui se lèvent, décrivent un arc, et se couchent en dix minutes. Mais il existe toute une autre population là-haut qui fait quelque chose que mes satellites polaires ne font jamais.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ils restent parfaitement immobiles.&lt;/strong&gt;&lt;/p&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapitre 8 : « Et si je pouvais capter un satellite qui ne bouge jamais ? »
&lt;/h2&gt;

&lt;p&gt;Tout, jusqu'ici, a été une histoire de &lt;em&gt;chasse&lt;/em&gt;. Les satellites polaires sont rapides, bas, et disparus en dix minutes. Toute l'architecture, la prédiction, les enregistrements chronométrés, la logique de retournement, existe pour capter leurs passages éphémères. Mais l'imagerie météo la plus spectaculaire au monde ne vient pas de ceux-là. Elle vient de satellites qui restent &lt;strong&gt;immobiles&lt;/strong&gt; au-dessus de l'équateur, à 36 000 km d'altitude, fixant tout un hémisphère en même temps, toute la journée, tous les jours.&lt;/p&gt;

&lt;p&gt;J'en voulais un. Précisément, je voulais &lt;strong&gt;Elektro-L&lt;/strong&gt;, les satellites météo géostationnaires russes, les seuls à diffuser leur imagerie non chiffrée en &lt;strong&gt;bande L, autour de 1691 MHz&lt;/strong&gt;. Il diffuse une vue en disque complet de la Terre, le genre où vous voyez tout un quart de la planète tourner sous sa météo, en une seule image.&lt;/p&gt;

&lt;p&gt;Et capter un satellite qui ne bouge jamais est, d'une manière cruciale, &lt;em&gt;plus facile&lt;/em&gt; que d'en capter un qui bouge. Il n'y a pas de passage, il est toujours là, dehors. Il suffit de pointer une parabole (vous vous souvenez de ces paraboles satellite pour la télé ?) vers un seul point du ciel, exactement l'endroit où le satellite est garé, et de &lt;strong&gt;ne plus jamais la bouger&lt;/strong&gt;. Alors je me suis procuré le matériel : une &lt;a href="https://www.crowdsupply.com/krakenrf/discovery-dish" rel="noopener noreferrer"&gt;&lt;strong&gt;Discovery Dish&lt;/strong&gt;&lt;/a&gt;, une petite parabole avec une source en bande L, réglée pour la bande ~1,7 GHz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe6idxemhvtjr5lmdzf4d.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe6idxemhvtjr5lmdzf4d.jpg" alt="Discovery Dish" width="800" height="861"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Il y avait juste un problème, et un gros.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Le coin des geeks :&lt;/strong&gt; l'Europe de l'Ouest n'a actuellement &lt;em&gt;aucun&lt;/em&gt; satellite météo géostationnaire non chiffré en état de fonctionner à recevoir. Le créneau qui couvre ma partie du monde, 14,5° Ouest, au-dessus de l'Atlantique, est occupé par l'ancien &lt;strong&gt;Elektro-L2&lt;/strong&gt;, mais &lt;strong&gt;son émetteur en bande L est mort suite à une panne d'alimentation&lt;/strong&gt;. Il est toujours là-haut, mais silencieux sur la fréquence que je peux recevoir.&lt;/p&gt;



&lt;p&gt;Mais voici pourquoi j'ai acheté la parabole malgré ce fait frustrant :&lt;br&gt;
il existe un satellite plus récent, &lt;strong&gt;Elektro-L5&lt;/strong&gt;, lancé en février 2026. Depuis début août 2026, il est devenu opérationnel sur le créneau &lt;strong&gt;76° Est&lt;/strong&gt; : au-dessus de l'océan Indien, trop loin pour moi pour l'instant. Mais son arrivée est une bénédiction pour moi : elle libère le satellite qui &lt;em&gt;occupait&lt;/em&gt; auparavant le 76°E, &lt;strong&gt;Elektro-L3&lt;/strong&gt;, pour qu'il se déplace. Et la nouvelle destination assignée à L3 est le &lt;strong&gt;14,5° Ouest&lt;/strong&gt;, mon créneau 🎉. Quand L3 arrivera, l'Europe de l'Ouest récupérera sa bande L géostationnaire non chiffrée pour la première fois depuis des années, et ma parabole aura enfin quelque chose de vivant à écouter.&lt;br&gt;
Alors comment un satellite censé &lt;em&gt;ne jamais bouger&lt;/em&gt; passe-t-il d'un côté de la planète à l'autre ?&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Le coin des geeks :&lt;/strong&gt; on déplace un satellite géostationnaire en le mettant délibérément sur une &lt;em&gt;mauvaise&lt;/em&gt; orbite, brièvement. Un satellite reste immobile par rapport au sol uniquement parce que son orbite est calée pour que sa vitesse corresponde exactement à la rotation de la Terre. Élevez-le sur une orbite légèrement &lt;em&gt;plus haute&lt;/em&gt;, et il parcourt alors une boucle plus longue à une allure plus lente, donc il prend du retard sur la rotation de la Terre et, vu du sol, il semble &lt;strong&gt;dériver vers l'ouest&lt;/strong&gt;, un peu chaque jour. Vous le laissez dériver à cette altitude plus élevée, jusqu'à ce qu'il soit au-dessus de la longitude voulue. Puis vous le &lt;em&gt;rabaissez&lt;/em&gt; jusqu'à l'altitude géostationnaire exacte, sa vitesse se recale sur celle de la Terre, et il se verrouille sur sa nouvelle position. Vous ne le faites pas voler de côté à travers le monde. Vous le soulevez, vous laissez la planète tourner en dessous, et vous le reposez.&lt;/p&gt;



&lt;p&gt;On sait exactement à quoi ça ressemble parce que L3 est sur le point de refaire un trajet que son frère jumeau a déjà emprunté. Quand &lt;strong&gt;Elektro-L1&lt;/strong&gt; a fait ce même trajet 76°E → 14,5°O en 2016, il avait été élevé d'environ &lt;strong&gt;289 km&lt;/strong&gt; au-dessus de l'altitude géostationnaire, ce qui l'a fait dériver vers l'ouest à &lt;strong&gt;2,03° par jour&lt;/strong&gt;. Le trajet a duré environ &lt;strong&gt;45 jours&lt;/strong&gt;, après quoi les contrôleurs l'ont progressivement rabaissé, jusqu'à ce qu'il se stabilise précisément à 14,5°O. On s'attend à ce que L3 fasse la même chose : une lente glissade délibérée, de plusieurs semaines, à travers le ciel, propulsée par rien de plus spectaculaire que le fait d'&lt;em&gt;être légèrement trop haut et de laisser le monde tourner en dessous.&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Au moment où j'écris ces lignes, L3 n'est pas encore parti.&lt;/strong&gt; Je peux le voir dans mon traqueur de satellites, et il se trouve &lt;em&gt;juste à côté de L5&lt;/em&gt;, tous deux côte à côte au-dessus de l'océan Indien. N'importe quel jour maintenant, L3 va allumer ses propulseurs, se glisser dans cette orbite légèrement trop haute, et entamer sa lente traversée vers l'ouest, vers le créneau vide au-dessus de l'Atlantique, vers &lt;em&gt;moi&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/editor/yannklein/embed/01a02119-7a99-784e-aefe-2eaf94b6bed0?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Donc, à ce jour, ma parabole est pointée vers un coin de ciel vide au-dessus de l'Atlantique, en attente de L3 🛰️.&lt;/p&gt;


&lt;br&gt;


&lt;h2&gt;
  
  
  Épilogue : La suite du chemin
&lt;/h2&gt;

&lt;p&gt;Chaque chapitre de cette histoire s'est terminé par un « et si » qui m'a entraîné vers le suivant, alors ce serait malhonnête de terminer l'article comme si les questions étaient épuisées. Elles ne le sont pas. Voici ce qui reste ouvert au moment où j'écris.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;L'évidence : j'attends un satellite.&lt;/strong&gt; Elektro-L3 est encore garé à côté de L5 au-dessus de l'océan Indien, et jusqu'à ce qu'il allume ses propulseurs et fasse sa traversée de six semaines vers l'ouest, ma parabole fixe un coin de ciel vide au-dessus de l'Atlantique. C'est le cliffhanger que je ne peux littéralement résoudre selon aucun autre calendrier que celui du satellite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;L'antenne de mon père a encore besoin d'un logement permanent.&lt;/strong&gt; Le netbook doit rester au sec et à l'abri ; l'antenne doit vivre dehors avec une vue dégagée. Transformer ça en une installation étanche aux intempéries, qui ne nécessite pas d'échelle, dans un jardin en Moselle, c'est le prochain vrai chantier physique, et c'est pour ça que sa galerie est encore vide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Et il y a une bifurcation que je n'ai pas encore choisie.&lt;/strong&gt; Cette parabole fixe pourrait devenir quelque chose de plus ambitieux. METEOR ne diffuse pas seulement le LRPT basse résolution que je capte sur 137 MHz, il transmet aussi une image bien plus haute résolution appelée HRPT, en bande L, autour de 1700 MHz, pile dans la portée de la parabole. Le hic, c'est que METEOR &lt;em&gt;bouge&lt;/em&gt;, donc pour recevoir son signal en bande L, il me faudrait suivre physiquement sa trajectoire dans le ciel, ce qui veut dire un &lt;strong&gt;rotor motorisé az/el&lt;/strong&gt;. Il existe maintenant des options plutôt bon marché (le rotor portable &lt;a href="https://www.tindie.com/products/johnnywu/the-antrunner-rotator/" rel="noopener noreferrer"&gt;AntRunner&lt;/a&gt; revient à environ 300 € livré).&lt;/p&gt;

&lt;p&gt;Le but d'un projet comme celui-ci n'a jamais été de le finir. C'était de continuer à trouver la prochaine question qui valait la peine d'être poursuivie. J'ai commencé avec un bout de fil et une bande noire, et j'ai fini (je n'ai &lt;em&gt;pas&lt;/em&gt; fini) avec une station de réception dans deux pays, un père en France, et un vaisseau spatial qui dérive lentement vers une parabole déjà pointée là où il va arriver. Si vous voulez voir comment ça se termine, les galeries se mettent à jour toutes seules, et éventuellement, cette histoire aussi.&lt;/p&gt;

&lt;p&gt;Le ciel continue de diffuser. Je continuerai d'écouter.&lt;/p&gt;


&lt;br&gt;


&lt;h2&gt;
  
  
  Envie de construire la vôtre ?
&lt;/h2&gt;

&lt;p&gt;Si tout ça vous a donné envie de capter un satellite, voici le chemin le plus court et le plus honnête, de rien du tout jusqu'à votre première image. (Les parties avancées, deux sites, automatisation et projection, se trouvent dans les chapitres ci-dessus et dans le &lt;a href="https://github.com/yannklein/satellite-images/tree/main/docs" rel="noopener noreferrer"&gt;dépôt compagnon&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Achetez le matériel de départ (~60-100 €).&lt;/strong&gt; Une clé &lt;a href="https://www.rtl-sdr.com/rtl-sdr-blog-v-3-dongles-user-guide/" rel="noopener noreferrer"&gt;&lt;strong&gt;RTL-SDR Blog V3&lt;/strong&gt;&lt;/a&gt; avec son kit &lt;strong&gt;dipôle&lt;/strong&gt; télescopique, et dès que vous avez passé votre première tentative, un &lt;a href="https://www.nooelec.com/store/sdr/sdr-addons/sawbird/sawbird-plus-noaa-308.html" rel="noopener noreferrer"&gt;LNA &lt;strong&gt;Nooelec SAWbird+ NOAA&lt;/strong&gt;&lt;/a&gt; (~50 €) à monter sur l'antenne. C'est toute la radio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Construisez bien le dipôle en V.&lt;/strong&gt; Chaque bras à &lt;strong&gt;53,4 cm&lt;/strong&gt;, &lt;strong&gt;120°&lt;/strong&gt; entre eux, posé bien &lt;strong&gt;à plat/à l'horizontale&lt;/strong&gt;. Donnez-lui l'horizon nord-sud le plus dégagé possible. Cette seule étape fait toute la différence entre une image noire et une vraie image. (Chapitre 2.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Placez le SAWbird à l'antenne, pas à la radio.&lt;/strong&gt; Alimentez-le via le bias tee de la clé. Amplifiez &lt;em&gt;avant&lt;/em&gt; la perte du câble, jamais après. (Chapitre 3.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Installez &lt;a href="https://www.satdump.org/" rel="noopener noreferrer"&gt;SatDump&lt;/a&gt; et prédisez un passage.&lt;/strong&gt; Utilisez n'importe quel prédicteur de passages (N2YO, ou des applis comme Look4sat / le traqueur de SDR++) pour trouver quand &lt;strong&gt;METEOR-M2-3 ou M2-4&lt;/strong&gt; (≈&lt;strong&gt;137,9 MHz&lt;/strong&gt;) traverse votre ciel prochainement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enregistrez, puis décodez.&lt;/strong&gt; Capturez le passage dans un fichier brut, puis lancez le pipeline METEOR LRPT de SatDump dessus :
&lt;/li&gt;
&lt;/ol&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;   rtl_sdr &lt;span class="nt"&gt;-f&lt;/span&gt; 137900000 &lt;span class="nt"&gt;-s&lt;/span&gt; 2400000 &lt;span class="nt"&gt;-g&lt;/span&gt; 20 pass.raw
   &lt;span class="c"&gt;# après le passage :&lt;/span&gt;
   satdump pipeline meteor_m2-x_lrpt baseband pass.raw ./decoded &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;--samplerate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2400000 &lt;span class="nt"&gt;--baseband_format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;cu8 &lt;span class="nt"&gt;--fill_missing&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Attendez-vous à ce que la première soit ratée.&lt;/strong&gt; Une image faible ou noire n'est pas un échec. Itère. Tout le loisir tient dans l'itération.
Voilà, c'est tout. Tout le reste de cet article : l'automatisation, le second pays, la couleur, la projection, le timelapse, c'est juste ce qui arrive quand on n'arrive pas à s'arrêter de se demander « et si ».


## Ressources et liens&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SatDump&lt;/strong&gt; : le couteau suisse du décodage/de la projection : &lt;a href="https://www.satdump.org/" rel="noopener noreferrer"&gt;satdump.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RTL-SDR Blog&lt;/strong&gt; : les clés, le guide du dipôle en V, et la meilleure source d'actualité pour ce loisir : &lt;a href="https://www.rtl-sdr.com/" rel="noopener noreferrer"&gt;rtl-sdr.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nooelec SAWbird+ NOAA&lt;/strong&gt; : le LNA 137 MHz : &lt;a href="https://www.nooelec.com/store/sawbird-plus-noaa.html" rel="noopener noreferrer"&gt;nooelec.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KrakenRF Discovery Dish&lt;/strong&gt; : la parabole en bande L pour le géostationnaire/HRPT : &lt;a href="https://www.krakenrf.com/" rel="noopener noreferrer"&gt;krakenrf.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;N2YO&lt;/strong&gt; : prédictions de passages et suivi en direct (METEOR-M2-3 = NORAD 57166, M2-4 = 59051) : &lt;a href="https://www.n2yo.com/" rel="noopener noreferrer"&gt;n2yo.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mes galeries&lt;/strong&gt; : Barcelone : &lt;a href="https://satellite.yannklein.dev" rel="noopener noreferrer"&gt;satellite.yannklein.dev&lt;/a&gt; · Théding : &lt;a href="https://satellite.sergeklein.com" rel="noopener noreferrer"&gt;satellite.sergeklein.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dépôt compagnon&lt;/strong&gt; &lt;em&gt;(le pipeline, les flux n8n, la config SatDump, les scripts de projection/overlay, et les notes de montage)&lt;/em&gt; : &lt;strong&gt;&lt;code&gt;github.com/yannklein/satellite-images/tree/main/docs&lt;/code&gt;&lt;/strong&gt; &lt;em&gt;(mis à jour en parallèle de cet article)&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>francais</category>
      <category>n8n</category>
      <category>satellite</category>
      <category>space</category>
    </item>
    <item>
      <title>The Antenna That Wouldn't Stop Growing</title>
      <dc:creator>Yann Klein</dc:creator>
      <pubDate>Sun, 06 Sep 2026 12:32:57 +0000</pubDate>
      <link>https://dev.to/yannklein/the-antenna-that-wouldnt-stop-growing-43jk</link>
      <guid>https://dev.to/yannklein/the-antenna-that-wouldnt-stop-growing-43jk</guid>
      <description>&lt;p&gt;Version en &lt;a href="https://dev.to/yannklein/lantenne-qui-narretait-pas-de-grandir-5c5i"&gt;français ici 🇫🇷&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prologue: Open the window and look at the sky 🌌
&lt;/h2&gt;

&lt;p&gt;Right now, while you read this, multi-million euros satellites are passing over your head. Some of them are transmitting pictures of the Earth to anyone who cares to listen. Not just to their companies/makers or some governmental agencies, to &lt;em&gt;anyone&lt;/em&gt;! The images go out unencrypted, raining down over whole continents on frequencies you can pull in with about 100 euros of hardware and a balcony facing the sky.&lt;br&gt;
That is true for Earth pictures, for weather data, aviation/maritime tracking, amateur radio, even videos from the International Space Station 🛰️!&lt;/p&gt;

&lt;p&gt;I didn't know that either... until I did! And when I did, I felt a new frontier opening up, like I could reach the stars for real, from my home. &lt;strong&gt;New space adventures and discoveries were expecting me, one satellite at a time&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is a story about reaching (weather imagery) &lt;strong&gt;satellites&lt;/strong&gt;. It's also a story of how a "let me just try one thing" turned into a distributed ground station running across two countries, a dead laptop resurrected as a server, my dad on a ladder in Théding, France while I watch from Barcelona, Spain and, as I write this, a geostationary satellite drifting slowly across the sky toward the one spot that would let me receive it. The project isn't finished. I mean that literally: this article ends on a spacecraft that is still in motion.&lt;br&gt;
But I should introduce the cast first, because the difference between two kinds of satellite &lt;em&gt;is&lt;/em&gt; the key to this whole project.&lt;br&gt;
Weather satellites come in two families.&lt;/p&gt;

&lt;p&gt;The first are &lt;strong&gt;polar orbiters&lt;/strong&gt; 🛰️. They fly low, a few hundred kilometers up, and fast, looping North to South while the Earth turns underneath them, so they eventually pass over everywhere (over your home too! 👾). They're the ones I chase in this story: the Russian &lt;strong&gt;METEOR-M&lt;/strong&gt; series, 800 km over our heads, broadcasting down in the VHF band around &lt;strong&gt;137 MHz&lt;/strong&gt;. The catch is they're only &lt;em&gt;up there&lt;/em&gt; for about ten to fifteen minutes at a time. The satellite climbs out of the horizon, arcs over us, and drops away, and we have exactly that long to grab everything it's saying before it's gone. Miss it and you wait for the next orbit (~ 1-2 days!).&lt;/p&gt;

&lt;p&gt;The second family are &lt;strong&gt;geostationary&lt;/strong&gt; satellites 🌍. These sit &lt;em&gt;ridiculously&lt;/em&gt; far out, about 36,000 km, in an orbit tuned so precisely that they circle the Earth in exactly one day, which means from the ground they appear to hang perfectly still. Fixed in the sky. Always there, always staring at the same face of the planet, broadcasting continuously. No ten-minute window 🤩. But they transmit way up in the &lt;strong&gt;L-band&lt;/strong&gt; (~1.7 GHz), which is a different beast to receive. Hold onto these, they're where the story is heading, and the finale is one of them, the &lt;strong&gt;Elektro-L3&lt;/strong&gt; literally sliding into position.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/editor/yannklein/embed/01a02119-7a99-784e-aefe-2eaf94b6bed0?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapter 1: "What if I just point an antenna at the sky?"
&lt;/h2&gt;

&lt;p&gt;The mission was clear, it was time for the first try: I bought a cheap &lt;a href="https://www.rtl-sdr.com/" rel="noopener noreferrer"&gt;RTL-SDR USB dongle&lt;/a&gt;, the kind that ships with a little telescopic dipole antenna in the box, extended and propped the antenna on my terrace, pointed it in a "looks about right" manner at the sky, waited for a METEOR pass, and hit record.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr2wmpu193er1436euz5t.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr2wmpu193er1436euz5t.jpg" alt="RTL-SDR dongle set" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me tell you about that dongle, because it's genuinely one of my favorite facts in this hobby.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Cool facts for the techies:&lt;/strong&gt; the little RTL-SDR receivers that this entire community is built on were never designed to be radios. They started life as cheap &lt;strong&gt;DVB-T television tuners&lt;/strong&gt;, USB sticks for watching digital TV on your laptop. Around 2012, people poking at the chip realized you could bypass the TV decoding and get at the &lt;em&gt;raw radio samples&lt;/em&gt; underneath, the unprocessed digitized signal, straight off the antenna. &lt;br&gt;
Suddenly a 60€ TV stick became a general-purpose software-defined radio. It grabs a slice of radio spectrum, digitizes it, and shovels the raw numbers into your computer. Every actual &lt;em&gt;radio&lt;/em&gt; thing, tuning, filtering, demodulating, turning a wobble in a signal into a pixel, happens in software, on your machine. So, in a sense, it does much less than a radio, it effectively is barely more than an antenna, and let &lt;em&gt;you&lt;/em&gt; do the smart job with whatever signal you capture.&lt;/p&gt;



&lt;p&gt;Which is beautiful, and also means that when it doesn't work, there's no "radio" to blame. It's just you.&lt;/p&gt;

&lt;p&gt;And it did not work.&lt;/p&gt;

&lt;p&gt;The satellite came over, right on schedule (more on &lt;em&gt;why&lt;/em&gt; the schedule is so exact in a later chapter). I recorded the pass. I ran the decoder. And out came... this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxkf3m6hybeh0o8qmorsl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxkf3m6hybeh0o8qmorsl.png" alt="First image received" width="784" height="24"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You see this near-black strip above 👆, that's the image I got. Not even a rectangular black image. Ten minutes of a satellite broadcasting a picture of Europe directly over my head, and I'd caught a black chopstick 🥢.&lt;/p&gt;

&lt;p&gt;But that first, hmm, something, mattered, once I understood what I was looking at. It wasn't random. It was the fragment of the satellite pass where the signal briefly clawed its way above the noise: the moment the satellite was highest and closest, fighting through the least air and distance. Everywhere else, when it was low on the horizon and far away, its signal never climbed above the city's radio racket, and the decoder had nothing to work with but static, which it faithfully rendered as black ⬛️. The image wasn't a total failure, as it helped me diagnose my problem.&lt;/p&gt;

&lt;p&gt;My problem was &lt;strong&gt;signal&lt;/strong&gt; 📶. Or rather, the lack of it: the satellite is a few hundred kilometers up transmitting a handful of watts, and by the time that whisper reached my decoder, it was already down in the mud with all the background radio noise of a city. The decoder needs the signal to stand &lt;em&gt;above&lt;/em&gt; that noise floor to reconstruct a picture. Mine barely did, once, at the top of the pass, and drowned everywhere else.&lt;/p&gt;

&lt;p&gt;That black strip of radio noise wasn't exactly inspiring. But if the difference between black and a real picture was just &lt;em&gt;signal quality&lt;/em&gt;, well, that was a problem with knobs on it. Knobs I could turn.&lt;/p&gt;

&lt;p&gt;And the first knob had been in the box the entire time: the antenna! 📡 I did connect the antenna, don't get me wrong, but I'd treated it like an accessory when it was actually an &lt;em&gt;instrument&lt;/em&gt;. A dipole antenna isn't just a piece of wire you point at things, it's a tuned object whose length is supposed to correspond to the wavelength you're trying to catch. Mine was tuned to nothing in particular...&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🔧 Build notes: the absolute minimum to try this yourself&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the naive setup that got me a black frame, deliberately bare-bones. It's still a perfectly good way to take your &lt;em&gt;first&lt;/em&gt; swing, as long as you expect the black strip as a rite of passage rather than a failure.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Receiver:&lt;/strong&gt; an &lt;strong&gt;&lt;a href="https://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/" rel="noopener noreferrer"&gt;RTL-SDR Blog V3&lt;/a&gt;&lt;/strong&gt;, the same dongle I run at &lt;em&gt;both&lt;/em&gt; my sites. Get a proper "Blog" brand one, not the cheapest no-name stick: the good ones have a stable temperature-compensated oscillator (less frequency drift) and a built-in bias-tee you'll want in &lt;em&gt;Chapter 3&lt;/em&gt;. Mine cost about &lt;strong&gt;60€ delivery to Spain included&lt;/strong&gt; with the dipole kit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Antenna:&lt;/strong&gt; the telescopic &lt;strong&gt;dipole kit&lt;/strong&gt; that comes with it is genuinely all you need to start... &lt;em&gt;if&lt;/em&gt; you set it up properly, which I did not. How to actually dimension and orient it is the whole of &lt;em&gt;Chapter 2&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target:&lt;/strong&gt; &lt;a href="https://www.n2yo.com/?s=57166" rel="noopener noreferrer"&gt;METEOR-M2-3&lt;/a&gt; and &lt;a href="http://n2yo.com/?s=59051" rel="noopener noreferrer"&gt;M2-4&lt;/a&gt;, downlink around &lt;strong&gt;137 MHz&lt;/strong&gt; VHF. (The exact per-satellite frequency comes in a later build-note, get it wrong and you'll record ten clean minutes of nothing. Ask me how I know.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Software:&lt;/strong&gt; &lt;a href="https://www.satdump.org/" rel="noopener noreferrer"&gt;SatDump&lt;/a&gt; does capture &lt;em&gt;and&lt;/em&gt; decode. First run: point it at the frequency, record the pass, decode. The full first-decode recipe and the config-crash gotcha that cost me an evening lands in &lt;em&gt;Chapter 4&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When to record:&lt;/strong&gt; a pass is a ~10-minute window, look it up &lt;em&gt;in advance&lt;/em&gt;. Pass prediction is covered in &lt;em&gt;Chapter 4&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expectation setting:&lt;/strong&gt; with an untuned antenna in a city, black-to-barely-there is the &lt;em&gt;normal&lt;/em&gt; first result. The rest of this article will tell you how to get your first actual earth image.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapter 2: "The antenna: that stick that is so much more than a stick..!" 📡
&lt;/h2&gt;

&lt;p&gt;It turned out the antenna had a &lt;a href="https://www.rtl-sdr.com/using-our-new-dipole-antenna-kit/" rel="noopener noreferrer"&gt;manual&lt;/a&gt;. I had not read the manual. Classic Yann (that's me) move!&lt;/p&gt;

&lt;p&gt;The dipole that ships with the RTL-SDR kit isn't fixed: the arms telescope, and the base lets you set the angle between them. And set those well is the difference between an pristine earth-image capture and nothing at all. For the 137 MHz band, the recommendation is very specific: each arm should be &lt;strong&gt;53.4 cm long&lt;/strong&gt;, with a &lt;strong&gt;120° angle&lt;/strong&gt; between them. I extended the telescopes to 53.4, set the V, and immediately the images got better. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnqe0wk6oi84ic23nf185.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnqe0wk6oi84ic23nf185.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most of us only ever dealt with antennas on FM/AM radios 📻. And if you remember, getting those right was never big deal. It is due to the strength and the omnipresence of FM/AM signal around us. Satellite signal is a whole different story. That "ohhh antenna shape has a meaning" part took me a day.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Cool facts for the techies:&lt;/strong&gt; that 53.4 isn't a magic number someone tuned by trial and error, it's just &lt;em&gt;137 MHz written in centimeters&lt;/em&gt;. Radio waves have a physical length. At 137 MHz, each wave is about 2.19 meters from crest to crest (that's the speed of light divided by the frequency). A dipole antenna needs to be half a wavelength long, tip-to-tip, so each of its two arms needs to be a quarter wavelength, which is about 54.7 cm, shaved down slightly to ~53.4 cm to account for the way real metal behaves at the ends (2-3% trim needed). Want to receive a higher frequency? The metal has to get shorter, because the wave is as well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm6hkjoyu8r1auqmwvsmp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm6hkjoyu8r1auqmwvsmp.png" alt="Satellite signal reception schema" width="800" height="707"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;The dimension topic turned out to be the easy part. Orientation was the hard one, and I lost days on it.&lt;/p&gt;

&lt;p&gt;Here's a low point I'll share for your benefit: at one stage I had the whole V standing &lt;em&gt;upright&lt;/em&gt;, tips pointing at the sky, on the reasonable-sounding logic that the satellite is up there, so the antenna should point up there too. This is the single most intuitive mistake you can make, and understanding why it's wrong took me a while and a lot of back and forth discussions with my AI friends.&lt;br&gt;
When the satellite is right over your head, its signal travels vertically towards you, but the signal's electric field &lt;strong&gt;E&lt;/strong&gt;, the one that you will ultimately capture is perpendicular to the signal direction: in that specific case, it is horizontal. Put your antenna vertically and &lt;strong&gt;E&lt;/strong&gt; has no effect &lt;em&gt;exactly&lt;/em&gt; when the satellite is highest, closest, and screaming its clearest signal at you... I had built an antenna precisely optimized to ignore the best ninety seconds of every pass!&lt;/p&gt;

&lt;p&gt;The fix that bought the biggest single jump in image quality in the whole project wasn't subtle: I laid it down flat. A horizontal dipole is broadside straight up, so instead of a null overhead I now had my most sensitive direction pointed at the heart of every pass. Vertical to horizontal, that was the leap!&lt;/p&gt;

&lt;p&gt;The orientation was also a key aspect. The dipole antenna need to be running &lt;strong&gt;east–west&lt;/strong&gt;, so the nulls fall east and west where the satellite isn't, and the broadside lobe covers the north–south arc it travels.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa8ypg0uqry3zd9o4v540.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa8ypg0uqry3zd9o4v540.png" alt="step-by-step of antenna functioning" width="800" height="884"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But getting orientation right taught me something I never expected about my own rooftop, my favorite fact in this whole chapter.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Cool facts for the techies:&lt;/strong&gt; a polar weather satellite doesn't take a &lt;em&gt;photograph&lt;/em&gt;. It builds its image one line at a time, like a flatbed scanner, or an old fax machine slowly spitting out a page. Onboard is a mirror that sweeps side to side &lt;em&gt;across&lt;/em&gt; the satellite's direction of travel, painting one thin east-west strip of the ground beneath it. Then the satellite's own north-south motion carries it forward a notch, it paints the next strip, and the next, stacking thousands of them into a picture. The image is &lt;em&gt;woven&lt;/em&gt;: the width comes from the scanning mirror, the height comes from the orbit. Now you understand why my first picture was a black &lt;strong&gt;strip&lt;/strong&gt;.&lt;/p&gt;



&lt;p&gt;Once you picture the image being built that way, a consequence falls out that's specific to where I live. I'm in an "interior" of Barcelona, a space boxed in by buildings that chew up my horizon to the north and south. You'd think that just makes my images &lt;em&gt;worse&lt;/em&gt;. What it actually does is make them &lt;em&gt;shorter&lt;/em&gt;, while leaving them full &lt;em&gt;width&lt;/em&gt;, because of the scanning mechanism.&lt;/p&gt;

&lt;p&gt;Each east-west scan line is drawn by the satellite looking down and out to the edges of its swath, roughly 2,900 km wide. It does not care in the slightest what my horizon looks like: for me to receive that entire line, I just need to be hearing the satellite &lt;em&gt;at that instant&lt;/em&gt; and mid-pass, it's riding high overhead, well clear of any building. So I get the full width, every time. What the buildings steal is the &lt;em&gt;beginning and end&lt;/em&gt; of the pass, the moments the satellite is low on the northern and southern horizons, hidden behind concrete before it ever clears my skyline. Those are the top and bottom of the image. So my captures come out like a wide picture: the complete east-west sweep of the continent, but trimmed short at the north and south ends, because Barcelona's rooftops decide how much of each pass I'm allowed to see.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyx8ro9cpml3porr209iq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyx8ro9cpml3porr209iq.png" alt="Pass received from Barcelona" width="800" height="748"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Which planted a thought I wasn't ready to act on yet: some limits you can't amplify or re-orient your way out of. That building on my northern horizon was never going to move. If I ever wanted the slices of sky Barcelona was hiding from me, I wouldn't need a better antenna. I'd need a &lt;em&gt;different sky&lt;/em&gt;. (Hold that thought, it's a couple of countries away.)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🔧 Build notes: the V-dipole, done right&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The build, this time with the right orientation and configuration. It should give you a fairly good picture of the earth. 🌍&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dimensions:&lt;/strong&gt; each arm &lt;strong&gt;53.4 cm&lt;/strong&gt; (a quarter-wavelength at 137 MHz), measured from the central connector to the tip. Set both arms equal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Angle:&lt;/strong&gt; &lt;strong&gt;~120°&lt;/strong&gt; between the two arms, the "V." (This broadens and evens out the overhead pattern versus a straight 180° dipole.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get it horizontal: this is the big one.&lt;/strong&gt; Lay the V flat. "Tips up" is the classic beginner mistake: it aims the antenna's deaf null straight at the overhead satellite, i.e. at the strongest moment of the pass. Flat = broadside overhead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Then choose azimuth: elements aligned **east–west&lt;/strong&gt;; with an open horizon.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Siting:&lt;/strong&gt; the clearer your &lt;strong&gt;north–south&lt;/strong&gt; horizon, the &lt;em&gt;taller&lt;/em&gt; your images (see the scanning note above). East–west obstructions barely cost you anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Polarization footnote (did-you-know):&lt;/strong&gt; METEOR's downlink is &lt;em&gt;circularly&lt;/em&gt; polarized, while a straight dipole (like our V antenna) is &lt;em&gt;linearly&lt;/em&gt; polarized. Because of this, we lose roughly 3 dB from the mismatch. It works completely fine anyway. The properly-matched upgrade is a &lt;strong&gt;QFH&lt;/strong&gt; (quadrifilar helix) antenna, which is on my someday-list and not yet built (a bit too pricey/&lt;a href="https://www.instructables.com/Inexpensive-NOAA-APT-Ground-Station-Utilizing-the-/" rel="noopener noreferrer"&gt;cumbersome to build&lt;/a&gt; for the actual gain).&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;The antenna was finally an instrument instead of a decoration, and the images proved it. But the signal still sagged whenever the satellite was low, losing part of the received images. And, the antenna being well set by now, my guess was that some other part of my setup was dampening the signal. Which raised the next question.&lt;/p&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapter 3: "What if I amplify the signal before the cable eats it?"
&lt;/h2&gt;

&lt;p&gt;The antenna was finally an instrument instead of a decoration, and my images had gone from "black rectangle" to "recognizable coastline." Progress. But they still had a wound running through them, and it looked like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl5if518sucun3fkds93y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl5if518sucun3fkds93y.png" alt="First image of the earth" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Those black horizontal strips are &lt;em&gt;lost lines&lt;/em&gt;. Remember from the last chapter that the image is painted one line at a time. So, a black band is a span of time where the signal dipped below the threshold the decoder needs, and it simply had nothing to draw. The picture would come in clean for a while, then tear open into black, then recover. Whole passes ruined by the gaps.&lt;/p&gt;

&lt;p&gt;So I went hunting for where I was losing signal. And I found it in the least glamorous component in the entire setup: the cable.&lt;/p&gt;

&lt;p&gt;Here's the thing: there is about &lt;strong&gt;10 meters of coax&lt;/strong&gt; between my antenna and the dongle. I'd started with 5 meters, then hauled the antenna up off the terrace floor onto the pergola to clear more sky (taller images, exactly like the last chapter promised), which cost another 5 meters. 10 meters is a &lt;em&gt;lot&lt;/em&gt; of cable to make a faint signal crawl through and coax cable is not a free pipe. Every meter of it &lt;em&gt;attenuates&lt;/em&gt; the signal a little, bleeding away the faint signal that had already crossed 800 km. That alone is annoying, but survivable. The real problem is subtler and it's the crux of this whole chapter:&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Cool facts for the techies:&lt;/strong&gt; in a receiving chain, &lt;em&gt;the order of your components decides your noise floor&lt;/em&gt; and the very first thing the signal touches matters more than everything after it combined. This is a genuine law with a name (Friis's formula for cascaded noise), and the short version is: every stage adds a little of its own noise, but each stage's contribution gets divided down by all the gain in front of it. So the first component contributes its full noise, the second contributes its noise shrunk by stage one's gain, the third shrunk even further. Put a good amplifier &lt;em&gt;first&lt;/em&gt;, with real gain, and it mathematically drowns out the noisiness of everything downstream, including a cheap, electrically-noisy RTL-SDR!&lt;/p&gt;



&lt;p&gt;Now here's the trap I'd fallen into, the one nobody tells you. A cable's loss isn't &lt;em&gt;just&lt;/em&gt; loss, &lt;strong&gt;loss is noise.&lt;/strong&gt; A lossy cable at the front of your chain behaves like a terrible first stage, quietly setting a noise floor that nothing downstream can ever undo. So the question isn't "how do I amplify the weak signal?" but rather "&lt;em&gt;where&lt;/em&gt; do I amplify it?" and the answer decides whether it works at all.&lt;/p&gt;

&lt;p&gt;If you put the amplifier down by the radio, indoors, where it's convenient to power and easy to reach, you've already lost. The signal has crawled through all that lossy cable &lt;em&gt;first&lt;/em&gt;, arriving degraded, and &lt;em&gt;then&lt;/em&gt; you amplify... but you're now amplifying signal-plus-cable-noise together. You've made the mud louder 🥲. If instead you put the amplifier up at the antenna, at the very feedpoint, &lt;em&gt;before&lt;/em&gt; the cable, it lifts the tiny signal well clear of the noise floor at the earliest possible instant, and &lt;em&gt;then&lt;/em&gt; sends that now-robust signal down the coax. The cable still takes its cut, but it's taking a cut of something strong. Same cable. Same amplifier. Opposite outcome, decided entirely by which end you bolt it to. And with 10 meters of it, getting that choice wrong would have been brutal.&lt;/p&gt;

&lt;p&gt;The component that does this is a &lt;strong&gt;Low-Noise Amplifier&lt;/strong&gt;, in short &lt;strong&gt;LNA&lt;/strong&gt;, and the one I bought is a &lt;a href="https://www.nooelec.com/store/sawbird-plus-noaa.html" rel="noopener noreferrer"&gt;Nooelec &lt;strong&gt;SAWbird+ NOAA&lt;/strong&gt;&lt;/a&gt;, built specifically for this ~137 MHz weather-satellite band. It does two jobs at once. It amplifies, first in the chain, at the antenna (the placement that matters). And the "SAW" part is a &lt;strong&gt;surface-acoustic-wave filter&lt;/strong&gt;, a little band-pass gate that only lets ~137 MHz through and rejects the rest.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Cool facts for the techies:&lt;/strong&gt; that filtering is more important than it sounds, because an amplifier &lt;em&gt;amplifies everything, EVERYTHING!&lt;/em&gt;, including the strong signals you don't want. Cities are full of powerful transmitters just above the FM broadcast band: business radio, air traffic control, navigation beacons, etc... If you let all of that hit a wide-open amplifier, the strongest signals can overload it and &lt;em&gt;desensitize&lt;/em&gt; it to the faint one you actually care about. The SAW filter slams the door on the out-of-band noise &lt;em&gt;before&lt;/em&gt; it reaches the amplifier stage, so all that precious gain gets spent on your 137 MHz whisper and nothing else.&lt;/p&gt;

&lt;p&gt;Note that it also means that you won't be able to capture non-137 MHz signals with this LNA, if you are interested in air traffic or other signals of the city, you better get a separate antenna for it.&lt;/p&gt;



&lt;p&gt;I mounted the SAWbird right at the antenna feedpoint. It needs to be powered and the RTL-SDR Blog dongle comes to the rescue: it can push a small DC voltage &lt;em&gt;up&lt;/em&gt; the same coax cable that carries the signal &lt;em&gt;down&lt;/em&gt; (this is called a &lt;strong&gt;bias tee&lt;/strong&gt;), so the amplifier sips its power through the very cable it's feeding 😻. One added option in the terminal command, and the LNA on the terrace comes alive.&lt;br&gt;
And the black bands closed up ✨.&lt;/p&gt;

&lt;p&gt;Not entirely, not on every marginal pass, but the difference was the most satisfying of the whole project. Passes that used to tear open into strips now came in whole, top to bottom. The images went from "recognizable but wounded" to "almost always complete." I'd stopped losing the satellite mid-sentence.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjz7fyc8mq2z4ra0xkdmx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjz7fyc8mq2z4ra0xkdmx.png" alt="First complete picture of earth" width="800" height="653"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🔧 Build notes: adding an LNA the right way&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What to buy:&lt;/strong&gt; a &lt;a href="https://www.nooelec.com/store/sdr/sdr-addons/sawbird/sawbird-plus-noaa-308.html" rel="noopener noreferrer"&gt;&lt;strong&gt;Nooelec SAWbird+ NOAA&lt;/strong&gt;&lt;/a&gt; (~€50), an LNA with a built-in SAW band-pass filter centered on the 137 MHz weather band. There are SAWbird variants for other bands, get the &lt;em&gt;NOAA&lt;/em&gt; one for METEOR/NOAA VHF. (Different target, different filter: a GOES/L-band build needs a different SAWbird entirely, which comes back in a much later chapter.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The one rule that matters:&lt;/strong&gt; mount it &lt;strong&gt;at the antenna feedpoint&lt;/strong&gt;, not down by the receiver. An LNA at the radio end is fighting the cable loss that already happened, an LNA at the antenna sets a low noise floor &lt;em&gt;before&lt;/em&gt; the cable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cable length is part of the equation:&lt;/strong&gt; I run 10 m of coax cable from a pergola-mounted antenna to the RTL-SDR dongle. The longer the run, the more the "LNA at the antenna" rule matters, 10 m of loss &lt;em&gt;ahead&lt;/em&gt; of the amplifier would have set a noise floor nothing downstream could fix.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Powering it:&lt;/strong&gt; enable the &lt;strong&gt;bias tee&lt;/strong&gt; on an RTL-SDR Blog dongle to send DC up the coax to the LNA (no separate power cable to the roof needed). In SatDump/&lt;code&gt;rtl_sdr&lt;/code&gt; this is a bias-tee flag/toggle; &lt;strong&gt;turn it off again&lt;/strong&gt; when you use the dongle for anything else. When it's ON, you should see a green light on your LNA device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why the SAW filter earns its keep:&lt;/strong&gt; an unfiltered LNA amplifies &lt;em&gt;everything&lt;/em&gt;, and a strong nearby out-of-band transmitter can overload it and desensitize it to your faint signal. The filter rejects the junk before the gain stage. In a quiet rural spot you might get away without it, in a city you won't! Note that, the filter works even if the LNA is not powered. To get non-137 MHz signals from the same antenna, you will need to physically unplug it. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Order of the whole setup, front to back:&lt;/strong&gt; antenna → &lt;strong&gt;SAWbird (LNA + filter)&lt;/strong&gt; → coax → dongle.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;After that step, I had a properly-designed antenna, oriented for my sky, with a low-noise amplifier lifting the signal before the cable could spoil it. For the first time, catching a good METEOR pass felt &lt;em&gt;reliable&lt;/em&gt; rather than lucky.&lt;/p&gt;

&lt;p&gt;Which is, of course, exactly when a new kind of dissatisfaction shows up. Because now I was reliably catching passes... by standing at my laptop, at the right minute, manually starting a recording, then manually running the decoder, then manually saving the image. The bottleneck was no longer the radio. &lt;strong&gt;The bottleneck was me, poor human being that had other things to do than activating an antenna.&lt;/strong&gt;&lt;/p&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapter 4: "What if a computer did all of this while I slept?"
&lt;/h2&gt;

&lt;p&gt;There's a specific kind of tired that comes from being the slowest part of your own system 🥲. I could catch a good pass now, but only by being physically present at the right minute, starting the recording by hand, waiting ten minutes, running the decoder, saving the image, and doing it all again for the next satellite a day later. The radio worked. The bottleneck had a name, and it was &lt;a href="https://yannklein.dev/" rel="noopener noreferrer"&gt;Yann&lt;/a&gt; (yeah, that's me!).&lt;/p&gt;

&lt;p&gt;So I decided to remove myself from the loop. And the machine I chose to replace me with was one most people would have thrown away: &lt;strong&gt;an old MacBook&lt;/strong&gt;, years past its prime, no longer trustworthy for anything a human needs to sit in front of. I wiped it, installed &lt;a href="https://www.debian.org/" rel="noopener noreferrer"&gt;Debian&lt;/a&gt;, and exiled it to a storage room to live out its second life as a server.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn8123c9ez3bmmrgnyl13.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn8123c9ez3bmmrgnyl13.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Cool facts for the techies:&lt;/strong&gt; a laptop, especially an old Mac with an SSD drive, is a secretly &lt;em&gt;excellent&lt;/em&gt; home server, and it's sitting unloved in half the drawers in the world. Think about what it has that a Raspberry Pi or a cloud VM doesn't: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a &lt;strong&gt;built-in UPS&lt;/strong&gt;: the battery rides out the power flickers and shortcuts that would otherwise reboot your machine mid-pass &lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;built-in screen and keyboard&lt;/strong&gt; permanently attached for exactly the moment SSH breaks and you need to see what's wrong. &lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;built-in Wifi and Bluetooth cards&lt;/strong&gt; ensuring all the connectivity the home server needs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's an all-in-one, self-powered, self-displaying computer, and quite portable as well! We just got trained to see them as disposable the instant they can't run the latest OS 💻💔.&lt;/p&gt;

&lt;p&gt;The brain of the operation is &lt;a href="https://n8n.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;n8n&lt;/strong&gt;&lt;/a&gt;: a very popular and open-source workflow automation tool that enables you to connect different services into one single app (e.g. connecting Slack to Claude AI and Linkedin API to generate and publish automated Linkedin posts). &lt;/p&gt;


&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyk35zndtd75faiavnnc2.png" width="799" height="145"&gt;My pass scheduling flow
  
&lt;br&gt;



&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff8pxbbk27fty5vqyn339.png" width="799" height="240"&gt;My image capturing flow
  
&lt;br&gt;


&lt;p&gt;n8n is my "satellite ground station" orchestrator: it figures out when the next satellite pass is, turns on the RTL-SDR radio, records the signal, decodes it, processes the image, and drops the result into the public gallery. All of this using a scheduler, unattended, while I sip my Virgin Vodka Martini 🍸.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Cool facts for the techies:&lt;/strong&gt; you can know &lt;em&gt;exactly&lt;/em&gt; when a satellite will fly over your house days in advance, down to the second: their orbits are deterministic. Their path is published as a &lt;strong&gt;TLE&lt;/strong&gt; (a "two-line element set"), a terse ~140-character text record of the orbit's shape and orientation at a known moment. Feed that TLE and your coordinates into a propagator and it runs the physics forward to tell you the satellite rises above your horizon at, say, 14:03:27 tomorrow, climbs to 71° elevation, and sets at 14:16. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7h0yvcw8eqcjqs7m0qu4.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7h0yvcw8eqcjqs7m0qu4.jpeg" alt="TLE explanation" width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;I did not do the calculation myself. Instead I query the &lt;a href="https://www.n2yo.com/satellite/?s=59051" rel="noopener noreferrer"&gt;N2YO API&lt;/a&gt;. On top of the satellite position, I also calculated the sunrise/sunset using the &lt;a href="https://api.sunrise-sunset.org" rel="noopener noreferrer"&gt;Sunrise-Sunset API&lt;/a&gt;, the METEOR satellite camera is too weak to detect any night light coming from earth, images captured after dusk are essentially black ⬛️.&lt;/p&gt;

&lt;p&gt;When the satellite is right above my antenna and the sun shines in the sky, n8n runs this:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Record the pass to raw baseband&lt;/span&gt;
rtl_sdr &lt;span class="nt"&gt;-f&lt;/span&gt; 137900000 &lt;span class="nt"&gt;-s&lt;/span&gt; 2400000 &lt;span class="nt"&gt;-g&lt;/span&gt; 20 ~/satellite-images/meteor_&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%H%M&lt;span class="si"&gt;)&lt;/span&gt;.raw
&lt;span class="c"&gt;# 2. Decode the raw samples into an image&lt;/span&gt;
./satdump pipeline meteor_m2-x_lrpt baseband &lt;span class="se"&gt;\&lt;/span&gt;
  meteor_HHMM.raw decoded_HHMM &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--samplerate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2400000 &lt;span class="nt"&gt;--baseband_format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;cu8
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The decoder is &lt;a href="https://www.satdump.org/" rel="noopener noreferrer"&gt;&lt;strong&gt;SatDump&lt;/strong&gt;&lt;/a&gt;, the Swiss-army knife of satellite image reception. It turns raw radio samples into jpg pictures of the Earth.&lt;/p&gt;

&lt;p&gt;The last piece was publishing. The decoded images needed a home on the internet, and I decided to use &lt;a href="https://coolify.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;Coolify&lt;/strong&gt;&lt;/a&gt; to deploy a satellite image gallery webpage painlessly. Think of it as a self-hosted Heroku or Vercel. It manages the hosting of my websites (through Docker containers), gives me dashboards and git-push-style deploys, and turns my old MacBook Pro 2011 into my own little cloud platform ☁️ 💻 ☁️.  &lt;/p&gt;

&lt;p&gt;The gallery webpage itself is a simple nginx container serving the images on an index.html page. It is live on &lt;strong&gt;satellite.yannklein.dev&lt;/strong&gt; reachable from anywhere in the world despite the MacBook sitting on a home connection with no fixed IP address, thanks to a Cloudflare tunnel. (&lt;em&gt;How&lt;/em&gt; that tunnel works with no fixed IP and no open ports is quite interesting, but I'll save it for the chapter where it does something much more impressive: reach signals beyond national borders.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3smaeqbsnp8lftbmwfoe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3smaeqbsnp8lftbmwfoe.png" alt="Flow from Satellite website to the web" width="799" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the first time, the whole thing ran without me. I'd wake up, check my phone, and there'd be a fresh picture of the Mediterranean that an outdated MacBook laptop had caught, decoded, and published while I was away.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🔧 Build notes: automating the capture→decode→publish loop&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The starter-tier parts (recording + decoding) are real, copy-pasteable commands. The orchestration stack is described so you can rebuild the &lt;em&gt;shape&lt;/em&gt;. I published my actual n8n flows and configs in &lt;a href="https://github.com/yannklein/satellite-images/tree/7ba07e5768031c2b9676b5641764856818b025be/docs" rel="noopener noreferrer"&gt;this repo folder&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Record a pass&lt;/strong&gt; (raw baseband, the input to everything):&lt;/li&gt;
&lt;/ul&gt;


&lt;pre class="highlight shell"&gt;&lt;code&gt;  rtl_sdr &lt;span class="nt"&gt;-f&lt;/span&gt; 137900000 &lt;span class="nt"&gt;-s&lt;/span&gt; 2400000 &lt;span class="nt"&gt;-g&lt;/span&gt; 20 ~/satellite-images/meteor_&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%H%M&lt;span class="si"&gt;)&lt;/span&gt;.raw
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;code&gt;-f 137900000&lt;/code&gt; = 137.9 MHz. For &lt;strong&gt;M2-3 and M2-4, 137.9 is primary&lt;/strong&gt;. (Gain &lt;code&gt;-g 20&lt;/code&gt; works well once the SAWbird is lifting the signal, with a strong LNA up front you often &lt;em&gt;don't&lt;/em&gt; want max gain, which can overload the dongle.)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Decode it&lt;/strong&gt; with SatDump's METEOR LRPT pipeline:&lt;/li&gt;
&lt;/ul&gt;


&lt;pre class="highlight shell"&gt;&lt;code&gt;  ./satdump pipeline meteor_m2-x_lrpt baseband IN.raw OUT_DIR &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--samplerate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2400000 &lt;span class="nt"&gt;--baseband_format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;cu8 &lt;span class="nt"&gt;--fill_missing&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;code&gt;--fill_missing&lt;/code&gt; interpolates dropped lines so the odd remaining signal gap is patched rather than left as a black strip, a nice finish on top of the SAWbird's work from Chapter 3.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The gotcha that cost me an evening:&lt;/strong&gt; if SatDump reports &lt;em&gt;no decoders/plugins&lt;/em&gt;, you're running it from the wrong place, launch it from its own &lt;code&gt;build/&lt;/code&gt; directory, not a system install.&lt;/li&gt;
&lt;li&gt;in my case &lt;strong&gt;SatDump is built from source&lt;/strong&gt; (there are &lt;a href="https://www.satdump.org/download.htm" rel="noopener noreferrer"&gt;different ways to install it&lt;/a&gt;). It compiles and runs happily on old, low-powered hardware, so don't let an ancient laptop stop you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Predicting passes:&lt;/strong&gt; orbits are deterministic use &lt;a href="https://www.n2yo.com/api/" rel="noopener noreferrer"&gt;N2YO API&lt;/a&gt; to schedule captures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When the image is empty and it's &lt;em&gt;not&lt;/em&gt; you:&lt;/strong&gt; METEOR-M2-3 has a partially undeployed antenna 😅, it is a weak, intermittent signal. Check the satellite's status (the &lt;a href="https://www.facebook.com/groups/Satellite.apt.group" rel="noopener noreferrer"&gt;APT Group community&lt;/a&gt; reports live pass quality) before blaming your setup.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The stack, in a nutshell:&lt;/strong&gt; old laptop → Debian → &lt;strong&gt;n8n&lt;/strong&gt; (orchestration) → &lt;strong&gt;SatDump&lt;/strong&gt; (decode) → &lt;strong&gt;Coolify&lt;/strong&gt; (self-hosted PaaS managing Docker) → &lt;strong&gt;nginx&lt;/strong&gt; container (the gallery) → &lt;strong&gt;Cloudflare tunnel&lt;/strong&gt; (public access, no fixed IP). Every piece is free and open-source.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;What an epic journey since my first tries at capturing earth pictures! I built a machine that caught the sky for me and put the results online. But the pictures it was publishing were still raw, gray, and, I was about to discover, some of them were upside down and backwards.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwy75zg1vxqkkkmm6zjaq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwy75zg1vxqkkkmm6zjaq.png" alt="First grayscale picture of earth" width="800" height="653"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapter 5: "What if these gray scans could become real color maps?"
&lt;/h2&gt;

&lt;p&gt;My old MacBook was now catching passes and publishing them without me. There was just one problem with the pictures it published: they were gray and distorted. They were still raw output from a scanner in space. The gorgeous color maps I'd seen other people post, coastlines crisp against a map, cities labeled? Those took three more steps. This chapter is about those steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step one: color.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A METEOR satellite doesn't see in "color" the way your eye does. Its scanner, the MSU-MR, looks at the Earth in several separate &lt;strong&gt;spectral bands&lt;/strong&gt; at once. It produces 3 simultaneous black-and-white photos, each taken through a different filter: one in visible light, one in near-infrared, one in shortwave-infrared. Each is just a grid of brightness values.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8176ov8t4ylztq1p34tr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8176ov8t4ylztq1p34tr.png" alt="Light spectrum received by MSU-MR" width="800" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5fzpnjp07j5695z7oumf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5fzpnjp07j5695z7oumf.png" alt="Three frequency pictures of earth" width="800" height="155"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To make a color image, you assign three of those bands to the red, green, and blue channels of a picture and let them mix. That's a &lt;strong&gt;false-color composite&lt;/strong&gt;. "False" because the colors aren't what your eye would see, it's a mapping chosen to make certain features leap out.&lt;/p&gt;

&lt;p&gt;I use 3 recipes from SatDump to produce false-color images highlighting interesting features:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fswdhv673kq0d71ed6bwd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fswdhv673kq0d71ed6bwd.png" alt="Three false-color picture of earth" width="800" height="155"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;False Color AVHRR 221&lt;/strong&gt; (Red = Ch.2, Green = Ch.2, Blue = Ch.1): a general-purpose false-color view built from the two reflective channels; my everyday go-to for land/vegetation contrast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;False Color AVHRR 3a21&lt;/strong&gt; (Red = Ch.3a/SWIR, Green = Ch.2/near-IR, Blue = Ch.1/visible): the shortwave-IR channel is sensitive to intense heat and to scorched ground, so this is the one where active fires and burn scars jump out in stark red/orange against the rest of the scene.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MSA&lt;/strong&gt;: a dedicated hotspot-detection enhancement rather than a simple RGB remap; it flags thermal anomalies directly, which is what pulls out the fainter or smaller fires the false-color composites can miss.&lt;/li&gt;
&lt;/ul&gt;


&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa6go5d035xijl9c7sooj.png" width="799" height="315"&gt;Wildfires and smoke in Spain - July 26th 2026
  




&lt;p&gt;🤓 &lt;strong&gt;Cool facts for the techies:&lt;/strong&gt;  in these images you can tell a &lt;em&gt;cloud&lt;/em&gt; from a &lt;em&gt;smoke plume&lt;/em&gt; and the catch is particle size! Clouds are made of relatively big water and ice droplets, and big droplets scatter &lt;em&gt;all&lt;/em&gt; wavelengths of light more or less equally (visible, near-infrared, shortwave-infrared). Bright in all three channels means bright Red + Green + Blue, which mixes to &lt;strong&gt;white&lt;/strong&gt;. Smoke is the opposite: it's made of &lt;em&gt;tiny&lt;/em&gt; particles, and tiny particles preferentially scatter only the &lt;em&gt;shortest&lt;/em&gt; wavelengths while letting longer ones pass straight through. So smoke is bright in the visible band but nearly &lt;em&gt;transparent&lt;/em&gt; in near- and shortwave-infrared. In this recipe the visible band is wired to Blue, so smoke lights up the blue channel and almost nothing else, and comes out a distinct, ghostly &lt;strong&gt;blue&lt;/strong&gt; against the white clouds around it.&lt;/p&gt;

&lt;p&gt;And the fire's &lt;em&gt;footprint&lt;/em&gt; shows up too, by the opposite logic: healthy vegetation is intensely bright in near-infrared (that's the Green channel here, which is why Spain glows yellow-green), so a &lt;strong&gt;burn scar&lt;/strong&gt;, where the vegetation has been burned, goes dark and stands out sharply against the green land around it. In a single frame you can see the fire's scar &lt;em&gt;and&lt;/em&gt; its smoke, by the different ways matter interacts with different wavelengths of light.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Step two: projection.&lt;/strong&gt; Now the images were colorful but still &lt;em&gt;wrong-shaped&lt;/em&gt;.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Cool facts for the techies:&lt;/strong&gt; a raw satellite scan is badly distorted, and the distortion is worst at the edges. The scanner sweeps a huge arc, nearly 3,000 km wide, and near the ends of each sweep, it is looking at earth through a shallow, grazing angle, so each pixel smears across far more ground than a pixel taken looking straight down. The raw image is in "satellite-perspective", not your typical "world map-perspective". &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg7xtcs6kjnai2okneev9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg7xtcs6kjnai2okneev9.png" alt="Satellite picture highlighting peripheral distortion" width="799" height="473"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Projection&lt;/strong&gt; (or geo-referencing) fixes this. We know the satellite's exact orbit and orientation for every scan line, so we can compute the true latitude and longitude that &lt;em&gt;each pixel&lt;/em&gt; is looking at, and re-draw the whole image warped onto a proper map grid. Suddenly the distorted coastline snaps onto the real coastline we're all used to seeing. It's one of the most satisfying picture upgrades of the project. (Tech-wise, the raw channel image is about 1568 px wide, the corrected composite is stretched to ~2800 px to undo the panoramic distortion, about 1.79× horizontal correction)&lt;br&gt;
Once every pixel has a real-world coordinate, a lovely thing becomes possible: you can put labels on it. &lt;/p&gt;

&lt;p&gt;I wrote 2 small scripts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;compute_barcelona_px.py&lt;/code&gt;: does the reverse of projection: given a place's latitude and longitude, it computes &lt;em&gt;which pixel&lt;/em&gt; that place is on. &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;add_map_overlay.py&lt;/code&gt;: uses it to drop city markers exactly where they belong: Barcelona on its cape, Madrid inland, Marseille and Rome and Algiers each pinned to the right dot. The map stopped being a pretty picture and became a &lt;em&gt;referenced&lt;/em&gt; one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step three: the flip&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;About half my images were coming out &lt;strong&gt;upside down and mirror-flipped.&lt;/strong&gt; I spent an evening convinced something was broken in my processing. But I would soon figure out that nothing was broken..!&lt;br&gt;
Remember that a polar satellite paints its image line by line as it flies, and that it can cross my sky in one of two directions: sometimes it's heading south (a "north-to-south" pass), sometimes north. When it flies the opposite direction, it paints the picture &lt;em&gt;in the opposite direction&lt;/em&gt; and because it's also looking out the other side, left-and-right swap too.&lt;/p&gt;

&lt;p&gt;The fix, once I understood it, was almost trivial: figure out which direction the satellite was traveling and flip the ones that need flipping. You can read the direction straight from the &lt;a href="https://api.n2yo.com/" rel="noopener noreferrer"&gt;N2YO API&lt;/a&gt; pass geometry, the azimuth where the satellite rises, and flip those frames 180°.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A key detail: I run two SatDumps.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SatDump is a wonderful, fast-moving project which sometimes means a feature you rely on is not or partially available in the build you're running. My main decoder is the latest version of SatDump, and it's so new the dev team haven't had the time to add the map-projection and geo-correction to it yet. So, to get properly projected maps, I installed a second, older build (&lt;strong&gt;v1.2.2&lt;/strong&gt;) alongside it, pinned purely for the projection step. Not the cleanest image processing flow, but it has the advantage of working for now 😬&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And then, the payoff.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With color, projection, and city labels all working, I could do the thing I'd secretly wanted since the first black frame: stack them. I built a little viewer (AI-assisted, more on that way of working later) that takes every pass from a day, projects them all onto the &lt;em&gt;same&lt;/em&gt; Barcelona-centered map, and plays them as a crossfading &lt;strong&gt;timelapse&lt;/strong&gt;. Fifty-two passes, the weather of a whole day flowing across a fixed map of my corner of the world, cities holding still while the clouds move over them.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/QJdPIwKNX7w" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🔧 Build notes: from gray scan to labeled map&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;False color:&lt;/strong&gt; in SatDump, the &lt;code&gt;321&lt;/code&gt; / &lt;code&gt;3a21&lt;/code&gt; composite maps &lt;strong&gt;ch3 (SWIR)→Red, ch2 (NIR)→Green, ch1 (visible)→Blue&lt;/strong&gt;. Great for separating vegetation (green), clouds (white/cyan), smoke (blue), and burn scars (dark). Composites are defined in &lt;code&gt;satdump_cfg.json&lt;/code&gt; under the instrument's &lt;code&gt;rgb_composites&lt;/code&gt;, each with an &lt;code&gt;equation&lt;/code&gt; like &lt;code&gt;"ch3, ch2, ch1"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Projection:&lt;/strong&gt; enable &lt;code&gt;geo_correct&lt;/code&gt; and &lt;code&gt;project&lt;/code&gt; (with &lt;code&gt;draw_map: true&lt;/code&gt;) in the composite config so SatDump warps the raw swath onto a real map grid and draws coastlines. Georeferencing is what makes labels and stacking possible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The 180° flip:&lt;/strong&gt; if half your passes come out upside-down-and-mirrored, that's &lt;strong&gt;pass direction&lt;/strong&gt; (ascending vs descending). I detect direction from the rise azimuth (&lt;code&gt;startAz&lt;/code&gt; between 90–270° = &lt;code&gt;NtoS&lt;/code&gt;) and store it as a &lt;code&gt;direction&lt;/code&gt; field in each pass's &lt;code&gt;meta.json&lt;/code&gt; and in &lt;code&gt;passes.json&lt;/code&gt;. Then I fix it in two places: the processing step rotates the &lt;code&gt;NtoS&lt;/code&gt; channel images 180° server-side with ImageMagick (&lt;code&gt;convert "$f" -rotate 180 "$f"&lt;/code&gt;), and the gallery also flips &lt;code&gt;NtoS&lt;/code&gt; frames for display with CSS &lt;code&gt;transform: scale(-1,-1)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Labels:&lt;/strong&gt; once projected, every pixel has a lat/lon, so you can go backwards, compute the pixel for any city's coordinates, and overlay markers. (My &lt;code&gt;compute_barcelona_px.py&lt;/code&gt; + &lt;code&gt;add_map_overlay.py&lt;/code&gt; do exactly this; I'll publish them with the rest.)
More details in &lt;a href="https://github.com/yannklein/satellite-images/tree/main/docs" rel="noopener noreferrer"&gt;this repo docs&lt;/a&gt;.
For the first time, the gallery looked like the thing I'd set out to make. Real color, real maps, my city labeled at the center. I could have stopped there. It was, by any reasonable definition, &lt;em&gt;done.&lt;/em&gt;
But there was that one limitation... the buildings around my rooftop that would prevent me from getting more than a thin band of Europe ground on my satellite pictures.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fadfmk7nutamk98q3pxbu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fadfmk7nutamk98q3pxbu.png" alt="Image band received from my Barcelona apartment" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapter 6: "What if there were a second antenna, in another country?"
&lt;/h2&gt;

&lt;p&gt;You can't move a building, I established that 🥲. So I stopped trying to fix my sky, and went looking for a different one.&lt;/p&gt;

&lt;p&gt;I have family in &lt;a href="https://en.wikipedia.org/wiki/Th%C3%A9ding" rel="noopener noreferrer"&gt;&lt;strong&gt;Théding&lt;/strong&gt;&lt;/a&gt;, a small town in the Moselle, in the northeast of France. Open sky, a real horizon, and the part that turns this from a hardware project into a story: &lt;strong&gt;my dad&lt;/strong&gt;, willing to be my teammate in this satellite adventure 1,000 km away.&lt;/p&gt;

&lt;p&gt;Here's how the collaboration actually works. I set up everything on the computer side from Barcelona, remotely, over SSH. My dad's job is the thing I &lt;em&gt;can't&lt;/em&gt; do from 1,000 km away: physically place and aim the antenna. And then, this is the cool bit, I created &lt;a href="https://satellite.sergeklein.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;his own copy of the gallery website&lt;/strong&gt;&lt;/a&gt;. He'll open and use it in his own browser, watch for the images to come in, and adjust his antenna based on what he sees. He is effectively the field operation engineer of the Théding satellite imagery ground station.&lt;/p&gt;

&lt;p&gt;The Théding station had one main constraint that taught me a lot about my system and how I would/could scale it further.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm2krh3xztvnfc31w7tqa.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm2krh3xztvnfc31w7tqa.webp" alt="Compaq Mini i386 laptop" width="474" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The machine in Théding is an &lt;strong&gt;old i386 netbook&lt;/strong&gt;, ancient and far far far weaker than even my resurrected MacBook. It cannot decode a satellite pass in any reasonable time. It can't run the projection step. It can't even run my usual trick of keeping an AI assistant on the machine to help me work on it, it's simply too underpowered to be a development environment at all. By every measure, it's the wrong computer for the job 😅.&lt;br&gt;
So I gave it exactly &lt;em&gt;one&lt;/em&gt; job.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Cool facts for the techies:&lt;/strong&gt;  the smart move with a weak remote node is to make it do almost &lt;em&gt;nothing&lt;/em&gt;, and push all the real work to wherever the compute actually lives. The Théding netbook does only this: when a pass is due, it records the raw radio samples to a file, writes a tiny sidecar of metadata (which satellite, what time, which direction), and reports back. That's it. The raw file gets pulled south, and my Barcelona homeserver decodes it, colors it, projects it, and publishes it to my dad's gallery, exactly as if the pass had happened on my own roof.&lt;/p&gt;



&lt;p&gt;And that design is &lt;em&gt;why&lt;/em&gt; the next detail matters so much.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Cool facts for the techies:&lt;/strong&gt; you can shrink your data roughly tenfold, by not sampling faster than you need to. In Barcelona, where the raw file never leaves the machine, I record at 2.4 million samples per second (&lt;code&gt;-s 2400000&lt;/code&gt;). In Théding, that same raw file has to travel 1,000 km across a netbook's modest home connection, so I record at &lt;strong&gt;250,000 samples per second&lt;/strong&gt; (&lt;code&gt;-s 250000&lt;/code&gt;) instead. That's about a &lt;em&gt;tenth&lt;/em&gt; the file size, and the beautiful part is that the images are just as good! METEOR's LRPT signal is only about 120 kHz wide. Sampling rate has to be at least twice the width of the signal you want to capture (a rule called the &lt;a href="https://www.dsprelated.com/foundations/sampling.php" rel="noopener noreferrer"&gt;Nyquist-Shannon theorem&lt;/a&gt;), so 250 kS/s covers a 120 kHz signal quite fine.&lt;/p&gt;



&lt;p&gt;The last question was how Barcelona even &lt;em&gt;talks&lt;/em&gt; to a netbook in France and this is where a trick I've been hinting since Chapter 4 finally earns its keep.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Cool facts for the techies:&lt;/strong&gt; normally, to reach a machine remotely, you'd need it to have a fixed address and open a port to the world, which is both a hassle (home IPs change) and a security liability (open ports get scanned and attacked). I used a &lt;strong&gt;Cloudflare tunnel&lt;/strong&gt; which inverts the flow: a small program on Théding's netbook makes an &lt;em&gt;outbound&lt;/em&gt; connection to Cloudflare and holds it open, and all my traffic reaches the netbook by riding &lt;em&gt;back down&lt;/em&gt; that connection the machine itself opened. The netbook in Théding is reachable from anywhere, and simultaneously invisible to the entire internet. From Barcelona, my server reaches it as simply as &lt;code&gt;ssh theding&lt;/code&gt;, and the tunnel does the rest underneath.&lt;/p&gt;



&lt;p&gt;So the full journey of a Théding pass looks like this: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;my homeserver, on schedule, reaches across the border through the tunnel and tells the netbook to record&lt;/li&gt;
&lt;li&gt;the netbook captures a lean 250 kS/s raw file and reports the path back&lt;/li&gt;
&lt;li&gt;the homeserver &lt;code&gt;rsync&lt;/code&gt;s that file to Barcelona and then the homeserver's typical decode-color-project-publish pipeline from the last three chapters runs on it, and a picture of the sky over France appears in my dad's gallery, and mine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As of September 2026, everything is up and running, but we are still searching for a good place to install the antenna in Théding. I hope to have nice pictures to show you soon.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🔧 Build notes: a second, remote capture site&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Split the work by where the compute is.&lt;/strong&gt; The remote node does the &lt;em&gt;minimum&lt;/em&gt;: record raw baseband, write a metadata sidecar, report the file path. All decoding/projection/publishing happens back on the capable machine. A weak remote box (mine's an i386 netbook) is fine, it's just a sensor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sample only as fast as the signal is wide.&lt;/strong&gt; METEOR LRPT is ~120 kHz wide, so &lt;strong&gt;250 kS/s&lt;/strong&gt; captures it fully (Nyquist-Shannon: sample ≥ 2× signal width). That's ~10× smaller than a 2.4 MS/s file, decisive when the raw has to travel over a modest remote connection. Locally, where the file never moves, 2.4 MS/s is fine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reach the remote site with a Cloudflare tunnel, not port-forwarding.&lt;/strong&gt; Run &lt;code&gt;cloudflared&lt;/code&gt; on the remote node; it dials &lt;em&gt;out&lt;/em&gt;, so you need no static IP and no open inbound ports (works behind NAT/CGNAT, survives IP changes, nothing exposed to attack). Then it's just &lt;code&gt;ssh &amp;lt;alias&amp;gt;&lt;/code&gt; from home.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The n8n hop, honestly:&lt;/strong&gt; n8n runs on the homelab and reaches the remote site through a normal SSH host alias (&lt;code&gt;ssh theding&lt;/code&gt;, with the tunnel configured underneath in &lt;code&gt;~/.ssh/config&lt;/code&gt;). It records remotely, then &lt;code&gt;rsync -e ssh theding:$RAW $LOCAL&lt;/code&gt; pulls the file home for decoding. Keeping the far node dumb also keeps this dead simple.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Develop remotely.&lt;/strong&gt; I edit the far site's code from my laptop with &lt;a href="https://code.visualstudio.com/docs/remote/ssh-tutorial" rel="noopener noreferrer"&gt;VS Code's remote-SSH&lt;/a&gt; over the same tunnel, the netbook is too weak to host a real dev environment itself, but it doesn't need to; the files feel local, the machine just holds them.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now I had two potential skies. An open one in France and a boxed-in one in Barcelona, both feeding the same pipeline, both publishing to galleries anyone could visit. The project had become a small, distributed, two-country ground station, something I never imagined building in the first place 🚀.&lt;/p&gt;

&lt;p&gt;And I could, at last, have stopped.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;But there was a whole other kind of satellite I still couldn't touch: one that never moves at all.&lt;/em&gt;&lt;/p&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapter 7: Where it stands
&lt;/h2&gt;

&lt;p&gt;It is time to officially present the final version of my &lt;a href="https://satellite.yannklein.dev/" rel="noopener noreferrer"&gt;Satellite image gallery&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A work that doesn't look fancy at all. A work that many don't understand (countless people asked me why I was doing that). But a work that taught me a lot, that made me dream of space a bit, that made me feel that I could do a lot with few resources and a bit of ambition.&lt;/p&gt;

&lt;p&gt;Each chapter of this epic took quite some time, hours of frustrations, of research. I used countless workarounds to make up for my very poor setup (I am working with an old TV dongle and two outdated laptops after all..!). I loved/hated every minute of it!&lt;br&gt;
And the machine keeps running. I don't &lt;em&gt;do&lt;/em&gt; anything now, the whole loop runs on its own. Passes are predicted, the radio is freed up, the recording starts, the decode runs, the images get colored and projected and flipped and published, all unattended, on a schedule, at both sites. I wake up to new pictures of the Mediterranean I did nothing to earn that morning. I am now in a situation where I actually ask myself what I should do with all these pictures..! &lt;/p&gt;

&lt;p&gt;Over more than 3 months, it has filled a gallery that anyone can open right now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Barcelona:&lt;/strong&gt; &lt;a href="https://satellite.yannklein.dev" rel="noopener noreferrer"&gt;satellite.yannklein.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Théding&lt;/strong&gt; (my dad's sky): &lt;a href="https://satellite.sergeklein.com" rel="noopener noreferrer"&gt;satellite.sergeklein.com&lt;/a&gt; &lt;em&gt;(live, but still empty,the antenna is not installed yet)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But I promised you at the start that this saga isn't finished, and I meant it.&lt;/p&gt;

&lt;p&gt;Everything I've built chases satellites that &lt;em&gt;move&lt;/em&gt;, that rise, arc over, and set inside ten minutes. But there's a whole other population up there that does something my polar satellites never do.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;They hold perfectly still.&lt;/strong&gt;&lt;/p&gt;


&lt;br&gt;

&lt;h2&gt;
  
  
  Chapter 8: "What if I could catch a satellite that never moves?"
&lt;/h2&gt;

&lt;p&gt;Everything so far has been about &lt;em&gt;chasing&lt;/em&gt;. Polar satellites are fast, low, and gone in ten minutes. The entire architecture, the prediction, the timed recordings, the flip logic, exists to catch their ephemeral passes. But the most spectacular weather imagery in the world doesn't come from those. It comes from satellites that hang &lt;strong&gt;motionless&lt;/strong&gt; over the equator, 36,000 km up, staring at an entire hemisphere at once, all day, every day.&lt;/p&gt;

&lt;p&gt;I wanted one. Specifically, I wanted &lt;strong&gt;Elektro-L&lt;/strong&gt;, Russia's geostationary weather satellites, the only one to broadcast their imagery unencrypted on the &lt;strong&gt;L-band, around 1691 MHz&lt;/strong&gt;. It broadcasts a full-disk view of the Earth, the kind where you see a whole quarter of the planet turning under its weather in a single frame.&lt;/p&gt;

&lt;p&gt;And catching a satellite that never moves is, in one crucial way, &lt;em&gt;easier&lt;/em&gt; than catching one that does. There is no pass, it is always out there. You just need to point a dish (remember those satellite TV dishes?) at one spot in the sky, the exact spot the satellite is parked and &lt;strong&gt;never move it again&lt;/strong&gt;. So I got the hardware: a &lt;a href="https://www.crowdsupply.com/krakenrf/discovery-dish" rel="noopener noreferrer"&gt;&lt;strong&gt;Discovery Dish&lt;/strong&gt;&lt;/a&gt;, a small parabolic dish with an L-band feed tuned for the ~1.7 GHz band.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe6idxemhvtjr5lmdzf4d.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe6idxemhvtjr5lmdzf4d.jpg" alt="Discovery Dish" width="800" height="861"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There was just one problem, and it's a big one.&lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Cool facts for the techies:&lt;/strong&gt; western Europe currently has &lt;em&gt;no&lt;/em&gt; working unencrypted geostationary weather satellite to receive. The slot that covers my part of the world, 14.5° West, out over the Atlantic, is held by the older &lt;strong&gt;Elektro-L2&lt;/strong&gt;, but &lt;strong&gt;its L-band transmitter died from a power-supply failure&lt;/strong&gt;. It's still up there, but silent on the frequency I can receive.&lt;/p&gt;



&lt;p&gt;But here is why I bought the dish despite this frustrating fact:&lt;br&gt;
There's a newer satellite, &lt;strong&gt;Elektro-L5&lt;/strong&gt;, launched in February 2026. As of early August 2026 it has become operational in the &lt;strong&gt;76° East&lt;/strong&gt; slot: over the Indian Ocean, too far from me for now. But its arrival is a blessing for me: it frees up the satellite that &lt;em&gt;used&lt;/em&gt; to hold 76°E, &lt;strong&gt;Elektro-L3&lt;/strong&gt;, to relocate. And L3's newly-assigned destination is &lt;strong&gt;14.5° West&lt;/strong&gt;, my slot 🎉.  When L3 arrives, western Europe gets its unencrypted geostationary L-band back for the first time in years, and my dish will finally have something alive to listen to.&lt;br&gt;
So how does a satellite that's supposed to &lt;em&gt;never move&lt;/em&gt; get from one side of the planet to the other? &lt;/p&gt;



&lt;p&gt;🤓 &lt;strong&gt;Cool facts for the techies:&lt;/strong&gt; you move a geostationary satellite by deliberately putting it in the &lt;em&gt;wrong&lt;/em&gt; orbit, briefly. A satellite sits still relative to the ground only because its orbit is tuned so its speed exactly matches Earth's rotation. Raise it into a slightly &lt;em&gt;higher&lt;/em&gt; orbit and it now travels a longer loop at a slower pace, so it falls behind the Earth's spin and from the ground it appears to &lt;strong&gt;drift westward&lt;/strong&gt;, a little each day. You let it coast at that higher altitude, drifting, until it's over the longitude you want. Then you &lt;em&gt;lower&lt;/em&gt; it back to the exact geostationary altitude, its speed re-matches the Earth, and it locks into place at its new home. You don't fly it sideways across the world. You lift it, let the planet turn under it, and set it back down.&lt;/p&gt;



&lt;p&gt;We know exactly what this looks like because L3 is about to retrace a path its sibling already took. When &lt;strong&gt;Elektro-L1&lt;/strong&gt; made this very same 76°E → 14.5°W journey in 2016, it was raised about &lt;strong&gt;289 km&lt;/strong&gt; higher than geostationary altitude, which set it drifting west at &lt;strong&gt;2.03° per day&lt;/strong&gt;. The trip took roughly &lt;strong&gt;45 days&lt;/strong&gt;, after which controllers gradually lowered it, until it parked precisely at 14.5°W and stopped. L3 is expected to do the same thing: a slow, deliberate, weeks-long slide across the sky, propelled by nothing more dramatic than &lt;em&gt;being slightly too high and letting the world spin beneath it.&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;As I write this, L3 hasn't left yet.&lt;/strong&gt; I can see it in my satellite tracker, and it's sitting &lt;em&gt;right next to L5&lt;/em&gt;, the two of them side by side over the Indian Ocean. Any day now, L3 will fire its thrusters, nudge itself into that slightly-too-high orbit, and begin the slow westward crawl toward the empty slot over the Atlantic, toward &lt;em&gt;me&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/editor/yannklein/embed/01a02119-7a99-784e-aefe-2eaf94b6bed0?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;So, as of today, my dish is aimed at an empty patch of sky over the Atlantic, waiting for L3 🛰️. &lt;/p&gt;


&lt;br&gt;


&lt;h2&gt;
  
  
  Epilogue: The road ahead
&lt;/h2&gt;

&lt;p&gt;Every chapter of this has ended with a &lt;em&gt;what if&lt;/em&gt; that pulled me into the next one, so it would be dishonest to end the article as though the questions have run out. They haven't. Here's what's still open as I write.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The obvious one: I'm waiting for a satellite.&lt;/strong&gt; Elektro-L3 is still parked next to L5 over the Indian Ocean, and until it fires its thrusters and makes the six-week crawl west, my dish stares at an empty patch of Atlantic sky. That's the cliffhanger I genuinely cannot resolve on any schedule but the satellite's.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My dad's antenna still needs a permanent home.&lt;/strong&gt; The netbook has to stay dry and sheltered; the antenna has to live outside with a clear view. Turning that into a weatherproof, doesn't-need-a-ladder installation in a garden in the Moselle is the next real, physical job and it's why his gallery is still empty.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And there's a fork in the road I haven't chosen.&lt;/strong&gt; That fixed dish could become something more ambitious. METEOR doesn't only broadcast the low-resolution LRPT I've been catching on 137 MHz, it &lt;em&gt;also&lt;/em&gt; transmits a much higher-resolution image called HRPT, up on L-band, near 1700 MHz, right in the dish's range. The catch is that METEOR &lt;em&gt;moves&lt;/em&gt;, so to receive its L-band signal I'd need to physically track it across the sky, which means a &lt;strong&gt;motorized az/el rotator&lt;/strong&gt;. There are cheap-ish options now (the portable &lt;a href="https://www.tindie.com/products/johnnywu/the-antrunner-rotator/" rel="noopener noreferrer"&gt;AntRunner&lt;/a&gt; runs about €300 landed).&lt;/p&gt;

&lt;p&gt;The point of a project like this was never to finish it. It was to keep finding the next question worth chasing. I started with a bit of wire and a black rectangle, and I ended (&lt;em&gt;haven't&lt;/em&gt; ended) with a two-country ground station, a dad in France, and a spacecraft drifting slowly toward a dish that's already pointed at where it's going to be. If you want to see how it turns out, the galleries update themselves, and so, eventually, will this story.&lt;/p&gt;

&lt;p&gt;The sky's still broadcasting. I'll keep listening.&lt;/p&gt;


&lt;br&gt;


&lt;h2&gt;
  
  
  Want to build your own?
&lt;/h2&gt;

&lt;p&gt;If any of this made you want to catch a satellite, here's the shortest honest path from nothing to your first image. (The advanced two-site, automation, and projection pieces live in the chapters above and in &lt;a href="https://github.com/yannklein/satellite-images/tree/main/docs" rel="noopener noreferrer"&gt;the companion repo&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Buy the starter hardware (~€60–100).&lt;/strong&gt; An &lt;a href="https://www.rtl-sdr.com/rtl-sdr-blog-v-3-dongles-user-guide/" rel="noopener noreferrer"&gt;&lt;strong&gt;RTL-SDR Blog V3&lt;/strong&gt;&lt;/a&gt; dongle with its telescopic &lt;strong&gt;dipole kit&lt;/strong&gt;, and the moment you're past your first attempt, a &lt;a href="https://www.nooelec.com/store/sdr/sdr-addons/sawbird/sawbird-plus-noaa-308.html" rel="noopener noreferrer"&gt;&lt;strong&gt;Nooelec SAWbird+ NOAA&lt;/strong&gt; LNA&lt;/a&gt; (~€50) to mount at the antenna. That's the whole radio.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Build the V-dipole properly.&lt;/strong&gt; Each arm &lt;strong&gt;53.4 cm&lt;/strong&gt;, &lt;strong&gt;120°&lt;/strong&gt; between them, laid &lt;strong&gt;flat/horizontal&lt;/strong&gt;. Give it the most open north–south sky you can. This one step is the difference between a black frame and a real image. (Chapter 2.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Put the SAWbird at the antenna, not the radio.&lt;/strong&gt; Power it via the dongle's &lt;strong&gt;bias tee&lt;/strong&gt;. Amplify &lt;em&gt;before&lt;/em&gt; the cable loss, never after. (Chapter 3.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Install &lt;a href="https://www.satdump.org/" rel="noopener noreferrer"&gt;SatDump&lt;/a&gt; and predict a pass.&lt;/strong&gt; Use any pass predictor (N2YO, or apps like Look4sat / SDR++'s tracker) to find when &lt;strong&gt;METEOR-M2-3 or M2-4&lt;/strong&gt; (≈&lt;strong&gt;137.9 MHz&lt;/strong&gt;) next crosses your sky.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Record, then decode.&lt;/strong&gt; Capture the pass to a raw file, then run SatDump's METEOR LRPT pipeline on it:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;   rtl_sdr &lt;span class="nt"&gt;-f&lt;/span&gt; 137900000 &lt;span class="nt"&gt;-s&lt;/span&gt; 2400000 &lt;span class="nt"&gt;-g&lt;/span&gt; 20 pass.raw
   &lt;span class="c"&gt;# after the pass:&lt;/span&gt;
   satdump pipeline meteor_m2-x_lrpt baseband pass.raw ./decoded &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;--samplerate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2400000 &lt;span class="nt"&gt;--baseband_format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;cu8 &lt;span class="nt"&gt;--fill_missing&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Expect the first one to be bad.&lt;/strong&gt; A weak or black first image isn't failure. Iterate. The whole hobby is in the iterating.
That's it. Everything else in this article: the automation, the second country, the color, the projection, the timelapse is just what happens when you can't stop asking &lt;em&gt;what if.&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;br&gt;


&lt;h2&gt;
  
  
  Resources &amp;amp; links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SatDump&lt;/strong&gt;: decoding/projection Swiss-army knife: &lt;a href="https://www.satdump.org/" rel="noopener noreferrer"&gt;satdump.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RTL-SDR Blog&lt;/strong&gt;: dongles, the V-dipole guide, and the best news source for this hobby: &lt;a href="https://www.rtl-sdr.com/" rel="noopener noreferrer"&gt;rtl-sdr.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nooelec SAWbird+ NOAA&lt;/strong&gt;: the 137 MHz LNA: &lt;a href="https://www.nooelec.com/store/sawbird-plus-noaa.html" rel="noopener noreferrer"&gt;nooelec.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KrakenRF Discovery Dish&lt;/strong&gt;: the L-band dish for geostationary/HRPT: &lt;a href="https://www.krakenrf.com/" rel="noopener noreferrer"&gt;krakenrf.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;N2YO&lt;/strong&gt;: pass predictions &amp;amp; live tracking (METEOR-M2-3 = NORAD 57166, M2-4 = 59051): &lt;a href="https://www.n2yo.com/" rel="noopener noreferrer"&gt;n2yo.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My galleries&lt;/strong&gt;: Barcelona: &lt;a href="https://satellite.yannklein.dev" rel="noopener noreferrer"&gt;satellite.yannklein.dev&lt;/a&gt; · Théding: &lt;a href="https://satellite.sergeklein.com" rel="noopener noreferrer"&gt;satellite.sergeklein.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Companion repo&lt;/strong&gt; &lt;em&gt;(the pipeline, n8n flows, SatDump config, the projection/overlay scripts, and setup notes)&lt;/em&gt;: &lt;strong&gt;&lt;code&gt;github.com/yannklein/satellite-images/tree/main/docs&lt;/code&gt;&lt;/strong&gt; &lt;em&gt;(going up alongside this article)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>rtlsdr</category>
      <category>n8n</category>
      <category>satellite</category>
      <category>space</category>
    </item>
  </channel>
</rss>
