Chris Thompson - AC2CZ - Amateur Radio Station

On the workbench:

2018-Jun-26 - A Pacsat Ground station for FalconSat-3

I was first exposed to Amateur Satellites as part of my undergraduate degree at the University of Southampton. I built a ground station to track and decode data from some of the early Packet Radio Satellites, or Pacsats. My supervisor was working on a store and forward architecture for rural parts of Africa. I had a blast. This was in 1989, 1990 and Windows was not even out. So everything was written in Turbo Pascal and ran on DOS. When I wanted to run more than one program at the same time we used DESKview. But mostly I just ran the Pascal program, which read rotor positions from a saved predictions file, moved the antenna by calling interrupts on the Kansas City Tracker card, controlled the FT-736R via the serial port and interfaced with the spacecraft via a TNC.

Now here we are in 2018 and there is an orbiting Pacsat that the US Air Force have handed over to AMSAT NA Operations. FalconSat-3 was used for training and is now available for Amateur use. Great news indeed and a chance to relive some of the amazing technology that was developed 20+ years ago.

The available ground station software is a program called WISP that was built for Windows 95 and can be made to work with Windows 7/8/10. I have that running and it is an amazing suite. But it hard for new users. It needs a registration code. It crashes from time to time. It is hard for us to bend it to our will. For example the compression programs need a Windows XP pif file, which is not supported anymore, so we can't change it to use modern compression algorithms.

What better way is there to understand these things that to write the code yourself? Some may call it madness, but I have set off to write a new modern version of a Pacsat Ground Station for FalconSat-3..

Bytes, Bits and Kiss Frames

Unlike FoxTelem, which started as an audio decoder (and became an SDR), I decided to start at the Byte level. The Terminal Node Controller (TNC) is the modem for packet radio and it outputs a stream of bytes that we can assume are correct. Corrupted packets that do not pass the CRC check have already been rejected. The TNC can be a hardware device plugged into the radio or a software program. I have used both. The hardware TNC is a little easier, so use it if you have one.

In either case the TNC needs to be running in KISS mode. In this mode the TNC receives an AX25 packet, decodes it and then writes all of the data bytes to the serial port without any further processing. The good news is that we don't have to understand how bits are encoded or how AX25 packets work in the data layer. The TNC handles that. We just get a stream of data bytes from the spacecraft wrapped in a KISS frame.

Kiss Frames are delimited by the bytes 0xC0 and start with a single control byte. All the other bytes are data. So a simple kiss frame is like the below:


C0 00 A0 84 98 92 A6 A8 00 A0 8C A6 66 40 40 17 03 F0 50 42 3A 20 4B 42 32 4D 20 41 43 32 43 5A 0D C0

This starts with C0, then has a control bytes which is 00 and is followed by a set of data bytes. It terminates with another C0. There might be lots of C0s between frames, we just consume them until the next frame starts.

Writing a new Wisp

So I have written a simple PacSat Ground station program that decodes KISS frames. I'm going to evolve this into a full ground station if I get time.

73
Chris


Enter Comments Here:

Name:

Answer this question to help prevent spam (one word, not case sensitive):
The third planet from the sun is called what?


Comments on this post

No comments so far.

Copyright 2001-2021 Chris Thompson
Send me an email