gr-satellites refactored

In August last year I started my gr-satellites project as a way to make my experiments in decoding Amateur Satellite telemetry easier to use for other people. Since then, gr-satellites has become a stable project which supports 17 satellites using several different protocols. However, as time has gone by, I have been adding functionality in new GNU Radio OOT modules. Eventually, the core of gr-satellites depended on 5 OOT modules and another 7 OOT modules were used for each of the satellite families. This makes gr-satellites cumbersome to install from scratch and it also makes it difficult to track when each of the OOT modules is updated.

I have now refactored gr-satellites and included most of the OOT modules into gr-satellites, so that it is much easier to install and update. The only OOT modules I have kept separate are the following:

  • gr-aausat, because it doesn’t use libfec for FEC decoding, and includes its own implementation of a Viterbi and RS decoder. Eventually I would like to modify gr-aausat to make it use libfec and include it into gr-satellites.
  • beesat-sdr, because it is actively developed by TU Berlin and I have collaborated some code with them. Also, the implementation of the decoder is quite different from everything else in gr-satellites.
  • gr-lilacsat, because it is actively developed by Harbin Institute of Technology and I have collaborated some code with them. However, as I explained in a previous post, the FEC decoding for these satellites is now done very differently in gr-satellites in comparison to gr-lilacsat, as I have replaced many custom blocks by stock GNU Radio blocks. I will have to examine carefully how much code from gr-lilacsat is actually needed in gr-satellites.

The refactored version is already available in the Github repository for gr-satellites. Users updating from older versions should note that gr-satellites is now a complete GNU Radio OOT module instead of a collection of GRC flowgraphs, so it should be built and installed with cmake as usual (see the README). The GRC flowgraphs are in the apps/ folder.

The OOT modules that have been included into gr-satellites will be deprecated and no longer developed independently. I will leave their Github repositories up with a note pointing to gr-satellites.

This is not the end of the story. There are some more things I want to do with gr-satellites in the next few weeks:

  • Use cmake to build and install hierarchical flowgraphs, saving the user from this cumbersome step.
  • Use cmake to build the python scripts associated to the decoders.
  • Collect in a Git submodule the sample WAV files that are scattered across the different OOT modules. Add WAV samples for missing satellites. Use these WAVs to test decoders, perhaps even with some automation by a script.

And of course, there are many QB50 project satellites being launched starting next week. I’ll try to keep up and add decoders for them, especially for the ones using not so standard modes. I already have a working decoder for Duchifat-2, since I have been collaborating with their team at Herzliya Space Laboratory. I will also adapt the LilacSat-1 decoder from gr-lilacsat. This decoder has already been featured in this blog.

3 comments

  1. hello,
    I used the gr-satellites modules to receive gqrx sdr audio, when sdr received the signal, the grc show the following the logs, not decode the right information.
    could you help me?

    gr::log :DEBUG: correlate_access_code_tag_bb0 – Access code: 4f5a34435542
    gr::log :DEBUG: correlate_access_code_tag_bb0 – Mask: ffffffffffff
    gr::log :DEBUG: correlate_access_code_tag_bb1 – Access code: 4f5a34435542
    gr::log :DEBUG: correlate_access_code_tag_bb1 – Mask: ffffffffffff
    gr::log :DEBUG: correlate_access_code_tag_bb1 – writing tag at sample 288824
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 1692502
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 1918483
    gr::log :DEBUG: correlate_access_code_tag_bb1 – writing tag at sample 480261
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 2548606
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 2653873
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 2943911
    gr::log :DEBUG: correlate_access_code_tag_bb1 – writing tag at sample 763033
    gr::log :DEBUG: correlate_access_code_tag_bb1 – writing tag at sample 792551
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 4249476
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 5475824
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 6965920
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 7308274
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 8387247
    gr::log :DEBUG: correlate_access_code_tag_bb1 – writing tag at sample 2270639
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 9218880
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 9559421
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 10408549
    gr::log :DEBUG: correlate_access_code_tag_bb1 – writing tag at sample 2735058
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 11240608
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 11487331
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 12022379
    gr::log :DEBUG: correlate_access_code_tag_bb1 – writing tag at sample 3095349
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 12910487
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 13497814
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 13992951
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 14951410
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 15642001
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 16289522
    gr::log :DEBUG: correlate_access_code_tag_bb1 – writing tag at sample 4071058
    gr::log :DEBUG: correlate_access_code_tag_bb1 – writing tag at sample 4184735
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 16799819
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 18889844
    gr::log :DEBUG: correlate_access_code_tag_bb0 – writing tag at sample 19217757

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.