Using `gr-satellites` to decode Es'Hail-2 (QO-100) BPSK beacon


This is a description of my approach on decoding the BPSK 400 bps “upper limit” beacon for the Es’Hail-2 (QO-100) narrow-band (NB) transponder

As of 2019-02-15 I’ve seen G7III in the Es-Hail-2 IRC chat trying to get Dani Estevez` (@EA4GPZ) gr-satellites decoder running on a PC connected to the WebSDR. I took the chance and tried on my own.

First of all:

  • be sure the WebSDR is working by listening to some QSO or the beacon itself
  • meet the requirements
    • in my special case on openSuSE Tumbleweed I had to install construct for Python 2, as the default is Python 3. Simply install it via $ sudo pip2 install construct
  • pull the repo for gr-satellites: $ git clone
    • install it [1]
  • pull the repo for gr-frontends: $ git pull
  • run the flowgraphs [2]
  • open the WebSDR in your favourite browser
  • select the beacon frequency :wink:
  • change the Filter: setting to something around 1.3 kHz, to get best results
  • modify Volume: to get best results

That’s all for now! Be sure to have a recent enough gnuradio version running on your system. It should be >= 3.7.12, see Dani’s remarks!

If you like to forward some of the received frames into the SatNOGS-DB provide the needed parameters as described in the in gr-satellites. It is not useful to stream the beacon continuously and from multiple users into the DB, so be careful with this! The beacons also seem to be experimental these days… Have a look at the dashboard in the SatNOGS-DW to get an idea of what is transmitted.


$ cd gr-satellites
$ mkdir build
$ cd build
$ cmake ../
$ make
$ sudo make install
$ sudo ldconfig

# build the flowgraph:
$ grcc -d . ../apps/ao40_uncoded.grc


# open one shell for the frontend (`1:`) and one additional for the decoder-flowgraph (`2:`)
1: $ cd gr-frontends
1: $ python

2: $ cd gr-satellites/build
2: $ python


Hi again,
Daniel, @EA4GPZ, added a dedicated decoder to his gr-satellites repo. If you were using the above method, you can quickly get to the method he suggests in his blog post, and maybe this is a (too) short entry into using git for some of you.
First of all: if you made changes to any of the files you pulled in my first approach: save them!

Enter the directory with the git repository:

$ cd gr-satellites

Check if you have modified files:

$ git status

If you did not change anything you should get an output like this:

On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

If there are changes you will be notified of the files that have changes. Please ignore if there are changes to the folder build/ as we are removing it in one of the next steps (remark to myself: make a PR to add build/ to .gitignore).

In case there is something changed besides the build/ folder:

$ cd gr-satllites

# add a new branch containing your changes
$ git checkout -b save-mods

# commit these changes
$ git commit -a -m "Saving modifications"

Now let’s get back to the original master branch:

$ git checkout master

If you already built this OOT module:

$ git clean -d -x -f

Now update to the latest changes from the origin:

$ git pull origin

You will receive a few new files, including the qo100.grc.
Now re-iterate through the procedure described in my previous post, referred as [1], until you get to the point # build the flowgraph:. Replace the commandline with the following:

$ grcc -d . ../apps/qo100.grc

Do the steps referred to in [2] until you get to the line $ python and replace it by:

# dry-run:
$ python

# run with forwarder:
$ python --callsign=<youcall> --latitude=<yourlat> --longitude=<youlon>

If you don’t want to push frames into the SatNOGS-DB please use the “dry-run” line, otherwise read the docs to add your callsign, longitude and latitude. Be economical with that, as it is - as I said before - not useful to stream the beacons the whole day and/or simultaneously from multiple users :wink:
You’re back online with the new decoder qo100.grc as suggested in Dani’s blog post.