AO-40 Satellite Telemetry Project

As part of my B.Eng. final year project / Dipl.Ing. (FH) diploma thesis this project was created. The goal was to develop an application to demodulate and decode AO-40's 400bps BPSK telemetry data using digital signal processing techniques ("soundmodem").
This page shows most of the results for the end-user (other hams) and/or people interested in the communication engineering and signal processing aspects themselves.

All software and models are available for download on this page are brought to you under the terms of the GNU general public license, i.e. freely usable/copyable/changable. Source code is included. Enjoy!

Telemetry demodulator as Ptolemy Model

The following package contains an archive of all elements required to run a 400bps BPSK telemetry demodulator as Ptolemy Classic model. I created it to try out all DSP algorithms and schemes as well as to discover reasonable operational parameters (such as loop filter coefficients) in an easy-to-use environment. As Ptolemy users probably know, it allows to quickly "wire up" a DSP implementation much like an electric device in an analog circuit simulator. Parts ("stars" in Ptolemy  terms) are written in C++ and can be concatenated (to "galaxies") to implement higher level functions. I used the predefined modules to build a complete demodulator including an AGC, a Costas loop PLL plus downmixer and a DD ML symbol timing estimator and sampler. As a bonus a decision feedback equalizer with automatic DD tap adjustment (as a self-made star, written in C++) is included as well. You can use this package to find out how software modulators work and how parameter changes affect demodulation performance.

Telemetry demodulator as KDE application

As the DSP and receiver algorithms were nailed down and working acceptable I decided to implement them in a KDE 2.0 conform application. I called it KTelemetryDemod. Here are the features of this application: And here is a screen shot (130 kB).

You can download it here:

Please provide some feedback about how it works for you. Be sure to read the README file first (yeah, I know, you are not going to anyway, but at least I tried).
I recommend to get the source tarball and compile it from scratch. It's very simple and probably the cleanest solution. The RPMs are my first tries so they are probably not very well.

Telemetry viewer

Most of the data transmitted by the spacecraft consists of binary information, mostly temperature, voltage and current data from the various sensors spread around its units. To make these readings human-readable they have to be decoded and presented in some readable fashion. This is what QTelemetryView does. It's designed to work together with KTelemetryDemod but since it connects to the demodulator using UDP and STP protocols it should work just fine with any other demodulator (it does with Tom's (HB9JNX) nice one). It also supports multicast, so you can join Internet telemetry sessions as well.
As the name implies, QTelemetryView is not a KDE application but a Qt one. It is written in Python and is more a proof-of-concept than a "colorful" application like KTelemetryDemod. It fulfills its requirements pretty well, although being a little bit slow (which is surprisingly Qt's fault, not Python's). It requires TheKompany's great PyQt-2.2 bindings and at least Qt-2.2 from Trolltech as well as Python-2.0. Thus it should work just fine on any platform supported by Qt, PyQt and Python itself which include most Unix/Linux variants as well as the toy operating systems.

Here is a screen shot (together with KTelemetryDemod) (130 kB).


Diploma Thesis

I decided to make the thesis itself available as well. You can download it below. However, I would not yet like to post this item under the GPL. You may download and use it for your own private purposes. Commercial usage and sale is prohibited, though. As is distribution of the document, independent of whether this is done in its original form or modified. If one of your friends would like a copy as well please tell him to get his own version from this site. I would like to keep track of how many copies are floating around in the world.
This thesis deals with the prototype stage (including a small introduction into Ptolemy), the implementation stage of KTelemetryDemod as well as the implementation of QTelemetryView. It contains many theoretical aspects as well as some practical ones. I was told by many people that it makes an interesting read. Enjoy!
This thesis by the way won the "Prof. Doehrer Award", an award for the best diploma thesis this year at (ex-) FH-Dieburg. I would hereby like to thank the committee again.


Happy hunting!

created by Jens David, DG1KJD - last update 07/27/2001