Using RTL-SDR to automatically receive weather satellite images.

March 19th, 2014

Some time ago I did some posts on receiving weather satellite images from the NOAA satellites using a receiver and a home made antenna. Part One, Part Two, Part Three. This is the kind of image I want:


I had my receiver working and was going to build a circuit to automate the tuning of the satellites. I did actually achieve that. In the end I had breadboard and had working a receiver run by an Arduino. The Arduino was used to switch in different tuning resistors in sequence. Each resistor tuned the receiver for a different satellite. It would listen to each channel for 30 seconds or so. A tone detector on the audio output would then listen for the tone from a passing NOAA satellite and if it detected one it would signal the Arduino which would stop changing the frequency of the receiver until 30 seconds or so after the tone had passed. That way when a satellite passed overhead the circuit would detect it’s tone and the receiver would listen to it for the full pass. Once the tone passed the receiver would start scanning through the frequencies again. This worked very well but I never got past the breadboard stage. Eventually I needed to get a new roof on my house and the antenna, which was sitting on the guttering, was taken down and I never got around to putting it up again. The breadboard got buried under piles of other projects and was forgotten. In a recent clean up I found the breadboard again. It would still work and I could have made a permanent home for it but in the passing years (it was in 2010 I made that)  a much better way has appeared – SDR or Software Defined Radio. A search on this will find many interesting pages. It turns out that it is extremely cheap and easy to do SDR on a normal PC using USB digital television dongles. All you need is a dongle, some software to run it (and the right drivers) and a suitable antenna. The dongle I got off TradeMe for NZ$30. That included a tiny antenna and three antenna adapters. This dongle is an RTL2832 based one which a bit of reading will tell you is a great one to use for SDR. The dongle needs special drivers as well as some software to drive it. The drivers allow the receiver to be used for SDR rather than just as digital TV receivers. They’ll receive in the range from about 25MHz right up to about 1700MHz.  So one of the signals you can receive is the 137Mhz or so signals from the NOAA weather satellites. My plan was to recreate my weather satellite receiving station using SDR. The best place to start is here on RTL-SDR. Once you have the basics installed you can follow this excellent guide for receiving weather satellite pictures. That guide is what I used but it doesn’t quite get you all the way to a fully automatic setup that you can just leave running all the time.  This is how I did that. My instructions are similar to those in the guide with a couple of extra steps. I am running on Windows 8 and it is best to run each application as an administrator so everything works. Basically, as per the guide, we will use Orbitron to track the satellites and, via the Orbitron DDE plugin, set SDR# to the correct satellite frequency when the satellite is overhead. We’ll use WXT0Img, the software I originally used a few years ago, to decode the audio SDR# receives from the satellite and to build and upload an image. The instructions for how to install the Orbitron plugin into SDR# are in the Orbitron download. As the guide mentions the instructions are a bit odd in places. I did get them to work though. I found I did need to install the DDE driver (in the drivers section on the Orbitron download page) and that when I click the button next to the SDR Sharp drop down on the Rotor/Radio tab in Orbitron a little window called “My DDE Client 1.05” would pop up. This window needs to be there on my setup for the DDE link between Orbitron and SDR# to work. The audio piping also needs a little explanation. Basically WXToImg needs the audio signal from the satellite. You need to get the audio from SDR# into WXToImg. Initially I was using Windows Stereo Mix (I had to install the latest Realtek drivers to get it) and that works but the issue was all the sound was still going through the PC speakers. Very annoying when most of the time it is just static! To get around that I downloaded and installed VB-Audio virtual cable. This is again free and what it does is install new virtual audio devices on your machine. Then it is a simple matter of selecting ‘CABLE Input’ as your audio output device in SDR# and “CABLE Output” as the default audio device in WXToImg. That links the two together and the sound doesn’t play though your normal speakers. Now the tutorial gets you as far as having all this setup and running and you are able to manually select which satellite to receive. Selecting each satellite passes the correct tuning information to SDR# via DDE. WXtoImg is set to automatically record and it will start recording when it thinks a satellite is overhead (both Orbitron and WXToImage make use of downloaded Kepler data to do this). I found however that there is one extra step needed to make it fully automatic. That is Orbitron automatically tracking several satellites and sending the right frequency to SDR# when each comes into range without having to manually change which satellite is active. The trick is two settings on the setup page in Orbitron. The first is on the ‘Miscellaneous’ tab. In there there is a section for ‘AOS Notification’. Basically what this does is plays a sound and notifies the user when a tracked satellite becomes visible. You can set the elevation angle there but I left it set to the default 0 degrees.


The second setting is on the ‘Extra’ tab and it’s the very last setting called “AOS Notification: Make satellite active”. This is the important one. Make sure that is ticked!


All this does is makes each of your selected satellites the active one when it comes into view. Setting a satellite to active is what sends the correct data, via DDE, to SDR#. One final trick I had to do was to ensure that selected satellite downlink frequencies on the Rotor/Radio tab for each satellite were correct. I found that they were wrong by default for some reason so I needed to manually change them there. I just track NOAA 15, 18 and 19. Basically I have Orbitron, WXtoImg and SDR# running all the time as well as the little DDE client. When Orbitron sees a satellite is visible it will update SDR# to change to that frequency. WXToImg, using it’s own satellite data, will start recording at the appropriate time and I have it set to automatically upload the images to my web page here. And finally I got around to mounting my antenna up on the roof properly using a pole. This really makes a difference to the quality of my received images.


And here are some images I received from passes today (a nice, fine day!):

noaa-15-03190548-mcir noaa-18-03190345-mcir noaa-18-03190526-mcir noaa-19-03190216-mcir

One thing that may be interesting is what happens when two satellites pass at the same time or close to each other. I think Orbitron will switch to the second one as soon as it is in site which will cause SDR# to change frequency. WXToImg will continue recording the first one though. I am not entirely certain what will happen in that case. You can tweak the recording setting in WXToIMG so it won’t record unless the satellite is above a certain number of degrees and reaching a certain minimum angle above. And you can tweak the AOS degree angle in Orbitron. I might need to fiddle with the values a little to avoid changing frequencies to satellites WXToImg isn’t going to record anyway. Funny, as I am writing this NOAA 15 is doing a very low pass off to the West of me. Orbitron made it active as it is visible above 0 degrees elevation. WXToImg would normally ignore it as the pass is too low in elevation. I tweaked it’s settings to see if I can get a signal from such a low pass. Something is coming through but it is very noisy. I think the thing to do will be set WXToImg back to the default settings (only record when elevation is more than 8 degrees and the satellite will reach more than 20 degrees) and change the AOS setting in Orbitron to only change the active satellite when it goes over 7 degrees. That should give me good clean recordings. Of course the best images are obtained when the satellite passes directly overhead. That also gives you the biggest image (well, biggest area view). OK, that satellite passed and I did get some kind of image:


The satellite was so far over to the west that’s basically the arse end of Australia. Also notice how the image is not as tall as the others. Because the satellites are orbiting and basically making the picture by scanning a line at a time (like a fax machine) as they orbit the higher overhead it is the bigger the picture you’ll get. It is over head longer so you get more scan lines. If the satellite is passing far to the East or West of my position then it won’t be high up in the sky and so won’t be as visible for long. I’ll set things up to only record those satellites that will give a good image. All the images are being uploaded automatically to I am not sure how long I will keep this all running but it seems to be working well at the moment so I will leave it going for a while. Eventually I might want to do more experiments with my $30 SDR though.

Update: I have found that the DDE link between Oribtron and SDR# has stopped working on at least one occasion. If that happens the frequency doesn’t get automatically changed so I stop getting images from two of the satellites. The third keeps working of course since the frequency is stuck on it. It is something I need to keep an eye on.

Posted in Projects | | Top Of Page

11 Responses to “Using RTL-SDR to automatically receive weather satellite images.”

  1. f.liu Says:

    Hmm, interesting. I’m wondering if one needs the antenna at that tall?

  2. Simon Says:

    The higher it is the better view you get of the horizon so you will get more of a picture.

  3. Omkar Says:

    You have stopped updating since Dec 20th?

    I followed the post and for me too DDE suddenly stopped switching. I had N15 N18 N15 passes and in that time it switched to N18 from 15 but refused to switch from N18 to N15. DDE window on SDR Sharp frequency shown was for N15 but SDR Sharp was sitting on N18 frequency. I guess it is something with SDR Sharp.

    Any way for us to use similar thing for Android mobiles(to save lot of power)? Softwares available for controlling SDR Tuners but no free software for decoding APT.

  4. Simon Says:

    I had my machine shut down over christmas as I was away and just hadn’t started it (the SDR) up again! Should be running now. One problem is when the machine locks it stops working. I think that stops the DDE link working so SDR stops switching frequencies. I’ve never looked at what’s available on Android for it?

  5. Damian Says:

    When controlling SDR# from Orbitron I get bad stepping in the images. I thought it was electrical interference but after experimenting today I found it was most likely the continuous doppler adjust from Orbitron telling SDR# to retune. Something in the retuning gives bad stepping afterwards. WxtoIMG can deal with some of it but it still looks pretty bad. Did you have this ? I can’t see any way in Orbitron to stop changing the freqs.

  6. Simon Says:

    I don’t see this at all. It works well for me. Not sure what could be causing that?

  7. Damian Says:

    What sample rate do you use ?

  8. Simon Says:

    Do you mean the SDR audio sample rate? I have that set to 192000.

  9. Damian Says:

    No I meant device sample rate in SDR# Setup. I tried reducing it from 2.048 MSPS to 1.024 and it made no difference. I’ll try it with a different PC with 8GB RAM (instead of this one with 2GB) and see if that is the issue. Some said 2GB RAM machines can’t provide a picture.

  10. Simon Says:

    I haven’t heard about the RAM limitation. I am running 12Gb here. The SDR sample rate I have is 2.4MSPS.

  11. FM Demodulation | Patrick JP Says:

    […] Using RTL-SDR to automatically receive weather satellite images.  […]