How to Build a Portable APRS Command Center

What is a Portable APRS Command Center

I find APRS both fun to play around with and very useful. APRS stations can be found with a wide range of capabilities and purposes. Some APRS stations are trackers: a low-power transmitter paired with a GPS that periodically beacon their position. Some APRS stations are designed for two-way messaging. I have built an APRS station that I call an APRS command center. This command center is the most capable, flexible APRS station I can create.

While this is an interesting theoretical exersice, I also have a practical need. I want to be able to provide APRS support for a bike race in the Utah West Desert where there is no internet, no cell service, and we need to track support vehicles over a 100 mile course. In addition to this use case, I want an APRS station that can support a wide variety of other situations. Here’s the design objectives for my portable APRS command center:

Capabilities

  • Receive APRS messages, beacons, telemetry, weather reports
  • Use GNSS to be aware of it’s location and the current time
  • Beacon the current location via APRS
  • Send APRS messages
  • Be an APRS digipeater to extend APRS RF coverage
  • Send to and recieve from the APRS-IS network service if internet connectivity is available
  • Provide a map with live display of APRS traffic
  • Provide KISS TNC, location, time, and internet connectivitity to other devices
  • Allow multiple concurrent users and devices

Flexibility

  • Powered from any common source: utility, solar, generator, or any 12V DC supply
  • Work with several types of radios, from a handheld to a 50W mobile with a mast and high-gain antenna
  • Be functional with or without internet connectivity
  • Work with a variety of internet connectivity options: phone hotspot, WiFi, or ethernet
  • Small and light enough to put in a backpack and run from a park bench
  • Powerful enough to run an event like a marathon, parade, or bike race
  • Portable enough to run from inside a moving vehicle
  • Easy and quick to setup and reconfigure to meet the operating requirements of any situation

To meet all these objectives, I needed to put together a modular system, so I can tailor the station to the resources available and the requirements of the situation.

Core Hardware Components

To meet these design objectives, I need a modular system. I selected a Raspberry Pi to function as the core of the command center. A Pi is inexpensive, has a wide range of available software, is small and light, and it doesn’t consume much power. I’m using a Pi 4 with 8GB of memory. This use case doesn’t require the higher performance or power consumptions of a Pi 5. It could easily run on a Pi 3, but I wanted to have some headroom for additional software. With a portable USB keyboard and mouse, and a small monitor, you can use the Pi directly. Or you can just bring a laptop or tablet and treat the Pi like a server. I use the Pi like a server.

I got an inexpensive USB GPS receiver from Amazon. There are hundreds of these out there. My primary requirement was to have the receiver on a cable so it can be positioned in a different place from where you put the Pi. I got a VK-162 from Amazon, which has a magnetic mount on the reciever/antenna, is waterproof, and has a USB cable to connect it to the Pi. When indoors, you can just set it on the table and it works great. When in a vehicle, you can stick it on the roof. Mine contains a u-blox 7 chip, which has broad software support and works out of the box on Linux.

Radios and Antennas

To achieve the flexibility and modularity of our design requirements, the command center should work with a variety of radios and antennas. I selected a Digirig Mobile as an interface between the radio and the computer because it’s reliable, and it works with most radios, including all the radios that I have. I can use the TNC built into my TH-D75, and you could use other popular hardware TNCs like the Mobilinkd. I’ve run the command center with:

  • a $20 Baofeng GT-5R with a SignalStick antenna
  • a Wouxun KG-UV9PX with double the transmit power of the GT-5R and a superheterodyne receiver, connected to an Ed Fong roll-up J-Pole hoisted up a tree
  • A Kenwood TH-D75 with either the built-in TNC or using the Digirig as an audio interface so we can take advantage of the improved performance of software TNCs, connected to a mag mount Comet CA-2x4SR antenna on the roof of my truck
  • A Yaesu FTM-500DR that’s mounted in my truck and wired to a Comet SBB5 that’s mounted on the left front fender
  • A 50W Kenwood TM-V71 connected to a Diamond X300 antenna with 6.5 db of gain mounted on a 25 foot portable mast

Network and Internet

In this context, when I reference “Network”, I mean a local TCP/IP network. Internet means that local Network is connected to the public internet.

A local network is great if you have more than one operator in the station. This allows multiple people to use the capabilities of the command center at the same time. It also let’s a single operator use multiple devices.

You need internet access for the command center to be an APRS iGate. But everything else, including live map display, can be done with out it. With clever use of software, you can use bluetooth to connect to the Raspberry Pi and get a lot of functionality on a tablet or phone without having a TCP/IP network.

For utmost flexibility and portability, it would be ideal to have a single device which could be a network switch, a WiFi access point, and an internet router. If you are a Linux expert, you can roll your own with a small single board computer. But most single board computers only have one ethernet port.

Fortunately, there are inexpensive devices which perform this function off the shelf: they are called travel routers. Many of them run some variant of linux. A travel router has it’s own WiFi SSID which you connect your devices to, creating a local TCP/IP network. It can also connect to the internet using a variety of methods: hotspot from your cell phone, any internet connect WiFi, or a hardwired ethernet port. When connected to the internet, it also becomes a router, making the internet connection available to all the devices on the local network.

I choose the GL.INET Slate AX for this setup. It’s small, light, and powered by USB-C. It offers WiFi 6 for a local network, with separate SSIDs for 2.4 GHz and 5 GHz bands. It also includes three hardwired ethernet ports, one designated for internet connectivity, the other two hooked to the local network. It has a USB port, which can be used for network storage (not interesting for the APRS Command Center), or to tether to your cell phone via a cable (very interesting for this use case).

The router runs OpenWrt, giving you all the benefits of community maintained software. The hardware is purpose built. I haven’t seen any generic single board computers with three gigabit ethernet ports and built-in WiFi that cost $120.

Optional Hardware

With a Raspberry Pi, a GNSS receiver, a radio and antenna, and the travel router, you have a very capable station. Here’s some additional components you can add for even more capability:

  • Plug a small 5 port ethernet switch into the travel router for more hardwired ethernet connectivity
  • A network KVM like the GL.INET Comet Pro or a JetKVM connects to the Raspberry Pi and allows you to access it login screen and desktop from any browser, including a tablet.
  • If you are feeling flush, a Starlink Mini will get you connected to the internet from anywhere. It plugs right into the travel router.

Power

I could write an entire series of articles on how to build a power setup that works with solar, utility power, a gas generator, and provides both AC and DC power distribution. Maybe I’ll do that someday. If you pick devices (which I have) that can run from USB-C or directly from 12V DC, you can easily make them work with any power source.

Here’s two power options that are short and easy to explain. When utility power is available, an inexpensive 6 foot extension cord with a couple female plugs on one end is indispensible. Add an Anker Prime 200W 6 Port Desktop charger which has 4 USB-C ports and 2 USB-A ports and you can run the whole command center if you are using a handheld radio. You’ll need a DC power supply if using a mobile radio.

You can also run the whole thing from a 12V battery box, as long as you have a USB-C car charger with enough ports to run the Raspberry Pi and the travel router.

I’ve also run the command center from a 10,000mAh USB-C battery pack.

Software

Once you have the hardware, you need software to get anything done. I installed Raspberry Pi OS on the Raspberry Pi.

Dire Wolf has been around for a long time and is highly regarded, but I decided to use the newer Graywolf. Graywolf has a web configuration UI. It shows a real-time display of received APRS position reports on a map, and has no-fuss built-in map downloads for offline map display. It can beacon any number of APRS objects at locations you define. This is very useful at events, because the command center can beacon APRS positions for start/finish, aid stations, water stops, etc. It also sends and receives APRS text messages via it’s web interface. Graywolf can be configured to publish a TCP KISS TNC on the network, allowing any other mobile/tablet/laptop to use the radio configured in Graywolf for whatever they need.

I set up gpsd on the Pi, and made it available on the network, so any device can get access to the time and position data.

chrony acts as a time server, which because we have a local GPS, can publish mostly accurate time to devices on the network.

I wrote my own kiss-tnc-bridge, which makes the TCP KISS TNC from graywolf available via Bluetooth Low Energy. Works great as a TNC for the aprs.fi app running on my cell phone.

Finally, I created my own dashboard which monitors all the devices and manages the software running on the Pi. The dashboard includes documentation on how everything works, and how to configure things for different scenarios.

Packaging and Storage

Portability was one of our key criteria, and we have a modular system, so we should package the various modules individually. There are a million kinds of pouches avaialble that would work for this task.

I chose to use pencil cases because they are inexpensive and the right size. Here’s how I pack it all up:

  • one single zip case for the Digirig and the various cables for my radios
  • one double zip case for the Raspberry Pi, gps, and associated cables
  • one smaller single zip case for the travel router
  • one larger case for the KVM, its got a lot of associated cables

For power, I have several pouches, which you can grab some or all of, depending on what the scenario is:

  • a single zip case for a USB-C battery, which is the most portable power option
  • a single zip case holding the USB-C power station that runs from utility power
  • a double zip case

When packaging things up, I generally put the cables for a module in with the module. The travel router module has a USB-C cable for power, and some ethernet cables. The Raspberry Pi has a mini-HDMI to fullsize HDMI cable, because the Pi is the only thing I own with a mini-HDMI port.

Use Cases and Utility

  • APRSDroid using command center WIFI and TNC
  • APRS.fi for ios using command center WiFi and TNC
  • tablet as additional live map display
  • laptop operations
  • live tracking of sag wagons at a bike race