Receiving Russian’s Satellite Weather Image, From Space!

Receiving and decoding Meteor-M2 Satellite weather image using an RTL-SDR dongle and GNU Radio software

Handiko Gesang
Dec 22, 2018 · 6 min read
Meteor-M2. The image was taken from http://planet.iitp.ru/english/spacecraft/meteor-m-n2_eng.htm

Today I want to talk about how you can receive a radio signal from a Russian weather satellite, Meteor-M2, in the form of the LRPT signal (LRPT stands for Low Rate Picture Transmission) and decode it into a weather image.

What is Meteor-M2 Satellite

Meteor-M2 (actually named as Meteor-M N2), is a polar-orbiting weather satellite which belongs to Russia. Meteor-M2 is launched on July 8, 2014. This satellite is used for weather forecasting, climate change monitoring, sea water monitoring, and space weather analysis. The satellite will transmit weather image back to earth as it passes by. This weather satellite is particularly famous among amateur radio operators and amateur satellite hobbyist because of the LRPT signal is transmitted around 137.9 MHz near the 2 m-band (144 MHz) amateur radio frequency, therefore the antenna design and the equipment required is not hugely unfamiliar. Moreover, amateur radio operators are known to be able to hack or build their own equipment so this “minute” change on frequency and mode is not a huge problem. The really interesting image it’s transmitted back to earth is one attraction why so many people really care and interested in this satellite.

Meteor-M N2 (recognized as Meteor M2) Satellite. Note that underneath the left-side solar panel, you can see the Quadrifilar Helix Antenna (QFHA) for the VHF LRPT transmission. The image was taken from https://phasenoise.livejournal.com/2245.html

The LRPT signal is transmitted around 137.9 MHz near the 2 m-band (144 MHz) amateur radio frequency

How to Spot the Meteor-M2 LRPT Signal

The LRPT signal transmitted from the Meteor-M2 satellite is actually not hard to spot on. The satellite is orbiting on a polar orbit with an altitude of 850 km above the earth, so it will likely to pass above you from the north-to-south or south-to-north direction. Due to its orbit’s characteristic, the satellite will circle the earth every 100 minutes. This arrangement will result in the satellite only pass above you or your area twice a day. To find out where and when to spot this satellite, I recommend you to learn about its orbit here (click on the live tracking). If you are a Linux user, you can install Gpredict from OZ9AEC. Or, if you are a Windows user, you can use the Orbitron instead. Using these tools, it is an easy job to locate where and when the satellite is gonna be.

Gpredict View of the Meteor-M2 tracking status. Very useful software to spot/track the satellite of interest.

If you are gonna use a handheld portable directional antenna as I did, you need to constantly and manually track the satellite as the satellite passes by.

You need to constantly and manually track the satellite as it passes by above your location. This guarantee the signal you are receiving is as strong as possible.

How to Find the Meteor-M2 LRPT Signal

The signal we are looking for is neither a very strong signal nor a very weak one. Meteor-M2 LRPT is transmitted using a 5 Watts (!) transmitter. Although the signal traveled at least 850 km from its antenna to your receiver, with a suitable antenna, you can receive the signal quite easily. The LRPT protocol has a data rate of 144 kilobits/s and by using QPSK modulation (2 bits-per-symbol) it will results of 72 kilobaud QPSK signal.

When I carry the experiment, I was using a 3 elements portable yagi antenna to receive the signal and oh..boy..! the signal was strong!

The type of 3 elements portable Yagi antenna I was using to receive Meteor M2 LRPT Signal
A strong Meteor-M2 LRPT signal received with an RTL-SDR dongle, 3 elements portable Yagi antenna, and GQRX software.

I received the signal using an RTL-SDR dongle and GQRX software. At that time, I was using a sample rate of 300 ksps. From the picture above, you can see the signal looked like a “noise hump” in the center of the spectrum. This is the characteristic of the QPSK signal. With the QPSK baud rate of 72 kilobaud, actually, you can use the absolute minimum sample rate you can use, which is 144 ksps (2 samples per symbol) although it’s not recommended since the signal itself is constantly shifting due to the Doppler effect. Therefore, it is recommended to use the minimum sample rate of 150 ksps to compensate.

It is recommended for you to use a directional antenna to receive Meteor-M2 signal. A three-element Yagi Antenna will do the job well

Demodulate and Decode The LRPT Signal

There are two tasks to be carried in order to receive and decode the weather image from this satellite. First, you need to demodulate the received signal into a binary file and second, you have to decode the binary file into weather image using special software. In this article, I will demonstrate that you can build your own GNU Radio flowgraph to demodulate the received RF signal into a binary file and then decode it.

Demodulation Process: To receive the LRPT signal and demodulate the QPSK modulation and convert it into a binary file
Using meteor_decoder software from https://github.com/artlav/meteor_decoder we can decode the binary file into a weather image

The GNU Radio flowgraph that I built and use is rather simple. The main ideas are:

  1. Use Osmocom Source to receive IQ samples from RTL-SDR dongle with the highest sample rate possible.
  2. Decimate or resample the IQ samples into 300 ksps stream. This stream is used for display only.
  3. Resample again into the final bandwidth of 144 ksps.
    Filter the 144 ksps IQ stream with a properly matched filter.
  4. Do a symbol synchronization with a Mueller & Mueller based Clock Recovery.
  5. Do an equalization with a CMA based Equalizer.
  6. Phase synchronize the recovered QPSK symbol using a Costas Loop.
  7. Decode the phase synchronized symbol with a Soft Decoder into a soft bitstream.
  8. Finally, the decoded soft bitstream is written into a file ( .s file extension).

In my experience, the most critical thing is the matched filter, MM Clock Recovery, and the Costas Loop setting. You can download my flowgraph at https://github.com/handiko/GNU-Radio-Project/tree/master/Meteor_M2_RX. Please note that you need to adjust RTL-SDR RF-Gain properly to optimize the SNR. In my case, using a low noise 3 elements Yagi, I need to adjust the RF-gain to 45 dB.

GNU Radio flowgraph that I built and use to demodulate LRPT QPSK signal from Meteor M2 Satellite. The flowgraph is available at https://github.com/handiko/GNU-Radio-Project/tree/master/Meteor_M2_RX

You can do the LRPT signal demodulation only using the GNU Radio native blocks

Here are some of my Meteor M2 receiver flowgraph displays during runtime:

Weak LRPT signal. Just barely above the noise. The satellite was still at about 5–15 degrees of elevation.
Weak LRPT signal viewed in the constellation plot. Note that four clouds started to appear. The four clouds represent the QPSK modulation and the cloud-like constellation represents the weak signal received.
When the satellite was nearly overhead, the signal was strong. The “noise hump” clearly visible and easily distinguished from the noise.
Stong QPSK LPRT signal. The signal was quite strong so that the constellation plot was quite clean and show the very distinct four points which represent QPSK modulation. The soft bitstream time plot on the right showed that the near absence of bit error.

The final step is to convert the binary ( .s) file into actual weather image. Using open source software from https://github.com/artlav/meteor_decoder and some instruction there, we can convert the .s file into the picture like the following: (please note that the last image is taken when the satellite was in the nighttime pass. During nighttime, some sensors don’t work so it didn’t produce the false color (RGB) image)

Quite clean weather image from Meteor M2 passed over my location. During the daytime, all sensors are working and be able to produce the RGB false color image. The color bars represent the loss of signal during the pass. This likely due to my hand keep moving around when pointing the antenna towards the satellite.
During nighttime passes, some sensors don’t work. Therefore it would not be able to produce the RGB false color image.

Handiko Gesang

Written by

Arduino, Software Defined Radio, Antenna, RF, and General Electronics Enthusiast