A Complete Linux based Receiver and Decoder Application for Meteor M2

Thank you to Neoklis (5B4AZ) for writing in and letting us know about his recently completed project which is a RTL-SDR compatible receiver and decoder application for the Meteor M2 weather satellite. It is a combination of other open source programs and he writes:

I combined the recently released Meteor-M2 LRPT demodulator by Davide Belloli (dbdexter-dev), and the older image decoder (translated to C) released by Artem Litvinovich (artlav), with relevant code from my own "sdrx" SDR Receiver application to create a complete monolithic Meteor-M2 Receiver and Image Decoder application, "glrpt".

Neoklis' glrpt application is available on his website www.5b4az.org under the "Weather Imaging -> Meteor M LRPT Receiver" menu. The application is open source and appears to be Linux only. In order to install it you'll need to download and compile the source code, and compilation instructions are available in the documentation stored in the doc folder. Neoklis also writes that you can find his older APT image decoder called "xwxapt" under the same Weather Imaging heading of his website.

GLRPT User Interface Showing Processed Meteor M2 Images
GLRPT User Interface Showing Processed Meteor M2 Images

17 comments

  1. Paulo CT2IWW

    Neoklis, thanks for hanging around and helping out. I did solve a couple of my problems by reading the previous messages. However, it seems that during the install process the program is failing to build a glrpt folder in my home folder:

    ” cp -r glrpt /home/`logname`/; \
    else \
    cp glrpt/glrpt.glade /home/`logname`/glrpt; \
    fi; \
    chown -R `logname`:`logname` /home/`logname`/glrpt;
    logname: no login name
    logname: no login name
    logname: no login name
    logname: no login name
    logname: no login name”

    Therefore, the program complains and wont start:

    “Glrpt: failed to add objects to builder:
    Failed to open file “/home/ct2iww/glrpt/glrpt.glade”: No such file or directory”

    The only thing that comes to mind is that I use autologin in this machine. I am using Linux Mint 19 64bit XFCE, btw. I also tried on an Ubuntu 18.04 machine, with the same results (also autologin).

    Any help would be appreciated…

    Paulo, CT2IWW

    • Neoklis

      Paulo

      I am a “teach yourself” alone in the dark amateur programmer so my knowledge of the auto tools etc is limited in detail. I don’t know how to fix this problem (the installation code I managed to build was mainly produced automatically by the old Glade-2 tool) but you can still fix the problem manually. It seems to me that the ~/glrpt/ working directory was installed in your home directory but ownership was not transferred to you (it would be owned by root since sudo has to be used for the installation). If this is the case, then open a terminal in you home directory and issue the command:
      sudo chown -R user:user glrpt/ where user is your user name. If the ~/glrpt/ directory has not been installed, then copy the glrpt/ directory from the top source directory of glrpt to your home directory. You can do this by opening a terminal in the glrpt source directory and issuing the command: cp -r glrpt /home/user/ where user is again your user name.

      Neoklis

      • Paulo CT2IWW

        I moved the folder glrpt manually into my home folder and that fixed the problem. RTL-SDR is working and receiving signals, now I need a couple good passes to get to the decoding proper. I also downloaded and installed SDRX and the same problem occurred but moving the folder by hand took care of that as well.

        Thank you for your time!

        Paulo

    • Neoklis

      Please can you clarify “step by step”? If you mean operating instructions, I will redo the manual soon and upload it in a new package, since some minor bugs surfaced as well and I have fixed them.

      Neoklis

        • Neoklis

          OK, here is a quick start step-by-step:

          First navigate (cd) to the directory you have downloaded glrpt. Usually this will be Downloads/ in your home directory.

          cd ~/Downloads/
          tar jxvf glrpt-1.4.1.tar.bz2
          cd glrpt-1.4.1
          ./autogen.sh
          ./configure
          make
          sudo make install

          This should install glrpt in /usr/local/bin and its working directory glrpt/
          in your home directory. It should also install glrpt.desktop in /usr/share/applications and glrpt.svg in /usr/share/pixmaps.

          If all goes well, you should be able to start it just typing: glrpt in the console. It should also appear in your Desktop’s launcher menu somewhere, normally in Amateur.

          While glrpt will work with its default configuration, you may want to go through the ~/glrpt/glrptrc config file and check the settings. The only setting that might need editing is the Synthesizer Frequency Error correction factor where you should enter your RTL-SDR dongle’s synthesizer error. If in doubt, just leave it as is (0).

          It may also be necessary to change the Scale Factor used to reduce the size of decoded LRPT images, if the glrpt window is too large for your screen.

          To start reception, right-click in the large image display window and activate the “Start Receiver” menu item. Once you get the green PLL lock “LED” indication, activate the “Decode Images” menu and if signal is good, you will get the green FRM (Frames Received) LED indication. The three decoded images will be displayed progressively as they are received.

          When the pass is over, it is necessary to disable the “Start Receiver” menu item to signal glrpt that you are finished so that it will process the images and save them (full size) in ~/glrpt/images/.

          Phew! Good luck!

          Neoklis

          • gck

            it’s all good until “make” give me some error:

            make all-recursive
            make[1]: Entering directory ‘/home/goran/Downloads/glrpt-1.4.1’
            Making all in src
            make[2]: Entering directory ‘/home/goran/Downloads/glrpt-1.4.1/src’
            depbase=`echo Glrpt/main.o | sed ‘s|[^/]*$|.deps/&|;s|\.o$||’`;\
            gcc -DHAVE_CONFIG_H -I. -I.. -DPROGRAMNAME_LOCALEDIR=\””/usr/local/share/locale”\” -DPACKAGE_DATA_DIR=\””/usr/local/share”\” -DPACKAGE_LOCALE_DIR=\””/usr/local/share/locale”\” -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -Wall -O2 –pedantic -march=native -std=gnu11 -fstack-protector-strong -Werror=format-security -ffast-math -flto -ftree-vectorize -fpie -Wformat -DGTK_DISABLE_SINGLE_INCLUDES -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED -DGSEAL_ENABLE -D_FORTIFY_SOURCE=2 -DGDK_PIXBUF_DISABLE_DEPRECATED -DG_DISABLE_DEPRECATED -MT Glrpt/main.o -MD -MP -MF $depbase.Tpo -c -o Glrpt/main.o Glrpt/main.c &&\
            mv -f $depbase.Tpo $depbase.Po
            In file included from Glrpt/main.h:18:0,
            from Glrpt/main.c:15:
            Glrpt/common.h:26:10: fatal error: rtl-sdr.h: No such file or directory
            #include
            ^~~~~~~~~~~
            compilation terminated.
            Makefile:598: recipe for target ‘Glrpt/main.o’ failed
            make[2]: *** [Glrpt/main.o] Error 1
            make[2]: Leaving directory ‘/home/goran/Downloads/glrpt-1.4.1/src’
            Makefile:483: recipe for target ‘all-recursive’ failed
            make[1]: *** [all-recursive] Error 1
            make[1]: Leaving directory ‘/home/goran/Downloads/glrpt-1.4.1’
            Makefile:424: recipe for target ‘all’ failed
            make: *** [all] Error 2

            • Neoklis

              Ah, this one is easy to fix: “Glrpt/common.h:26:10: fatal error: rtl-sdr.h: No such file or directory”. This means that you have not installed the RTL-SDR driver or you have not included the development files. In my system (Void Linux) its a matter of installing librtlsdr-0.6.0 and librtlsdr-devel-0.6.0. librtlsdr is normally included in most distributions these days so please try installing the above and recompile.

  2. kmp56

    OK, now after right click on image display window and activate “Start Receiver” pop-up menu item it works.
    Thanks a lot.
    BTW – didn’t found in manual how to start glrpt …

    • Neoklis

      Good! I have instructions in the manual on how to start glrpt:

      3. A pop-up menu: This appears after a right-click on the scaled image display in the main window. Some of the options in this menu can be set by default in the ~/glrpt/glrptrc configuration file. This menu and has the following items:

      Start Receiver: Checking this menu item starts the SDR Receiver and the LRPT Demodulator. This results in the Spectrum and QPSK Constellation displays to activate so that the satellite’s signal can be monitored. Please note: It takes a few seconds to initialize reception from the SDR Receiver and during this period the pop-up menu is blocked to avoid glitches
      Un-checking this menu item stops the SDR Receiver, the Demodulator and the relevant displays. If LRPT images have been successfully received (by also checking the menu item below) then these will be saved to disk after image processing, if enabled.
      Decode Images: Checking this menu item starts the LRPT Decoder and if the Costas PLL is locked, LRPT images will be decoded and progressively displayed in the image display frame.

      Its late now but tomorrow I will see if I can make the manual clearer…

  3. kmp56

    I’ve blacklisted rtl dvb driver in /etc/modprobe.d and GQRX works well, so system answer for: “sudo rmmod dvb_usb_rtl28xx” is “ERROR: Module dvb_usb_rtl28xx is not currently loaded”.
    Starting glrpt in the console gives NO errors after close.

    • Neoklis

      I am not clear about your situation with glrpt. I presume glrpt starts OK,
      which means there are no missing dependencies and its working directory is
      properly installed in your home directory. If you have the latest RTL-SDR
      driver (my version is librtlsdr-0.6.0 in Void Linux), then after launching
      glrpt and starting the receiver (right click on image display window and
      activate “Start Receiver” pop-up menu item) you should see something like this printed in the console:

      Found Rafael Micro R820T tuner
      Allocating 15 zero-copy buffers

      Otherwise you should get an error message in red in the Messages display.
      Also check the librtlsdr Device Index entry in ~/glrpt/glrptrc config file in case the default device index of 0 is not appropriate (if you have more than one RTL-SDR device plugged in).

      Sorry about you difficulties!

      Neoklis

  4. Neoklis

    Hi

    It may be the DVB driver blocking the RTL-SDR driver. Please run in the console: sudo rmmod dvb_usb_rtl28xxu Then start glrpt in the console and post any error messages.

    Neoklis

  5. kmp56

    Ubuntu 18.04 – compilation without errors, but after lunching glrpt won’t see my rtl dongle. Tested with 3 chinese and v3. dongles.

    • Neoklis

      I have just uploaded a new version 1.4.1 of glrpt with a modified RTL-SDR initialization sequence, since I was getting error messages from the GTK+ GUI library when testing with the SDR dongle unplugged. glrpt was trying to print information on the SDR device but as it was not plugged in, the strings returned from the driver were apparently uninitialized, causing some trouble!

      Neoklis

Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

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