dopplerscript: Getting Doppler Updates from GPredict into GNU Radio

Thanks to Dave for submitting news of his recent release of his Python script called dopplerscript. This is a tool that can help people automate the reception and decoding of the Meteor M2 weather satellite in Linux with GNU Radio by providing a tool for automatic Doppler correction. He writes:

gr-gpredict-doppler is an out-of-tree gnuradio block for getting doppler updates from gpredict into a flowgraph. I’ve written a small python script (based on pyephem) that replaces gpredict for generating  the doppler updates. This script allows one to automate scripting the  reception of Meteor M2 satellite transmissions while compensating for the doppler shift.

dopplerscript is a command-line tool to input satellite doppler shifts into a gnuradio flowgraph. The script replaces gpredict as the source for doppler frequency updates in gr-gpredict-doppler, making it easy to script satellite reception.

As low earth orbit satellites fly very quickly overhead, the signal will be affected by the doppler effect, thus shifting the frequency as it moves towards and away from you. Tools like this can be used to predict and compensate for this effect and thus providing better signal processing. Meteor M2 is a Russian weather satellite in low earth orbit which transmits digital LRPT weather satellite images that can be received with an RTL-SDR or other SDR.

An Example LRPT Image Received with an RTL-SDR from the Meteor-2 M2.
An Example LRPT Image Received with an RTL-SDR from Meteor M2.
Notify of

Inline Feedbacks
View all comments

It dosn´t work.I recieve no Pic´s.
I use a RTL Stick what work on the Noaa Satelites.


I am running it on a more powerful Tinker Board and it definitely works:



Hello, my problem are that the PI doesn’t begin to decoding because it doesn’t find some file and I don´t understand why?
I use a RPI3 with a Terratec USB Stick that work´s for Noaa or with the SharpSDR.
This are the Log file:
2017-12-10 18:27:49,785 – root – DEBUG – scheduler_v0.2.8 (no doppler) started on 10/12/17 at local 18:27
2017-12-10 18:27:49,785 – root – DEBUG – GRC script: /home/pi/Projects/Python_projects/Meteor_receiver/GRC/
2017-12-10 18:27:49,786 – root – DEBUG – Location: 46:42:09.0N, 11:40:44.0E, 10.0m elevation
2017-12-10 18:27:49,787 – root – DEBUG – Sat name: METEOR-M 2
2017-12-10 18:27:49,787 – root – DEBUG – trying TLE download…
2017-12-10 18:27:50,277 – root – DEBUG – Download successful, storing TLE file offline
2017-12-10 18:27:50,278 – root – DEBUG – TLE file downloaded & saved 10/12/17 18:27
2017-12-10 18:27:50,283 – root – DEBUG – waiting for positive satellite elevation
2017-12-10 18:42:56,831 – root – DEBUG – start GRC script
2017-12-10 18:42:56,841 – root – DEBUG – started /home/pi/Projects/Python_projects/Meteor_receiver/GRC/ with PID:4882 [‘/usr/bin/python’, ‘/home/pi/Projects/Python_projects/Meteor_receiver/GRC/’] started at 2017-12-10 18:42:56.841605
2017-12-10 18:55:19,137 – root – DEBUG – stopping GRC script
2017-12-10 18:55:19,139 – root – DEBUG – GRC script ended with return code: 2
2017-12-10 18:55:39,161 – root – DEBUG – decoding: no recent file was found
2017-12-10 18:55:39,162 – root – DEBUG – no e-mail sent as there was no decoded image
2017-12-10 18:55:39,164 – root – DEBUG – all done, start over for next pass
2017-12-10 18:55:39,165 – root – DEBUG – trying TLE download…
2017-12-10 18:55:39,680 – root – DEBUG – Download successful, storing TLE file offline
2017-12-10 18:55:39,682 – root – DEBUG – TLE file downloaded & saved 10/12/17 18:55
2017-12-10 18:55:39,685 – root – DEBUG – waiting for positive satellite elevation


I replied on the issue you raised on GitHub, but will copy paste here:

The GRC (gnuradio companion) script handles the SDR stuff. You can launch this manually (it’s a python script) to see if you get any more debug information. I would suspect there are some uninstalled dependencies.
Preparing a list of instructions starting from a fresh raspbian is on my todo list. I believe it doesn’t extend further than gnuradio and gr-osmosdr. Did you install these?


I posted code that creates file names for attachments:

image_122 = os.path.join(main_folder, ‘Images’, file_name + ‘_122.jpg’)
fp = open(image_122, ‘rb’)
img = MIMEImage(
img.add_header(‘Content-Disposition’, ‘attachment’, filename=file_name + ‘_122.jpg’)

image_555 = os.path.join(main_folder, ‘Images’, file_name + ‘_555_IR.jpg’)
fp = open(image_555, ‘rb’)
img = MIMEImage(
img.add_header(‘Content-Disposition’, ‘attachment’, filename=file_name + ‘_555_IR.jpg’)


I ran the modified code this morning and it worked like a charm. I committed the changes to GitHub. Thanks!

Jeff Kelly

Thanks for replying! I also left a note on Github, since I was trying anyway possible to contact you.
At the very least I need any name, date, anything. The no name causes an error for me.


I tried the same thing using XMLRPC, for which I did not need to create an OOT module for gnuradio. However, when running my script on a raspberry pi, it would crash as soon as the update rate was faster than 1s. No clue why, on my laptop it would run faster. Does this run on a rPi?
Check out my script on github, it’ll download the TLEs for weather satellites, find meteor M2 in there, calculate position (using pyephem) and launch a grc script when elevations are positive, followed by automatic decoding, image processing and distribution to a mailing list.

Jeff Kelly

Hi Geo,
I have an issue with your great meteor RPI program.
The attachments that are sent via email have no name.
That is causing a problem in the usage I have in mind.
Is that correct? Or did I do something wrong?
Is there any way toa dd the file name to the attachments?


Hi Jeff,
I did as a matter of fact spend some time on that since, because it was bugging me as well. I’ll check and push any changes to GitHub. Stay tuned 🙂