APRS Telemetry

Posted by Fred C (W6BSD) on Feb 28 2020

I wrote a little python program to send my iGate telemetry through APRS. The metrics include the temperature of the Raspberry-Pi, the load average, the amount of free memory, and network traffic.

Sending the iGate metrics through APRS allows me to use the graph tools offered by aprs.fi or the excellent aprsdirect.com, to access the health of my iGate from anywhere in the world.

The program written in python is called igate_telem and can be found on my github. I am run this program on a Raspberry Pi running Ubuntu Mate, but it should work without any or minimal changes on any other Linux distribution.

I am going to describe how to integrate igate_telem with an already working DireWolf installation. DireWolf is a software TNC1 with a lot of features and options and describing how to configure it would be the subject of a completely different article.


Since you are already running DireWolf on your machine, I assume you already have installed all the tools that will be needed to install and run this program. However, make sure the python module setuptools is installed. On Debian based systems such as Ubuntu, just run the command sudo apt install python-setuptools in a terminal to make sure it is installed.

Then go to your favorite working directory and clone the igate_telem repository and run the install with the following command.

$ git clone https://github.com/0x9900/igate_telem
$ cd igate_telem

Edit the file igate/telem.py to add your callsign. Then install the program using the following command.

$ sudo python setup.py install

The installation process displays a bunch of lines on your terminal. At the prompt, you can then invoke the program with the option --help to make sure it has been correctly installed.

$ /usr/local/bin/igate_telem --help

usage: telem.py [-h] [-c CALLSIGN] (-d | -e | -p | -u)

APRS RaspberryPi temperature

optional arguments:
  -h, --help            show this help message and exit
  -c CALLSIGN, --callsign CALLSIGN
                        iGate full callsign [default: W6BSD-5
  -d, --data            Send the APRS data
  -e, --eqns            Send the APRS equation
  -p, --param           Send the APRS param
  -u, --unit            Send the APRS units

Telemetry format

In APRS there are two kinds of telemetry messages: telemetry data and metadata.

The option --data in igate_telem gather and format the data before sending it through APRS. The options --param, --unit, --eqns will send the different metadata used to format the data.


$ /usr/local/bin/igate_telem --eqns
:W6BSD-5  :EQNS.0,0.001,0,0,0.001,0,0,1,0,0,1,0,0,1,0


In your DireWolf configuration, insert the following line.

CBEACON delay=0:45 every=60:00 SENDTO=IG info="https://github.com/0x9900/igate_telem"
CBEACON delay=0:10 every=5:00 SENDTO=IG infocmd="/usr/local/bin/igate_telem --param"
CBEACON delay=0:12 every=5:00 SENDTO=IG infocmd="/usr/local/bin/igate_telem --unit"
CBEACON delay=0:14 every=5:00 SENDTO=IG infocmd="/usr/local/bin/igate_telem --eqns"
CBEACON delay=0:15 every=5:00 SENDTO=IG infocmd="/usr/local/bin/igate_telem --data"

The first line sends a message every hour, indicating where the source of the telemetry can be downloaded from GitHub.

The next lines send the telemetry metadata: - --param will list the name of the different variables sent. - --unit will send a string indicating the units for each variables, such as Degrees, Megabyte, etc. - --eqns are the equation coefficients for scaling values.

The last line sends the actual data.

In each line, the field delay means DireWolf will wait for MM:SS before executing the line when the DireWolf is starting. On the first line, for example, the info will be sent 45 seconds after startup.

The field every will tell DireWolf to send the information every MM:SS.

The field SENDTO tells DireWolf how to send the information. For this example, the data is sent using the internet. If you don't specify this field, the default transmission mode is used. The default transmission mode is through the air-waves.


iGate CPU Temperature.
iGate CPU Temperature.

You can find an example of how telemetry works by looking for the call-sign W6BSD-5 on aprs.fi or on aprsdirect.com

For more info on APRS telemetry, you can read the excellent documentation by Kenneth Finnegan.

See also APRS iGate for Parachute Mobile

  1. A Terminal Node Controller (TNC) is a device used by amateur radio operators to participate in AX.25 packet radio networks. 

 APRS      Direwolf      Python