Project Horus's Telemetry Demodulator Library
 
 
 
 
 
Go to file
Mark Jessop a555089582 Update horus gen test bits to produce 32-byte v2 golay-encoded frames 2021-08-25 20:26:47 +09:30
doc Add modem spectrogram 2020-07-18 19:51:08 +09:30
horusdemodlib Add additional checks on some fields. 2021-01-30 10:44:46 +10:30
samples Add RTTY 7N1 sample and ctest 2020-07-16 18:11:46 +09:30
src Update horus gen test bits to produce 32-byte v2 golay-encoded frames 2021-08-25 20:26:47 +09:30
.gitignore Initial commit 2020-06-15 18:10:57 +09:30
.travis.yml Update travis to only build on tags 2020-07-11 21:16:18 +09:30
CMakeLists.txt Add RTTY 7N1 sample and ctest 2020-07-16 18:11:46 +09:30
LICENSE Initial commit 2020-06-15 18:10:57 +09:30
README.md Add link to wiki page in readme 2021-08-20 22:20:15 +09:30
TESTING.md Update horus gen test bits to produce 32-byte v2 golay-encoded frames 2021-08-25 20:26:47 +09:30
custom_field_list.json Add horusdemodlib python files 2020-07-04 19:12:23 +09:30
mingw-w64-x86_64.cmake Add in cross compiling and github releases 2020-07-09 21:29:07 +10:00
payload_id_list.txt Add SQ3KNL-4FSK 2021-08-14 18:01:35 +09:30
pyproject.toml Add additional checks on some fields. 2021-01-30 10:44:46 +10:30
requirements.txt Add command-line uploader functionality, and startup helper scripts. 2020-07-18 15:05:05 +09:30
setup.py Fix setup.py, bump version 2020-07-04 20:12:30 +09:30
start_dual_4fsk.sh Added dual 4FSK script. 2021-02-05 20:00:44 +10:30
start_dual_rtty_4fsk.sh Added dual 4FSK script. 2021-02-05 20:00:44 +10:30
start_gqrx.sh Add command-line uploader functionality, and startup helper scripts. 2020-07-18 15:05:05 +09:30
start_rtlsdr.sh Update default freq 2021-07-31 16:19:20 +09:30
user.cfg.example Add command-line uploader functionality, and startup helper scripts. 2020-07-18 15:05:05 +09:30

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

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 .

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