Receiving and decoding Meteor-M2 Satellite weather image using an RTL-SDR dongle and GNU Radio software
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 SatelliteMeteor-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.
The LRPT signal is transmitted around 137.9 MHz near the 2 m-band (144 MHz) amateur radio frequencyHow 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.
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.
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!
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 wellDemodulate 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.
The GNU Radio flowgraph that I built and use is rather simple. The main ideas are:
Resample again into the final bandwidth of 144 ksps.Filter the 144 ksps IQ stream with a properly matched filter.
- Use Osmocom Source to receive IQ samples from RTL-SDR dongle with the highest sample rate possible.
- Decimate or resample the IQ samples into 300 ksps stream. This stream is used for display only.
- Do a symbol synchronization with a Mueller & Mueller based Clock Recovery.
- Do an equalization with a CMA based Equalizer.
- Phase synchronize the recovered QPSK symbol using a Costas Loop.
- Decode the phase synchronized symbol with a Soft Decoder into a soft bitstream.
- 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.
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:
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)
Comments