Receiving and Decoding NOAA Weather Satellite Transmissions
Written by
Categories: Uncategorized

Receiving and Decoding NOAA Weather Satellite Transmissions

View Project Code on GitHub

In attempting to find ways to pass the time between my high school graduation and leaving for college, I stumbled upon a rabbit hole that would ultimately prove to be highly influential to my future interests in the field of RF and amateur radio. I had always been aware of the existence of weather satellites, constantly imaging the surface of the Earth to provide us with hourly updates of its state, however I always assumed that the only groups capable of receiving their transmissions were those that put them into orbit in the first place. Oh, how wrong was I. One day, after wondering as to how these images were transmitted, I discovered that it was in fact possible for an amateur to pull images off of orbiting satellites. I knew I had to try this myself.

The first piece of equipment I would need in my arsenal was a small USB SDR (software-defined radio). In recent years, a group of hobbyists had discovered that cheap digital TV tuner chips could be used as radio receivers for the entirety of the VHF and UHF frequency bands. By implementing the demodulation stage digitally, as opposed to in hardware, you could decode almost any radio transmission, provided you had the right antenna and software for the job.

After procuring my SDR for a measly $25 online, the next stage of the project would not be so simple. In order to actually receive images, I would have to build my own antenna. Doing this required an understanding of not only the basics of wave propagation and antenna design, but also the specific types of waves I would be receiving from the satellites as they passed overhead. American NOAA and Russian Meteor satellites transmit at around 137 MHz, or right below the 2M amateur radio band in the US. In theory this means that I could have bought a regular VHF antenna for amateur radio work and connected it directly to the SDR, but the reality was more complex.

If I were to go with a simple dipole or monopole antenna, I would almost certainly not have enough antenna gain to receive a good image. The satellites’ VHF transmitters are not very powerful, clocking it at only around 6 Watts at full power, which is weaker than most ham radio gear. Instead, I was left with three particular antenna options: a Yagi, a Turnstile, or a Lindenblad antenna.

Yagi-Uda arrays, or Yagis as they are known by most, are simply arrays of dipole antennas with one driven element and many non-conducting “parasitic” elements. The parasitic elements direct and reflect incoming radio waves into the driven element in a manner that amplifies the directional gain of the antenna. This results in a stronger signal as it rejects radio waves from outside of the antenna’s field of view and focuses waves coming from the direction in which it points. However, this is also its downside. In order to get a good signal from the satellite, the antenna must be pointed within a few degrees of its target at all times. Many amateurs who “work satellites” in this way often lose track of the satellite and have to reacquire it over the course of its pass. I wanted an option that didn’t have to target the satellite directly at all times, leaving me with two other options.

Before we get into the last two antenna designs however, it is important to understand how the waves emitted from the satellite travel. Normally, radio waves emitted from a standard dipole antenna are linearly polarized, meaning that the emitted radio wave travels in a flat plane through space aligned to the direction of the transmitting antenna. This is usually acceptable for basic radio applications, but falls short when the transmitted wave may need to penetrate through objects that are semi-opaque to radio waves. This is where circular polarization comes in. By rotating the transmitted wave about an axis parallel to the direction of transmission, you create a circularly polarized wave, which has much greater penetration through potential obstacles on the way to a receiver. Hence, we may build a receiving antenna that takes advantage of this fact.

The two omnidirectional antennas most commonly used by amateur satellite hunters: Turnstiles and “double-cross” Lindenblads, are very similar in design. Both are designed for transmitting and receiving circularly polarized waves by nature of the fact that they have multiple driven elements that are 90 degrees out of phase from one another. By doing this, the antenna reconstructs the circular wave back into a signal that can be processed by a receiver. For my antenna, I chose to build a Lindenblad as it has been claimed to have less nulls in its reception when compared to a Turnstile, and its radiation pattern is focused skyward, which means that it will only be good at receiving signals located overhead, where the satellites are. The wiring diagram for such an antenna is shown below:

Constructing the dipole required manufacturing four identical dipole antennas cut to be resonant at 137 MHz. Since dipoles are resonant at half their receiving wavelength, we simply apply the following formula to get the desired length in meters:

\(\Large l = \frac{c}{2f} \cdot 0.95\)

We multiply the theoretical wavelength of an ideal dipole by 0.95 to compensate for the “end effect”, where the inherent capacitance of a given dipole reduces its resonant frequency by a certain amount. I decided to make my dipoles out of 1/4” copper pipe as it was readily available at my local Home Depot and easily compatible with the PVC pipe I would be using for the rest of the build. I used pipe solder and a blowtorch to affix the screw adaptors to each of the 8 pipe lengths. To attach the feedline, I drilled holes near the base of each tube where I inserted screws that would hold down spade lugs connected to the feed coax.

In order to connect the four dipoles together, I connected them each to a length of 1/4” PVC and joined them together at a piece of 5-way furniture PVC. In order to make sure the antenna properly receives the circularly polarized signal, we must ensure that two of the four dipoles are 90 degrees out of phase with the other two. In order to do this, we must also compensate for the velocity factor of the coaxial cable. Because signals travel slower in coax than in vacuum or air (about 65% as fast), this must also be taken into account when calculating our phasing length, using this formula:

\(\Large l = \frac{0.65 \cdot c}{4f}\)

After finishing assembly of the phasing hardware, I ran into a problem where the center conductor and ground sheath of the coax were shorted together, hence I would only get a signal when I connected the antenna through the center pin. I ended up re-doing the entire wiring harness on protoboard instead, insulating it with liquid dielectric and electrical tape. This undoubtedly had some negative effects on my transmission line impedance matching, although I wasn’t massively concerned since I would only ever be receiving signals with this antenna. In this configuration, I finally got good signal from the antenna as expected. However, I still had a problem where the single tube of PVC I was using to mount the antenna was too flimsy to support it in open air without collapsing. To rectify this, I used some more 1” PVC and toilet flanges to attach the antenna to a wooden base with 3 points of contact. The completed antenna is shown below:

Finally, it was time to try receiving some satellites. I used the site n2yo.com to get pass data for each individual satellite, though I found it rather inefficient to have to go to each individual weather satellite’s page in order to get pass times for that day. So instead, I created my own script to collect pass data for all desired satellites in one place using n2yo’s own API. Additionally, I also made a script to print out the elevation and azimuth of a given object in real time to better track them as they flew overhead:

My first attempts at receiving satellites were successful in that I was able to clearly detect and hear the APT signal coming from the NOAA satellites as they passed overhead. However, I accidentally had my recording settings in AirSpy set to capture the entire baseband as opposed to only the audio of the APT signal, hence their data was ultimately unusable. After fixing this and recording some passes the next morning, I finally got my first discernable image:

A month’s work finally paid off! A few interesting things to note here. You may notice the bands of static across most of the image. Those are actually caused by the 60 Hz AC noise from transmission lines. The house I was living in at the time had a big transmission line running through the neighborhood about 100 meters away from my antenna’s location. Since APT has a scan rate of 2 lines per second, you can verify this by counting the lines and seeing that there are 30 in total. Second, I originally had no reference for the scale of a given NOAA satellite image, so my brain had a hard time discerning what specific part of land was in this image. However, upon further investigation, I realized that the image was actually upside-down and was depicting almost the entire pacific coast all the way into Canada. It is perhaps humbling to remember that our entire concept of right side up as it relates to the Earth is entirely arbitrary and was based on the whims of a few mapmakers many centuries ago.

Another interesting sidenote is that the satellite NOAA 15 was experiencing difficulties with its scanning motor for its APT system at the time I was receiving satellite images. Many members of the amateur satellite community expected that it would soon die completely, adding a sort of rarity to my own captures. Ultimately, NOAA 15 prevailed over its hardware difficulties and is still operating as of 2021 – a testament to the resilience of this hardware. Below is a “glitchy” capture from NOAA 15 during this time, illustrating its malfunctioning imager:

While I did attempt to capture digital images from the Russian Meteor satellites, conditions did not prove favorable as their passes were either too low to get a good signal or overlapping with NOAA passes during the period of time that I was listening. Coincidentally enough, in 2020 Meteor M-2 2 actually suffered an impact to its thermal control system which knocked its imaging system offline for good. This was likely from a piece of space debris, illustrating the real danger posed to our orbital infrastructure if we let this problem get any more out of hand.

Overall, I found this project to be highly interesting and inspirational to me. My hope is that this blog post could help serve as a guide to any other individuals wishing to replicate my results. It’s pretty amazing to download an image from an actual orbiting satellite all on your own.