KISS, HDLC, AX.25 and friends

A while ago, I uploaded my gr-kiss out-of-tree GNUradio module to Github. This is a set of blocks to handle KISS, HDLC and AX.25, which are the protocols used in amateur packet radio. There are several other OOT modules that do similar things, but I didn't like the functionality of them very much. While programming this module, I've also noted that the documentation for these protocols is not so good sometimes. Here I'll give a brief description of the protocols and explain how everything works together.

Continue reading "KISS, HDLC, AX.25 and friends"

GOMX-3 data download

This weekend, Mike DK3WN caught GOMX-3 downloading a good amount of data. See his post here. This data consists mainly of the satellite retransmitting a lot of beacons that were generated during the last 16 hours or so.

GomSpace has recently released a complete parser for GOMX-3 beacons of type 1 0 (these are the beacons that contain ADS-B data). I have already incorporated this code into my gr-ax100 fork.

The binary data in KISS format (almost 250KB) and the parsed beacon data received during this data download is in gist. Probably the most interesting thing is the ADS-B data. Below you can see all the aircraft on the map. Clicking on any of them will show the details for that aircraft.

Since the orbit of GOMX-3 has an inclination of 51.6º, the satellite doesn't usually detect aircraft above 55ºN or below 55ºS. GomSpace has an image which shows lots of flights received with GOMX-3. There, the major air routes and hubs are apparent.

Scramblers and their implementation in GNUradio

A scrambler is a function that is applied to a sequence of data before transmitting with the goal of making this data more "random-like". For instance, scrambling avoids long runs of the bits 0 or 1 only, which may make the receiver loose synchronization or cause spectral concentration of the signal. The receiver applies the inverse function, which is called descrambler, to recover the original data. The documentation for the scrambler blocks in GNUradio is not very good and one may need to take a look at the implementation of these blocks to get their parameters right. Here, I'll try to explain a bit of the mathematics behind scramblers and the peculiarities of their implementation in GNUradio.

Continue reading "Scramblers and their implementation in GNUradio"

Decoding packets from GOMX-3: modulation and coding

Recently, Mike DK3WN pointed me to some decoder software for the satellite GOMX-3. This satellite is a 3U cubesat from GomSpace and transmits in the 70cm Amateur band. It has an ADS-B receiver on board, as well as an L-band SDR. As far as I know, no Amateur has decoded packets from this satellite previously, and Mike had some problems running the decoder software. I have taken a look at the software and tried my best to decode some packets from GOMX-3. So far, I have been able to do Reed-Solomon decoding and get CSP packets. However, I don't have the precise details for the beacon format yet. Here, I describe all of my findings.

Continue reading "Decoding packets from GOMX-3: modulation and coding"

A bunch of data from AAUSAT-4

Recently, I have published a Gnuradio AAUSAT-4 decoder in Github. It is based on software from the university team, but several parts have been rewritten completely.

The current features of this decoder are as follows:

  • FEC decoding of both long frames and short frames using the code from bbctl (this code is included in the Gnuradio decoder)
  • CSP header parsing according to the specifications in Wikipedia
  • Parsing of the COM and EPS fields in telemetry beacons, using the code from the university team

In the future, I would like to be able to parse more data from the satellite, but I don't have the format specifications. I'm trying to get the university team to send me some information.

Continue reading "A bunch of data from AAUSAT-4"

Scanning Ku band satellites with the FUNCube Dongle

I've recently installed my satellite dish and modified LNBF in my garden. This equipment will be used to receive Es'hail 2, the first geostationary satellite carrying an amateur radio transponder. Here I'll look at the hardware I'm using, how I did the alignment to the 25.5ºE geostationary orbital position where Es'hail 2 will be located, and how to have some fun scanning the direct broadcast satellites in the Ku band with a FUNCube Dongle Pro+.

Continue reading "Scanning Ku band satellites with the FUNCube Dongle"

Calibrating the S-meter in Linrad

In a previous post, I talked about the GALI-39 amplifier kit from Minikits. Here I will describe the procedure to calibrate the S-meter in Linrad (or another SDR) using this amplifier or any other amplifier with a known NF and an uncalibrated signal source. Leif Åsbrink has a youtube video where he speaks about the calibration of the S-meter in Linrad. However, he doesn't use an amplifier, so I will be following a slightly different procedure.

Continue reading "Calibrating the S-meter in Linrad"

Testing microphone performance for Codec 2

Codec 2 is the open source and patent-free voice codec used in FreeDV, a digital voice mode used in amateur radio. Since Codec 2 is designed to be used at very low bitrates (the current version of FreeDV uses 1300bps and 700bps), it does an adequate job at encoding voice, but can't encode well other types of sounds, and thus fails poorly in the presence of noise. Hence, microphones which may be good enough for other applications can give poor results when used for FreeDV (if, for instance, they pick up too much ambient noise or have too much echo). This is a small note about how to test the microphone performance for Codec 2.

Continue reading "Testing microphone performance for Codec 2"

Using Linrad as a panadapter

Recently, I installed a G4HUP PAT on my FT-817ND. This is a small board which allows one to tap the IF of a conventional radio receiver to use an SDR as a panadapter (essentially, a waterfall display which shows a chunk of spectrum about the frequency tuned on the receiver). In the previous post I described the installation of the hardware. Here I will describe how I've set up Linrad to suit my preferences. One interesting aspect of this set up is that I've ended up adding a bit of code in Linrad to make it read the dial frequency of the radio using CAT and make Linrad track the frequency as one tunes around in the radio.

Continue reading "Using Linrad as a panadapter"