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 git@github.com:daniestevez/gr-satellites.git
    • install it [1]
  • pull the repo for gr-frontends: $ git pull git@github.com:daniestevez/gr-frontends.git
  • 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 README.md 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.

[1]:

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

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

[2]:

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

2: $ cd gr-satellites/build
2: $ python ao40_uncoded.py
5 Likes

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 ao40_uncoded.py and replace it by:

# dry-run:
$ python qo100.py

# run with forwarder:
$ python qo100.py --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.

1st build grcc -d . …/apps/ao40_uncoded.grc
then

Block key “rms_agc” not found
Block key “sync_to_pdu_packed” not found
Block key “sync_to_pdu_packed” not found

2nd grcc -d . …/apps/qo100.grc
then

Block key “rms_agc” not found
Block key “satellites_ao40_fec_decoder_soft” not found
Block key “satellites_ao40_fec_decoder_soft” not found
Block key “sync_to_pdu_packed” not found
Block key “sync_to_pdu_packed” not found

Maybe you forgot to compile the hierarchical flowgraphs? Anyway: a short question would be nice!

Please try:

$ ./compile-hierarchical.sh

In the gr-satellites root folder.

./compile_hierarchical.sh
Block key “digital_correlate_access_code_tag_xx” not found
Validation failed:

Block - pad_source_0 - Pad Source(pad_source):
Source - out(0):
Port is not connected.

Block - satellites_fixedlen_tagger_0_0_0 - Fixed Length Packet Tagger(satellites_fixedlen_tagger):
Sink - in(0):
Port is not connected.
Error during file compilation.
Block key “digital_correlate_access_code_tag_xx” not found
Validation failed:

Block - pad_source_0 - Pad Source(pad_source):
Source - out(0):
Port is not connected.

Block - satellites_fixedlen_tagger_0_0_0 - Fixed Length Packet Tagger(satellites_fixedlen_tagger):
Sink - in(0):
Port is not connected.
Error during file compilation.

Incompatible gnuradio version

remove full ? No, tnx

if you want - try make for ubuntu deb packet all platform and version :slight_smile: Maby this up activity this proect…

Sorry, but I am not the maintainer or author of gr-satellites! It depends on a recent gnuradio for some of the features. This thread describes which steps are necessary to get the qo-100 decoder working, nothing more.

I’m sorry if it does not fit your specific needs…

if a have time, im try agn make, gl, tnx !

Ok, good luck. You’re welcome!