Dynamically Mapping Amateur Radio Packet Stations


After getting involved in packet radio a couple years ago, I quickly though to myself how useful it would be if there were a map of network nodes so that operators could have a visualization of the nodes they could connect to. One could determine how many hops it would take to reach their intended destination.

Recently, I set up a BPQ node and was able to connect to other node stations via the AX25 over IP, or AXIP, protocol. This gave me access to a wealth of information from other stations – most notably their node list and their MHeard list, which is a list of stations that can be heard via radio.

Because my node is accessible via telnet, I realized that I could write a Python script to log into it and retrieve my node and MHeard list. Easy enough. However, I then realized that I could take it a step further and log into my node, and then connect to another node to get their node and MHeard lists.

So, I got to work.

I decided to use a PostGIS (GIS extension for PostgreSQL) backend for the data storage. Working with PostGIS is a breeze and nicely integrates with the technology stack I used. On top of PostGIS, I utilized GeoServer, a Java server application that converts PostGIS data into Web Feature Services (WFS) and Web Map Service (WMS), ways of allowing retrieval of GIS data over the internet. The next step was the frontend. For creating the map, I used JavaScript with the OpenLayers API. This allowed me to feature several map layers, including:

  • Local operators (Those my radio can hear over the air)
  • Local Digipeaters (Stations that repeat signals, that I can hear over the air)
  • Nodes that I’m connected to via AXIP
  • Remote digipeaters ( Those that I detected from logging into remote nodes)
  • Remote operators (Those that I detected from logging into remote notes)
  • Network map

The network map shows the links between stations who share a common node. This is intended to show the extent of connectivity of an area.

I’m happy with the finished product after having put a lot of work into it. I hope others find it useful.

Leave a Reply