Receiving weather satellite images with Softrock

One of my first NOAA APT satellite images! (click to learn more)

The National Oceanic and Atmospheric Administration (NOAA) manages a few satellites in low earth orbit.  There are three actively transmitting APT signals at the moment, NOAA15, 17, and 18.  Each of these satellites passes overhead a few times a day.  I’ve been interested in learning how to receive their signals for a while now, and I’ve finally succeeded!


A bit ago, I bought a “SoftRockSDR (Software Defined Radio, read the excellent 3-part article by Bob Larkin at the ARRL site.) receiver kit from Tony Parks.  (A note about his site, he puts a few kits up for sale a few times a month, so he’s almost always sold out.)  I think SDR is really, really interesting.  I don’t want to get too bogged down in the details of it, because it’s not the point of this post, but I’m going to briefly discuss it.  Basically, the idea is that you want to have some minimum amount of electronics to deal with the antenna; letting your computer handle the rest.  This can take a variety of forms, but the simplest is the QSD, or Quadrature Sampling Detector.

Source: Gerald Youngblood’s article “A Software-Defined Radio for the Masses, Part 1.” Click image for source

It sounds complex, but it’s quite like using a strobe light to look at a spinning wheel.  The bright light of the strobe “samples” the world at a given interval.  If it strobe rate matches the speed of the wheel, the wheel appears still.  Stretching the analogy a bit further, imagine that information is written on the wheel.  Using the strobe you can read it, even if it’s spinning.  While that is an awful analogy, but the idea is that we can sample the radio signal at (nearly) the same frequency as the carrier of our desired signal.  When we do this, the signal we want magically appears at the output.  If we’re using AM (or its derivatives such as LSB or USB) we can even listen to it directly.  It only gets a bit more complex when we consider the quadrature part.  Quadrature just means “90 degrees out of phase.”  Using another copy of the radio signal, and a sampling clock in quadrature, we can cancel out some noise and interfering signals.  Sorry for the tangent, if you read this far (without falling asleep), I recommend you read the linked articles at the top of this paragraph.  The math isn’t too hard, and it’s sooo powerful!

Softrock Ensemble Receiver (click image for source)

This isn’t an image of my SoftRock, it’s a slightly different version, but I don’t have an image handy.  It’s a really easy kit to build, and it’s fairly inexpensive.  More than that, it’s really easy to use.  Once it’s all setup, you just attach it to your computer, power it, and install the antenna!

Once you’ve attached the receiver hardware to your computer, you need some software to use it.  This is an image I took of a very well written SDR program on the Mac called DSP Radio.  On the left side of the spectrum window, there is the live radio spectrum coming from the satellite.  The green box around it represents the bandwidth of my software radio receiver.  In a traditional radio, this bandwidth would be set by a filter circuit.  Most communication radios only have about 15 kHz of bandwidth.  This makes them unable to properly receive satellite weather images.  Traditionally, you would have to build or buy a specially-built satellite receiver.  With SDR, I can move a slider to scale the bandwidth way, way up!  In this case, I’m using about 37 kHz of bandwidth!  Notice that there’s all this empty space on the right, this is radio spectrum that I’m receiving, but there’s nothing there.  Maybe you can notice the shadow of the satellite data on the right; this is an “image.”  These images are the bane of all radio designers.  The true test of a receiver (other than sensitivity) is how well these images are suppressed.  In this case, they’re suppressed rather well, notice how bright the lines are on the left compared to the right.

Signal flow from RF to weather image

The DSP Radio program takes the signals from the Softrock through the audio input of the computer.  When you have something tuned in through its interface the demodulated signal appears at the audio output.  I’ve been recording these signals as well as passing them to another program called WXtoIMG.  This program is not great, I’ll be honest.  It’s barely maintained, and you can tell it’s an ugly cross-platform mess.  To even get it to work is tricky.  But, what it does, it does well.  The image at the head of this post was generated using it.  When I made that image, I literally had to connect the audio out of one computer to the audio in of another.  I’m not sure how I’m going to get around that issue.  It can accept data in the form of wav files, provided that they’re linear PCM sampled at 11,025 Hz with at least 16 bit samples.  The problem is that the nice political boundaries, lat/lon lines and ground image comes from the program.  It does this by computing the location of the satellite and where on the earth its photographing.  It has to decode the audio in real time for this to work, which means that I can’t use an audio file.  For you to play around with, if you wish, I’ve included a sample wav file.  It starts before the satellite pass and ends after, so if begins and ends with static.

NOAA15-baseband.wav (large file warning: 28 MB)

The included audio can be used to create the image below.  I used WXtoImg to generate it, though the open source WXAPT could be used under Linux.  This image was taken when the satellite was traveling south-north, so I had to flip it vertically and horizontally.  On the right side of the image is the A channel, which is visible light, and the left side is the B channel, infrared.  Normally, these channels are reversed left-to-right.  The stripes and color bars help the decoder line up the image and adjust brightness, contrast, and gamma. (Right-click here to download full-size image: 2080 x 1260 pixels)

(lightly) processed image from NOAA 15 audio file

My next step is to write some shell scripts on a Linux box to automate this whole process.  My goal is to have a page that has the latest satellite image and an archive available at all time.  But first, I have to write a post about the antenna I built to receive these signals.  Stay tuned!

, , , , , , , , , , ,

  1. #1 by Francisco Guzman on October 20, 2011 - 8:27 pm

    Great write up. I have been looking for a way to connect with my brother who has recently begun college and is hoping to be a meteorologist. I’m more of an electronics nerd and this seems great middle ground. Tony Parks may as well consider you his best salesman. Can’t wait to try to put this together. I am looking forward to your write up on the antenna. Keep up the great work.

  2. #2 by hpux735 on October 20, 2011 - 9:00 pm

    Thanks! Tony seems like a great guy. I can’t imagine he’s making much money on those kits. I’m waiting to put the antenna on my barn before writing it up, I’m thinking this weekend. It’s pretty easy to do. You can get almost everything for the antenna at Home Depot, probably the only exception is the coax cable.

    Also, I should mention that I know there’s a way to do all of it on Windows, but I don’t really use it so I don’t know how off hand.

  3. #3 by SGE on October 21, 2011 - 12:13 pm

    You should check out the GNU/GPL APTDecoder software package at:

    It is PC software, but it has a huge number of features including great web publishing.

  4. #4 by hpux735 on October 21, 2011 - 12:17 pm

    That looks pretty good, thanks! Is it compatible with Jack, do you know?

  5. #5 by Drake Anubis on October 21, 2011 - 9:31 pm

    Looks great! So did you use the Softrock Ensemble kit from Tony in the 2 meter configuration? 137Mhz is technically outside the 2 meter band, but I’m guessing the radio didn’t have any trouble with it? Or did you use a different kit? Whatever you did it worked well 🙂

  6. #6 by hpux735 on October 21, 2011 - 9:43 pm

    Yep, you got that right, the 2M version. I did some testing with it all around 100 Mhz. It’s front end can actually be tuned pretty far. I did a write up of that, too.

  7. #7 by jonnie on October 23, 2011 - 10:22 am

    You should be able to get around the need to pipe audio from one box to another using Soundflower from the clever people at Cycling74, who make Max/MSP.

    It is basically a software patch bay allowing you to transparantly pipe audio from one app to another by acting as a virtual audio interface. Other solutions exist for other OSs, such as

    Nice work on the article!

  8. #8 by hpux735 on October 23, 2011 - 11:51 am

    I tried that. Unfortunately, WXtoIMG doesn’t use any standard hooks into the MacOS sound system, so it completely ignores whatever Soundflower does. Even if I set sound flower as the default system input. Audacity, though, works just fine with it.

  9. #9 by Mark on November 1, 2011 - 7:52 pm

    I did this with a team for my senior Electrical Engineering project. It’s pretty fully documented at

    We used a homemade antenna, a receiver and custom matlab code to decode the signal.

  10. #10 by hpux735 on November 1, 2011 - 8:01 pm

    Good work! I enjoyed your write-up.

  11. #11 by Mark on November 1, 2011 - 8:12 pm

    @hpux735 Thanks!, I’m going to add a link to your project. Over the years I’ve received a lot of interest in the project. It was a lot of fun to build out!

  12. #12 by Jeff Davis on November 27, 2011 - 6:36 am

    I found your blog and find it very interesting. I will synthsize what you have written some more. I have a softrock rcvr that I have to finish for amateur radio use… (too many projects on the go)
    I have been copying wx satellites since 1972. It was a tuft go those days when you had to develope the picture and hope it was a good one! You got to know by the signal and the sound if it was a good picture.
    I built a Quadrifier antenna that sits in the attic. It performs very well from Cuba (a little noise until the tip of Fla shows up) to Hudson’s Bay. I will look into your process some more. regards Jeff ve3ak

  13. #13 by hpux735 on November 27, 2011 - 9:08 am

    Thanks, Jeff. I’m thinking about moving my antenna, possibly to the attic, because my copy has gotten much worse since the antenna was installed on the barn. I think the metal roof is interfering with the function of it.

  14. #14 by Jeff Davis on November 28, 2011 - 10:19 am

    Thanks for the reply… I suggest the Quad but don’t attempt it with copper pipe! It’s a real nightmare to construct. Here is how I solved that problem… Before mounting the cross pieces top and bottom on the supporting plastic pipe, drill a hole in the ends of each piece of 3/8 in. alumimun rod for a stainless steel self tapping screw. Install the rods. Find some flat 1/2 in wide alumunum stock which will go from each of the top rods to the appropiate bottom rods. You will of course need to drill holes in the flat pieces to afix them to the rods.
    I’ll leave the top coax connections for the builder. I did wrap a few turns around the 2 in. pipe below the bottom rods as a sort of Balun
    regards Jeff ve3ak

  15. #15 by hpux735 on November 28, 2011 - 10:29 am

    I’m going to try a copper pipe quad next. I’ve built one using #10 copper ground wire (, and I was rather happy with its performance when I was testing it over grass. When I moved it to the barn (with a metal roof) it went to hell. I found a post by John Coppens about modeling the QFH over a ground plane, but my results don’t quite match his. I also found an article written ages ago that claims it’s not possible to generate or receive a circularly-polarized over a ground plane.

    Anyway, long story short, I’m going to try 2 things: Move the current antenna higher relative to the metal roof, and Build another antenna to put in the attic (probably using pipe, just for the experience).

  16. #16 by Chris on May 29, 2012 - 7:31 pm

    What happens is the reflection reverses the polarity of the signal. If the roof is not flat – a ground plane, the results must be quite unpredictable without software simulation.. perhaps it becomes its “evil twin” canceling out some or all of the desired signal..

  17. #17 by hpux735 on May 30, 2012 - 1:13 pm

    Unfortunately, I haven’t tried the exact same workflow that produced the top image since putting the antenna on the roof. Now that I’m finished with my degree, I can spend some of my new free time playing around with it.

(will not be published)

Please complete this capcha. I get almost 1000 spam comments a day! * Time limit is exhausted. Please reload CAPTCHA.