SkyGate is a complete tracking GUI application that runs on a Pi and fits nicely on a 7” screen. It brings together all the tracking activities into one intuitive interface featuring:

  • Live tunable LoRa reception and decoding
  • Live tunable RTTY reception and decoding (with compatible USB SDR)
  • Image reception and previewing
  • GPS tracking to report your location (when using compatible GPS USB dongle)
  • Data, images, and GPS upload functionality to HabHub tracking site
  • An Overview tab presenting a high-level summary and bearing to payload
  • Full customisation via the Settings tab


To install our SkyGate software, simply run the following in a command prompt/terminal window:

sudo apt update
sudo apt install python3-skygate

Then follow the steps here to complete the setup.

Tracking box

Here’s a portable SkyGate tracking box build using a plastic case that houses the official Pi 7” touchscreen, Pi 3, USB GPS dongle, LoRa receiver board, RTL SDR (Software Defined Radio) device, and a 5V powerbank:

Note the SMA radio sockets for connecting to suitable aerials at the top left and right.

Inside, the parts are laid out like so:

To build, you will need:

Features walkthrough

The software starts on this information screen:

The software has six function screens, one per button on the right, so just click/press on the appropriate button. We’ll go through them in order, starting with the HAB screen:

This screen shows details of the latest payload that it received, from either LoRa or RTTY; if you want to only show one of those, then use the radio buttons on the right.

As well as showing basic payload telemetry, this screen also checks your current GPS location to show you how far away the payload is, and in which direction. Since we have no electronic compass, the direction relies on the direction data from the GPS dongle, which only works if you move. So be sure to walk a few paces if the compass heading is erratic or appears to be incorrect.

The next screen shows live images, captured in SSDV format by your HAB and received by your receiver. Normally, the latest image (in this case, an artistic rendering of an office ceiling) is shown on this screen; you can use the buttons on this page to look through all captured images.


By default, SkyGate also uploads your image data to, where the data is combined with data from other receivers to create better images. For bandwidth reasons, SkyGate doesn’t display online image data and instead only shows images that your HAB captures.

Next is the LoRa screen, showing the raw LoRa packets as they are received:

Note that some packets are image data, and some telemetry data.

If you are expecting to receive LoRa packets but none appear on this screen, you might need to use the Up and Down buttons to adjust the receiver frequency to match the transmitter. That’s because LoRa modules aren’t always set to the exact frequency you select — due to tolerance, they can be out by up to 4kHz. This applies to both the transmitter (tracker) and receiver (SkyGate), so if you are unlucky, they could be as much as 8kHz away from each other. They will lock within about 4kHz, so you may still need to tune them up or down 4kHz before they can lock. Once they do, any residual error is shown at the bottom of the screen (see “Err: 1.1kHz”). Ideally, you should reduce this to less than 1kHz using the Up and Down buttons.

The RTTY screen is similar, but shows received RTTY packets.

These packets are received by a separate program called dl-fldigi, which you can open by pressing the button in the bottom right-hand corner.

If you don’t see something similar to this on your display, use the Up/Down buttons to tune the receiver. RTL SDR devices do not like strong signals, so if your tracker is within a few metres’ distance, remove the aerial from it to reduce the signal strength. Once you have tuned in, touch the screen between the two large areas of yellow signal to tell dl-fldigi what part of the signal to decode.

The GPS screen is very simple:

If you don’t have a position yet (less than 3 satellites), try moving to somewhere with a clearer view of the sky.

If the ‘GPS Connection Status’ field shows “Cannot open device”, then check the settings (see next section).

Finally, this is the Settings screen:

The menu items are:

  • Receiver Callsign — this is used for any uploads from the LoRa receiver. It will appear on the live map below the balloon details. Set it to something meaningful (e.g. school or project name)
  • LoRa Upload — select this box to enable LoRa uploads; unselect to disable (e.g. when you are testing and don’t need to upload to the map)
  • LoRa Frequency — set this to match the LoRa transmitter (see the section on LoRa above)
  • LoRa Mode — set this to match the transmitter. There are currently two modes: 0, which is slow and is best for long range; and 1, which is faster and better for sending images
  • RTTY Frequency — set this to match the RTTY transmitter
  • Chase Car ID — this is used to label your position on the map
  • Car Upload Period — this is the time interval between uploads of your position. 30 seconds is a good value
  • Chase Car Upload — select this box to upload your position using the above parameters; unselect it to disable uploading
  • GPS Device — this is the Linux device name that matches your GPS dongle. Depending on the make, this will typically be /dev/ttyACM0 or /dev/ttyUSB0