HAB Base is a Windows program designed to make it simple to manage one or more HAB receivers, especially LoRa receivers (e.g. USB or Pi gateway). It can also collect telemetry from other sources such as Sondehub (for amateur and/or meteorological flights). It accepts data in several formats from several different types of receiver, and displays the results as tables, charts and a map. Sources include:

  • Direct:
    • USB-connected LoRa receiver (LoRaGo, Arduino LoRa, ESP32 LoRa)
    • Bluetooth-connected LoRa receiver (ESP32 LoRa)
  • LAN:
    • LoRa Gateway
    • dl-fldig or fldigii
    • auto_rx Radiosonde receiver
    • HABDEC
  • Online:
    • HABHUB
    • Sondehub/Amateur
    • Sondehub
    • APRS
    • OGN
    • hab.link
    • MQTT Broker

Online sources can be filtered to only include balloons within a certain radius of your location. This is very useful for spotting balloons that you might be able to receive directly, so you can then set a receiver and maybe aim an antenna. The program gives you distance and elevation, plus a direction line on the map, to help with that. For each payload, you get:

  • Default telemetry
  • Extended telemetry (for payloads sending a fieldlist)
  • Display of distance and elevation
  • Ascent/Descent rate
  • Balloon/parachute on the map
  • Telemetry history table
  • Altitude plot

For local LoRa receivers you also get:

  • Signal strength gauge
  • Signal search function (frequency scan)
  • Uplink function (e.g. cutdown)

HAB Base also uploads your local telemetry to any of these online servers:

  • sondehub/amateur
  • hab.link
  • MQTT Broker

HABHUB Support

HABHUB is to be shut down at the end of 2022. The current release of HAB Base still supports download from and upload to HABHUB, however this will be removed early in 2023.

Screen Layout

The screen is split into 3 panes:

  • The left pane contains the telemetry sources, upload status buttons, and settings buttons
  • The centre panel is a live Google map showing the received balloons
  • The right panel shows the individual payloads being received

The pane dividers can be moved with the mouse and will remember their positions when the program is closed and re-opened.

System Settings

Click the System Settings button at the bottom-left of the program.

The callsign should be your ham radio callsign, if you have one, otherwise some unique identifier. It is only used for uploading telemetry from the program to the habhub and sondehub/amateur server, and means that you can then check that system to see what you have uploaded. Note that the program only uploads telemetry from certain sources – e.g. USB LoRa receivers – because other sources generally upload directly to habhub anyway.

The latitude and longitude are used to mark your location on the map, and to determine the distance to each received balloon. The altitude is used to determine the angle of elevation to each balloon.

The Payload Expiry value is used to determine when to remove balloons from the map and the payloads panel; any balloon that has not been heard of for that period is removed.

There are 5 upload options:

  • HABHUB enables uploads to the HABHUB server
  • Sondehub enables uploads to the sondehub/amateur system
  • HABLINK enables uploads to my hab.link MQTT broker
  • MQTT enables uploads to a custom MQTT server, using the supplied settings.
  • SSDV enables uploads of image data to the SSDV server

Finally, the UDP Output Port is used to broadcast received telemetry, in case you have a separate app that wants to see it. Set to zero or blank to disable.

Click Save to save the settings to the file settings.json.

Balloon Filters

Click the Balloon Filters button at the bottom-left of the program.

Here you can set filters to determine which balloons are accepted. So long as a balloon passes at least one filter then it will be passed through to the map etc.

Generally it’s sufficient to set just one filter, with a maximum distance so that balloons that are far beyond your radio horizon are excluded; otherwise if you enable any online source your map will quickly fill with balloons from across the globe.

Creating A Source

If you have no sources yet, click the “Add Source” button at the top of the left panel; otherwise click the “…” button on any of the existing source and choose “Add New Source” from the pop-up menu. You will then see:

You can choose from:

  • Logtail – Reads payloads from the habhub logtail
  • LoRa Gateway – Connects via TCP/IP to a Pi LoRa Gateway
  • LoRa Serial – Connects to a USB serial or Bluetooth serial LoRa receiver
  • TCP – Connects to a TCP port emitting telemetry
  • UDP – Listens to a UDP broadcast on the specified port
  • Habitat – Polls HABHUB for any of the listed payload callsigns
  • APRS / OGN – Connects to an APRS Server
  • MQTT – Listens to an MQTT Broker
  • WS MQTT – Listens to an MQTT Broker over websockets
  • Sondehub – Polls sondehub/amateur for nearby payloads

You will then see a settings screen specific to the type of source that you chose. All sources share some settings – the code (a unique 2-letter code for that source) the name – something longer and meaningful, and whether to enable this source or not. The last feature allows you to temporarily disable a source without deleting it.

For USB, connect the device and note which port it is allocated; check in device manager if necessary. Then fill in the COM port e.g. “COM4” plus the frequency and LoRa mode.

For Bluetooth, you will need to pair with the receiver before it can be used. As for USB, the device will be allocated a serial port number which you should note.

For a LoRa Gateway, enter the IP address or hostname of the gateway device on the Settings –> Gateway 1 (or 2) screen. Note: Android will not normally work with local hostnames, however if you configure your gateway(s) to emit UDP metadata, then that data contains the gateway hostname and IP address. You can then set the Android app to listen to the same UDP port, and when it hears that data it will match the hostname to the IP address so it can connect via that. For the gateway, you can set 2 frequencies and 2 modes assuming your gateway has 2 modules fitted.

For TCP sources, specific the IP address or hostname, plus the port number, of the program or device to connect to. This source is listen-only; you cannot control the frequency or other settings.

For UDP sources, you just need to set the port number. This source is listen-only; you cannot control the frequency or other settings.

Supported formats for the TCP and UDP sources include raw UKHAS telemetry, OziMux and OziPlotter formats.

For the Habitat source, enter a list of payload callsigns to poll for.

For APRS / OGN servers, enter the hostname and port of the server.

For MQTT brokers, set the hostname and port of the broker, the topic to subscribe to, and (if needed) username and password. Brokers are expected to publish telemetry either as UKHAS strings or in the same JSON format as used by sondehub/amateur.

For the Sondehub Area source, there are no parameters but remember to set your location in system settings, plus a listening radius in the balloon filter screen.


Created sources are listed in the left panel. By default they each occupy a small bar with the code/name of the source and some buttons. The bar is coloured:

  • Dark Grey is for sources that are currently disabled.
  • Green is for enabled sources
  • Lime is for active sources – i.e. ones with recent telemetry
  • Red is for sources that have failed to connect (see the status panel for details)

There are 2 buttons:

This shows the menu:

  • Enable/Disable the source
  • Modify source
  • Delete source
  • Add New source

This shows the full panel:

Not every source has all of these tabs:

  • Status – shows the latest telemetry, also events such as connecting to the source.
  • Channel(s): – (LoRa only) shows the current frequency/mode, current and packet RSSI values, latest packet frequency error, AFC switch. Also there is a “Search” button to help tune in to a transmission if you don’t know its exact frequency – the program will scan and automatically set the frequency for you. Note that this assumes a) the LoRa mode is correct, b) that the transmitter sends at least 1 packet every 5 seconds.
  • History – Recent telemetry as a table
  • Uplink – LoRa only, allows for uplinks to the tracker, if the tracker has been set for that.

This is the uplink window for LoRa serial sources:

The target box is for the payload that you are going to transmit to. This is automatically filled in for you with the callsign of the received payload.

The password box is used to apply encryption to the uplink message, and must match that set in the tracker. My Pi In The Sky, FlexTrak and FlexTrack programs all accept uplinks and all have this password encryption option.

The next area is for the type of command to transmit.

Then you need to tell the program when to transmit the message, so that it does so when the payload is listening. You can choose from Now, “At x second after the minute”, or “After Rx” to transmit immediately after a packet is received.

Upload Status

Each upload target has a status button, in grey if disables, red if there’s a problem (e.g. no internet connection), or green if OK.

For more information, click the button to display the status window:


Currently this defaults to Google map but that may change if usage starts to exceed my free quota. You can also choose from Bing, OpenMaps and TomTom.

Received balloons are shown on the map, as payloads/balloons/parachutes according to deduced flight phase. Each is surrounded by reception circles (as the HABHUB and Sondehub maps do) and lines between the balloons and your receiver position. The map is scrollable and zoomable as you would expect.


Payloads are listed in the panel on the right. As for the sources, by default only a small bar is shown with the background being a predetermined colour for that payload. The bar also has the time since reception on the left, with a lime background for recent reception, and the same 2 buttons as on the sources – an arrow to open the full panel and a menu button. The menu is currently inoperative.

The full panel is like this:

The tabs are:

  • Position – Current payload position, ascent/descent rate, distance and elevation. If the tracker is transmitting a landing prediction then that is included.
  • Signal – This tab is only present if this payload is being received by a LoRa Gateway or serial device. It shows the current signal strength.
  • History – Shows a table of recent positions, including the codes for each source that received that particular position.
  • Charts – Altitude plot.

The telemetry can be basic (just position) or extended according to the source. For example APRS servers report more details, and any payload sending a field list will display its full list of fields.


You can download the latest installer from the github releases page.

The installer is signed and contains the HAB Base executable itself, plus a DLL for the map, OpenSSL DLLs for the Sondehub upload and download, and an installer for Edge support (used by the map).