Selfies from space: downlinking imagery from NOAA satellites

How to pull imagery from space on a budget!

Peter Barrett Bryan
4 min readJan 30, 2022

I’m passionate about radio. A couple years ago, I decided I wanted to understand how satellites could encode image data in the transmissions they sent back to Earth. I found a set of satellites to experiment with! Three NOAA APT (automatic picture transmission) satellites regularly transmit images, and the signals are unencrypted for public use.

I’ll walk through the steps, so you can start downlinking images of your own. To motivate this tutorial, let’s take a peek at the sort of awesome images we can grab from space!

Sample decoded image of the East Coast. Image by author.

Prerequisites

I receive no advantage from the linked products, monetary or otherwise. These just happened to be the resources I used when I was searching for solutions. If you find better or cheaper hardware, please respond in the comments!

Hardware

It doesn’t require much! I’m starting off from an old Dell that lived a happy life as a home PC. If you don’t happen to be a ham radio enthusiast, the rest will set you back a couple bucks!

  • Laptop with a fresh installation of Ubuntu 20.04.3 LTS, 7.5GiB memory, Intel i5, 64-bit, 256GB.
  • A software defined radio. I chose RTL-SDR (~$40), but I have no experience with other products.
  • An antenna! I went with a simple discone (~$60) that I had on hand for other projects. It isn’t optimal, though. If you are in the mood for some tinkering, try a quadrifilar helicoidal antenna!
  • Bonus equipment: FM block (~$16) and/or NOAA specific bandpass filter (~$40) in case you are trying to downlink in a place with lots of radio interference (like me in Philly!).

Software

Configuration

Installation of CubicSDR is easy! We’ll need it to interface with our SDR.

When we open CubicSDR, we’ll want to pick the local device with “SDR” in the name. In my case, the local device named “Generic RTL2832U OEM :: 00000001.”

Collection

Making a decent collection takes a bit of work. We have three satellites to choose from:

  • NOAA 15: center frequency 137.620 MHz
  • NOAA 18: center frequency 137.9125 MHz
  • NOAA 19: center frequency 137.100 MHz

We’ll need to find a pass of one of these satellites that is relatively high in the sky (as far above the horizon as we can get!) to setup our antenna. Using Orbitrack, we can see how the satellite will pass in the future. I’m most excited by images when I can see a long stretch of coastline, so I also look at weather forecasts.

During our collection, we’ll want to choose the center frequency corresponding to the satellite we are trying to downlink from. We should set the bandwidth to roughly 34 kHz. A sample rate of ~1024Mhz should be sufficient.

The actual collection is pretty easy! We’ll kick off recording as the satellite passes above the horizon and continue collecting until the satellite sets.

I spent an unreasonably long time making collections with way, way too much noise. I’d strongly recommend taking a listen or viewing the waterfall plot for one of my sample files. If there is substantially more noise, you can expect a substantially worse image!

Decoding

If you’ve used WXtoImg, there isn’t much to do! For any other software, though, you’ll need to point the software at the recorded sample.

Debugging

I’ll continue to add to this section! Please comment if you experience any snags.

Successful decoding but poor image quality

To get the image I posted above, I used the two filters I linked under hardware. Additionally, I tried to get some distance between the city and me; I recorded from Valley Forge, PA. These common sense strategies to decrease noise worked great for me.

Also, check your connections! In two of my less successful collections, I rushed before a satellite pass and a few of my contacts were loose.

“Ticking” in audio file speeds up and slows down

The demodulated FM as an audio file should sound like a high pitched tone with a regular metronome clicking. If the clicking seems to accelerate and then decelerate dramatically, your computer might be struggling to keep up with your selected sample rate!

A sample rate of ~1024Mhz should be fine, and more isn’t always better. If the sampling rate is too high, you might get dropped samples as your computer races to keep pace.

Give the article a clap if the repo or text were valuable to you! Thanks for reading! I’d like to write an article about the encoding of NOAA data in the future, like if you are interested.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Peter Barrett Bryan
Peter Barrett Bryan

Written by Peter Barrett Bryan

Software engineer with specializations in remote sensing, machine learning applied to computer vision, and project management.

Responses (1)

Write a response