Project Horus Telemetry Decoder
 
 
Go to file
Mark Jessop b935f82e6d Add GQRX UDP input 2020-07-12 17:09:23 +09:30
doc Add windows pyinstaller spec file, add icons 2020-07-12 15:37:33 +09:30
horusgui Add GQRX UDP input 2020-07-12 17:09:23 +09:30
.gitignore Initial commit 2020-06-21 16:15:38 +09:30
LICENSE Initial commit 2020-06-21 16:15:38 +09:30
Makefile Style fixes. 2020-06-26 22:34:05 +09:30
README.md Add GQRX UDP input 2020-07-12 17:09:23 +09:30
horus-gui.py Change raw/decoded fields to LineEdit boxes 2020-07-10 20:11:35 +09:30
horus-gui.spec Move log updates into queue 2020-07-10 21:59:55 +09:30
horus-gui_osx.spec Add OSX pyinstaller spec file 2020-07-12 15:03:54 +09:30
horus-gui_win.spec Add GQRX UDP input 2020-07-12 17:09:23 +09:30
pyproject.toml Add GQRX UDP input 2020-07-12 17:09:23 +09:30
requirements.txt move to poetry package management, repoint to horusdemodlib 2020-07-04 21:00:14 +09:30
setup.py move to poetry package management, repoint to horusdemodlib 2020-07-04 21:00:14 +09:30

README.md

Project Horus Telemetry Decoder

Telemetry demodulator for the following modems in use by Project Horus

  • Horus Binary Modes (4FSK)
    • v1 - Legacy 22 byte mode, Golay FEC
    • v2 - 16/32-byte modes, LDPC FEC (Still in development)
  • RTTY (7N2 and 8N2, standard UKHAS sentences with CRC16 only)

This project serves as a graphical front-end to horusdemodlib a Python/C library of telemetry demodulators based off the codec2 FSK modem. The core modem used in this library is very well tested, and performs in line with incoherent FSK demodulator theory. The RTTY decoder is approximately 2dB better than dl-fldigi, and the Horus Binary v1 modem approximately 7 dB better again. Once finished, the Horus Binary v2 modes should provide an additional few dB more performance yet again.

Written by:

  • GUI & Glue Code - Mark Jessop vk5qi@rfhead.net
  • FSK Modem - David Rowe
  • FSK Modem Wrapper - XSSFox
  • LDPC Codes - Bill Cowley

Note: This is very much a work in progress!

Screenshot

Known Issues

  • Occasional crash when processing is stopped just as a packet is being processed by horus_api.
  • Queue events not processed on OSX when the application is running in the background.

TODO LIST - Important Stuff

  • Better build system via Travis (@xssfox)

TODO LIST - Extras

  • Waterfall Display (? Need something GPU accelerated if possible...)
  • rotctld rotator control?

Usage

Binary Builds

Until we sort out automated release builds, some very early binary builds for Windows and OSX are available here: https://rfhead.net/horus/horusgui/

Please let me know if you have success using these!

Build HorusDemodLib

$ git clone https://github.com/projecthorus/horusdemodlib.git
$ cd horusdemodlib && mkdir build && cd build
$ cmake ..
$ make
$ make install

Grab this Repo

$ git clone https://github.com/projecthorus/horus-gui.git
$ cd horus-gui

(Optional) Create a Virtual Environment

Create a virtual environment and install dependencies.

$ python3 -m venv venv
$ source venv/bin/activate
(venv) $ pip install pip -U       (Optional - this updates pip)

If not using a venv, you may need to replace pip with pip3, and python with python3 below to ensure you are using Python3. Older linux distributions will likely have both Python 2.7 and Python 3 installed - this software only supports Python 3.

Install Python Dependencies

$ pip install -r requirements.txt

NOTE: If you get errors relating to pyaudio when trying to install into a venv, make sure that portaudio is installed (libportaudio-dev under Linux distros, or portaudio under Macports), and then install pyaudio pointing to the portaudio lib by running:

(Linux) $ pip install --global-option='build_ext' --global-option='-I/usr/include' --global-option='-L/usr/lib' pyaudio
(OSX)   $ pip install --global-option='build_ext' --global-option='-I/opt/local/include' --global-option='-L/opt/local/lib' pyaudio

You should then be able to re-run the install requirements command above.

Install Package

Install package in a editable state. This type of installation allows a developer to make changes to the source code while retaining the installation entry points so it can be used like a normal install.

(venv) $ pip install -e .

Run

$ python -m horusgui.gui

Or run the helper startup script:

$ python horus-gui.py

Updating

As this repository is under regular development, you will likely need to update frequently. This means updating both this repository, and horusdemodlib, on which it depends.

$ cd ~/horusdemodlib
$ git pull
$ rm -rf build
$ cd horusdemodlib && mkdir build && cd build
$ cmake ..
$ make
$ make install

$ cd ~/horus-gui
# git pull
$ . venv/bin/activate  (if using a venv)
$ pip install horusdemodlib --upgrade

You should then be OK to run horusgui. Configuration settings will be reset when the version number of horus-gui is incremented, until I settle on on a configuration parameter set.