Meteor MN2 decoder for rpi 3B+

That already looks a lot better.

btw. the different PLL bandwidth is due to

Maybe the lower bandwidth is necessary for observations that aren’t doppler-corrected?

Could be, I don’t know. I read a little bit about the subject: A higher bandwidth leads to a faster lock, but also a faster loss of lock. In some applications the bandwidth is high to begin with and is lowered upon locking. Just dividing the bandwidth by a magic number for a slightly different modulation mode seems a bit silly to me.

Anyway, the current parameters seem to work fine judging by the image I just received:

1 Like

I now have a problem where an observation is messed up if it starts while the post-observation script of a previous observation is still running. @benelsen, I see you used nice and ionice, was that in an attempt to remedy this issue? And did that fix it for you?

I try not to schedule Meteor passes too low to so to reduce the possibility, but judging from the observations that are within 20 minutes it seems to help.
I also only dump the I/Q for Meteor (onto an external SSD) which helps with the following observation running into disk IO bottlenecks. CPU isn’t the biggest problem with only 1 core at 100% during the demod+decode.

I also only dump meteor iq-files, on a thumb drive in my case (which will probably break at some point). It is true that the demod/decode takes only 1 core, but the gnu radio scripts can use more than one core and may need all four of them, so may still be bothered if one core is already fully occupied. Ah well, it’s no problem if you leave some breathing room between observations. :slight_smile:

I figured out what the issue was (see below) and fixed my post observation script.

Bottom line, observations are only cleaned up from tmpfs after the post observation script finishes, so it is wise to make post-ob’s run short and fork/daemonize if you want to do any longer running processing. My post observation script now forks if it has to do meteor processing.

1 Like

Ok, no need to update your station for Meteor M2-2 any more, since the sat has broken down. :expressionless:

hey @Rico, I use a bias-t post observation script:

/home/pi/rtl_biast/build/src/rtl_biast -b 0

Is there any way I can add your script to it along the existing script so I can use both?



Yes sure, be sure that the arguments are passed to the python script then.

So as observation script you would set:
/path/to/your/ --id {{ID}} --tle {{TLE}}

And to your script you would add the following line:
/path/to/ "$1" "$2" "$3" "$4"

This passes the first four arguments of your post ob script to the python script. Mind the quotes, they are necessary since the TLE contains spaces.

Let me know if you have any troubles.

Thanks for your response! Can I kindly ask you to clarify the about observation script part? Do I set the following as post-observation script:

/path/to/your/ --id {{ID}} --tle {{TLE}}

Is that correct? In that case, where do I put the current bias-t section?

/home/pi/rtl_biast/build/src/rtl_biast -b 0

Thank you very much!

Your post observation script would be /path/to/your/ and the contents would be


/home/pi/rtl_biast/build/src/rtl_biast -b 0
/path/to/ "$1" "$2" "$3" "$4"

The post-observation script setting should be as follows:
/path/to/your/ --id {{ID}} --tle {{TLE}}

1 Like

Perfect, now I understand! I’ll follow up with the results.

Thank you!

1 Like

I guess knowing the TLE is less important now, given Meteor M2-2 is no longer transmitting LRPT…

An update, it didn’t work :slight_smile: For some reason, when I add the script as post observation (or meteor script alone) the station stops uploading data and no waterfalls are produced. I initially thought the script had to be executable but that didn’t help either.

Am I missing something here, what other steps should I do in order to get the script working? I promise I went through the whole thread but it’s a long thread with even outdated info in some places so I would really appreciate a nudge into right direction.

Thank you!

@ivor: There might be a few reasons why the script does not work in your setup. In my case, I changed the first line in to get it to work:

#!/usr/bin/env python3

I hope it helps.

Mine is already commented out and the script seems to run if I run it manually. Thanks though!

You could try running journalctl -u satnogs-client after a failed observation to show the output of satnogs-client, that might provide some insight. If you paste it here we can have a look.

Thanks, I’ll give it a shot and update today or latest tomorrow.

1 Like

Hy guys!

Having trouble to get decoder working. APT images still working very well, but Meteor M2 not even showing up watterfall and audio anymore on observation page :frowning:
I folowed every step from post one , everything well, but stil not working , no matter what script i used. The journalctl output looks like that:

Feb 28 19:56:54 raspberrypi satnogs-client[312]: Traceback (most recent call last):
Feb 28 19:56:54 raspberrypi satnogs-client[312]: File “/usr/lib/python2.7/dist-packages/apscheduler/executors/”, line 125, in run_job
Feb 28 19:56:54 raspberrypi satnogs-client[312]: retval = job.func(*job.args, **job.kwargs)
Feb 28 19:56:54 raspberrypi satnogs-client[312]: File “/var/lib/satnogs/local/lib/python2.7/site-packages/satnogsclient/scheduler/”, line 88, in spawn_observer
Feb 28 19:56:54 raspberrypi satnogs-client[312]: observer.observe()
Feb 28 19:56:54 raspberrypi satnogs-client[312]: File “/var/lib/satnogs/local/lib/python2.7/site-packages/satnogsclient/observer/”, line 144, in observe
Feb 28 19:56:54 raspberrypi satnogs-client[312]: self.observation_decoded_data)
Feb 28 19:56:54 raspberrypi satnogs-client[312]: File “/var/lib/satnogs/local/lib/python2.7/site-packages/satnogsclient/upsat/”, line 94, in exec_gnuradio
Feb 28 19:56:54 raspberrypi satnogs-client[312]: proc = subprocess.Popen(args, preexec_fn=os.setsid)
Feb 28 19:56:54 raspberrypi satnogs-client[312]: File “/usr/lib/python2.7/”, line 394, in init
Feb 28 19:56:54 raspberrypi satnogs-client[312]: errread, errwrite)
Feb 28 19:56:54 raspberrypi satnogs-client[312]: File “/usr/lib/python2.7/”, line 1047, in _execute_child
Feb 28 19:56:54 raspberrypi satnogs-client[312]: raise child_exception
Feb 28 19:56:54 raspberrypi satnogs-client[312]: OSError: [Errno 13] Permission denied

Got it somehow working. Now i have waterfall uploaded, but not the audio as in link Also in the /tmp/ folder it exists a file waterfall and a file called data_1779712_2020-02-29T17-37-07.s , but not in the /datadrive/ folder. Running bash ./ returns the following error “./ line 3: [: /datadrive/data_1779712_2020-02-29T17-37-07.s: binary operator expected”
Any ideea?