Project Horus's Telemetry Demodulator Library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Mark Jessop 7f46efb8fe Add 2 more V2 IDs 4 days ago
doc Add sdrplusplus doc images 10 months ago
horusdemodlib Send all custom fields via UDP broadcast, add baud rate and modulation details to sondehub uploader 3 months ago
samples Added v2 sample and test, removed assert for rtty decoder, added option to use local lists for uploader 1 year ago
src Add additional checks when parsing custom field list, add additional divide by 10 and 100 converters 1 year ago
.gitignore Initial commit 3 years ago
.travis.yml Update travis to only build on tags 2 years ago
CMakeLists.txt Added v2 sample and test, removed assert for rtty decoder, added option to use local lists for uploader 1 year ago
LICENSE Initial commit 3 years ago
README.md readme updates 10 months ago
TESTING.md Update horus gen test bits to produce 32-byte v2 golay-encoded frames 1 year ago
custom_field_list.json Add horus geiger 1 month ago
mingw-w64-x86_64.cmake Add in cross compiling and github releases 2 years ago
payload_id_list.txt Add 2 more V2 IDs 4 days ago
pyproject.toml Send all custom fields via UDP broadcast, add baud rate and modulation details to sondehub uploader 3 months ago
requirements.txt Add Sondehub Amateur uploader. 10 months ago
setup.py Fix setup.py, bump version 2 years ago
start_dual_4fsk.sh Add Sondehub Amateur uploader. 10 months ago
start_dual_rtty_4fsk.sh Add Sondehub Amateur uploader. 10 months ago
start_gqrx.sh Add command-line uploader functionality, and startup helper scripts. 2 years ago
start_rtlsdr.sh Add Sondehub Amateur uploader. 10 months ago
user.cfg.example Add Sondehub Amateur uploader. 10 months ago

README.md

Project Horus's Telemetry Demodulator Library

Horus Binary Modem FFT Above: Spectrogram of the Horus Binary 4-FSK modem signal.

What is it?

This repository contains:

  • libhorus - A C library containing a high performance 2/4-FSK-demodulator (originally developed as part of the Codec2 project by David Rowe), along with Golay and LDPC forward-error correction algorithms.
  • horus_demod - A command-line version of the FSK demodulator.
  • horusdemodlib - A Python library which wraps libhorus, and provides additional functions to decode telemetry into formats suitable for uploading to the Habhub tracker and other services.

In particular, this library provides a decoder for the 'Horus Binary' telemetry system, which is the primary tracking system used in Project Horus's High-Altitude Balloon launches.

The modem in this library can also decode the standard UKHAS RTTY telemetry used on many other high-altitude balloon flights.

For the latest information on how and why to use this library, please visit the wiki pages.

If you're looking for a way to decode telemetry from a Horus Binary (or even an old-school RTTY) High-Altitude Balloon payload, read the guides available here.

Authors

Written by:

HorusDemodLib C Library

This contains the demodulator portions of horuslib, which are written in C.

Building

The library can be built and installed using:

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

Refer to the install guide for a more complete guide, including what dependencies are required.

Testing

Unit tests for the various demodulators can be run using:

$ cd build
$ ctest

Updates

In most cases, you can update this library by running:

$ git pull

and then following the build steps above from the cd horusdemodlib line.

API Reference

The main demodulator API is horus_api.h. An example of it in use in a C program is available in horus_demod.c

A Python wrapper is also available (via the horusdemodlib Python library which is also part of this repository). An example of its use is available here.

HorusDemodLib Python Library

The horusdemodlib Python library contains decoders for the different Project Horus telemetry formats, including:

  • Horus Binary v1 (Legacy 22-byte Golay-encoded format)
  • Horus Binary v2 (LDPC-Encoded 16 and 32-byte formats)

It also contains a wrapper around the C library (mentioned above), which contains the Horus modem demodulators.

The easiest way to install horusdemodlib is via pypi:

$ pip install horusdemodlib

If you want to install directly from this repository, you can run:

$ pip install -r requirements.txt
$ pip install -e .

(Note - this has some issues relating to setuptools currently... use pip)

Updating

If you have installed horusdemodlib via pypi, then you can run (from within your venv, if you are using one):

$ pip install -U horusdemodlib

This will also install any new dependencies.

If you have installed 'directly', then you will need to run:

$ git stash 
$ git pull
$ pip install -r requirements.txt
$ pip install -e .

(Note - this has some issues relating to setuptools currently... use pip)

Further Reading

Here are some links to projects and blog posts that use this code:

  1. Horus-GUI - A cross-platform high-altitude balloon telemetry decoder.
  2. Testing HAB Telemetry, Horus binary waveform
  3. Wenet - high speed SSTV images from balloons at the edge of space.
  4. Wenet High speed SSTV images