Home

Awesome

Project Horus Telemetry Decoder

Telemetry demodulator for the following modems in use by Project Horus

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 modem approximately 7 dB better again. The Horus Binary v2 mode provides some additional flexibility over the v1 mode, allowing the addition of custom telemetry fields.

A short guide on how to receive a Horus Binary payload using Horus-GUI is available here.

Important Performance Notes

The FSK demodulator at the core of this application expects the transmitter to behave like a modem. That is, it should:

All of the above are achievable from a small microcontroller such as an Arduino. The use of interrupts (instead of sleep statements) to control symbol timing is recommended. Raspberry Pi UARTs (in particular the 'mini-UART') are known to have gaps between transmitter bytes, so be warned!

If you are having issues decoding telemetry from your payload, then carefully investigate the above points. If you are still having issues, then please contact me with a recording via the e-mail address below.

Authors

Written by:

Screenshot

Known Issues

TODO LIST

Usage

Binary Builds

Binary builds for some platforms are available on the releases page: https://github.com/projecthorus/horus-gui/releases

Please let me know if you have issues!

Build HorusDemodLib

$ git clone https://github.com/projecthorus/horusdemodlib.git
$ cd horusdemodlib && mkdir build && cd build
$ cmake ..
$ make
$ sudo 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. On linux distros you may need to install python3-venv.

Install Python Dependencies

$ pip install -r requirements.txt

NOTE: Under linux based distros, you may also need to install python3-distutils and python-setuptools. If you get errors relating to pyaudio when trying to install into a venv, make sure that portaudio is installed (libportaudio-dev or portaudio19-dev under Linux distros, or portaudio under Macports), and then install pyaudio pointing to the portaudio lib by running:

On Linux:

$ export CFLAGS="-I/usr/include"
$ export LDFLAGS="-L/usr/lib"
(venv) $ pip install pyaudio

On OSX using Macports:

$ export CFLAGS="-I/opt/local/include"
$ export LDFLAGS="-L/opt/local/lib"
(venv) $ pip install pyaudio

On OSX using Homebrew

$ export CFLAGS="-I/opt/homebrew/include" 
$ export LDFLAGS="-L/opt/homebrew/lib"
(venv) $ pip install 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

$ (venv) python -m horusgui.gui

Or run the helper startup script:

$ (venv) python horus-gui.py

Updating

As this repository is under regular development, you will likely need to update frequently. For those using the binary builds, this just means downloading a new file and running it. If you're running from source, 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.