Receiving weather satellite pictures with an RTL-SDR dongle

note

The image in this page are compressed to JPEGs for display, click the image to get the original PNG

This is not a guide! See Update 6 if you actually want to try it out

Index

Start
meteor images
some NOAA images
Update 1
Update 2
Update 3
Update 4
Update 5
Update 6
Comments/Contact

Recently I bought an RTL-SDR blog V3 and a dipole antenna from Amazon. After spending a couple of days receiving ADS-B/FM/AM and live TV, I remembered a video by The Thought Emporium on Youtube that I had watched a long time ago and wanted to have a go.

After tuning my dipole using this guide I placed the antenna on a south facing window using the included suction cup, then I waited for a NOAA satellite to pass using n2yo.com.

While waiting for the evening I actually picked up a faint signal from NOAA-18 by accident, so I knew I was on the right path.

I used some software called WXtoimg from wxtoimgrestored.xyz and piped the audio from my SDR(SDR++) to WXtoimg using helvum patchbay, pipewire on Linux made this very easy.

As the satellite passed I saw the distinct APT signal in the spectrum and tuned to it, I had WXtoimg recording and could see in the noise the distinct telemetry bar of an APT image, and after I stopped the recording and the image was processed the results where... not amazing

First APT image:
bad APT image

As you can see the "Image" is more just noise with a bit of a bar on the left, if you look at the very top you can just about make out... something, maybe clouds? Anyway I knew I was still on the right path.

This satellite was NOAA-19 and soon after taking this NOAA-15 passed over, and I decoded the following image.

Second APT image:
slightly better APT image

Definitely better, now I can clearly make out clouds in the image! But it is still very noisy. I did also record one more pass of NOAA-19, but it wasn't any better.

The next day I tried to get the antenna higher by putting in on top of a long metal pole and sticking it out the window over the roof, this time the signal was much stronger and decoded into the following image.

Fourth APT image:
much better APT image

Much better! Not only is the image much more clear, but it is also longer because I could receive the Satellite for more of the pass. I also took a couple more images, but they were not any better

It was about this time that I wondered why the image didn't look like the images I saw on the internet, why was it so dull? Why did the image distort at the bottom? So looked into alternatives to WXtoimg and found noaa-apt, I decoded the above image and got the following result.

noaa-apt decoded image:
noaa-apt decoded image

Finally! For some reason WXtoimg seemed to lose half of both channels, but now I can see the full image, and with the Histogram EQ in noaa-apt the image is also much clearer, you can clearly see Western Europe and even a bit of North Africa.

I have been recording day and night passes of all the satellites for a few days now and also had a go at the Russian meteor-M N2 satellite, I used the software SatDump for this, You can see some of my best meteor images below.

meteor images:

meteor image

meteor image

meteor image

meteor image

As you can see these images are in colour. This is compared to NOAA satellites where the APT is only greyscale, meteor is also digital and encoded as JPEG, meaning noise appears as black blocks in the image instead of static, they are also more zoomed in and not as long because of the lower signal strength, but Europe and the UK are still visible in some of the images behind the clouds.

I have ordered a cheap LNA from AliExpress, hopefully it can help boost the signal. (Note: It didn't, I don't recommend these)

Below are a couple of the best NOAA images I've received

NOAA image

NOAA image

Besides the good images I have also received some bad ones, but sometimes I receive a broken image the only satellite I have received broken images from is NOAA-15, the oldest of the NOAA POES satellites.
NOAA-15 has an issue with the AVHRR scan motor and has had on and off issues since 2000, sometimes the motor jams and makes some very broken images. The first time I received a broken image from NOAA-15 was November 30th 2022, The left channel was corrupted, you could tell even through the severe noise in the image, the image is below

Broken NOAA image:
broken NOAA image

more recently I received another broken image (2022-11-02) This time the image didn't even decode properly and left me with this mess:
broken NOAA image
However, it seems this was caused by the noaa-apt software and not the satellite, so I disabled syncing in noaa-apt and got this image:
unsynced broken NOAA image
on the left is the broken channel and on the right is the working one (Note: this explanation is not correct), interestingly the telemetry seems broken (the black at the top right) but the sync pulses seem intact so I don't know why noaa-apt failed to decode it. (Note: The reason it was not syncing, is because the satellite was sending the sync pulse for the second channel twice instead of pulse for the first and second

Update (2023-01-02):

The LNA seemed to only make a very small difference to the signal strength and as of writing this the LNA has failed entirely. I did buy a couple of other LNAs, but because of my terrible soldering skills the USB power cable has fallen off both of them.

What I didn't mention in this post is that I had to rotate the dipole to keep a good signal, It turns out I had the V-dipole upside down, oops, and after flipping it I could leave the dipole facing the same way for the entire pass, the signal is also stronger. (future note: the orientation of the dipole should not make a difference, but it most definitely did when I wrote this. This was the first of a chain of issues I ended up having with signal strength that I never really solved)

I have done away with the metal pole and now the antenna is mounted in the highest part of my loft, and although the signal is worse that outside, the dipole facing the right way somewhat makes up for this.

Unfortunately as of writing meteor-M N2 is no longer transmitting, according to this GitHub repo the satellite seems to be having Orientation problems since 2022-12-24. Maybe the satellite will come back, but I never did get any better images before it stopped transmitting.

I have tried to decode the DSB signals the NOAA satellites also transmit along with APT, this has worked, and I have telemetry data from the satellite but the HIRS data is far too sparse to use, maybe my signal strength is too low

Both the APT and DSB signals are automatically recorded by my laptop running SDR++ and 6 instances of gpredict(2 for each satellite) all running rigctl clients that control a VFO and recorder in SDR++, I don't like this setup because it is highly inefficient having to run gpredict 6 times. If anyone reading this knowns of a better way to do this please email me Fixed, see update 3

NOAA 15 is still working, but I have noticed on night passes the left image has a strange "shadow" like artefact
NOAA 15 shadow
maybe it's my setup, or maybe it's NOAA 15, but I only see it on NOAA 15 and considering the other issues the satellite has had, it wouldn't surprise me if it's a AVHRR malfunction. (Note: it's actually the sun)

Lastly, for anyone who wants to try this themselves, the 137Mhz band that the satellites transmit in is only 1Mhz wide, The RTL-SDR is 2.4Mhz wide, this means you can use 2x decimation to reduce the RTL-SDRs bandwidth to 1.2Mhz in software, still listen to the entire 137Mhz band and increase the SNR (signal-to-noise ratio) by 3db, a lower SNR will allow you to capture slightly longer passes for totally free. While it is not a big increase it's free so you might as well.

Update 2 (2023-01-24):

It has been confirmed that meteor M2 permanently failed on 2022-12-24, The next satellite that will carry LRPT will be meteor-M N2-3, to be launched this year.

I have since found out that what I said about decimation was incorrect, SDR++ will automatically decimate VFOs and decimating will only reduce the noise level on the waterfall and spectrum. That said, If you are recording basebands of the 137Mhz band decimating by 2x will half the size of the baseband, And since basebands are quite large this is useful.

Update 3 (2023-03-15):

I fixed the "6 gpredicts" problem by writing a program that sends rigctl commands to SDR++ and uses the predict UDP socket. Now only one instance of predict runs and 6 smaller programs. It can also all be run from the command line with one command. I might put a git repo up with the code for this and also the scripts to decode the images.

Update 4 (2023-06-28):

Yesterday meteor-M2-3 launched, and it was switched on today. Here is my first image I got from it:
New meteor-M2-3 image
That's another satellite to receive on the 137MHz band. Possibly the last new 137MHz weather satellite.

Update 5 (2023-07-22):

This is getting silly now! I'll stop updating this page after this, I updated the version of SatDump to support the new modulation mode on the satellite and got this from the same recording:

This image is also corrected for the distortion caused by the scanning of the imager.
The satellite uses OQPSK instead of QPSK for the LRPT link so it's amazing I even got that other decode in the first place.
The satellite has switched to 80k for the last few days, but it's pretty bad and getting switched back to 72k today, the visible channels will also be replaced with the IR channels for testing.
Also, this probably won't be the last new 137MHz weather satellites, meteor-M N2-4 and the rest of the meteor-M2 series will probably also have LRPT.

Update 6 (2023-12-15):

OK, maybe I won't stop updating it. I have revisited this post, fixed some mistakes and added some notes to things.

If you have somehow come across this blog post, the situation with software for satellites on the 137MHz band and more has changed a lot since I wrote this. Satdump, the software I mentioned for LRPT, can now also decode APT, it is calibrated and has composites that can be used for actual weather predictions. It was not mentioned, but I have replaced the SDR++ with rigctl setup with AltiWx, a much lighter satellite station that can run on a Raspberry Pi. SatDump now also has the ability to automatically record satellites, but right now, it can't completely replace AltiWx for 137MHz.

This post was how I first received 137MHz satellites, but it's not a good way! If you would like to try yourself, use this good guide instead.

Since I wrote this I have also received the much higher rate HRPT downlink from these satellites using a satellite dish and helix feed, but that is for a different post

Thank you for reading my first Blog post, Feel free to use my images with credit, If you have any questions you can email me at thomas@douwes.co.uk