-- RickO - 05 Dec 2011

APRS Tracking Station


APRS stands for Automated Packet Reporting System. It is often used to send GPS coordinates or other data (weather, short messages, etc) digitally over amateur radio. The primary frequency for APRS in the United States is 144.390MHz. Anyone with a technician class amateur radio license or above can use APRS.


A typical APRS tracking station will require three main components. Those are
  1. HAM radio capable of receiving at 144.390MHz
  2. A Terminal Node Controller (TNC) which acts as a modem for the radio
  3. A computer to display APRS information in a meaningful way
The HAM radio will receive the data packets over the air in audio form. When you tune a radio to 144.390MHz and you are in a high traffic area, you will probably hear lots of noises that sound like an old dial up modem connecting to the Internet. Those are APRS packets. Those packets usually only last one or two seconds per transmission, so you will commonly hear many short bursts of these noises.


Any radio that can receive at 144.390MHz (2 meter band) should work fine as long as it has some type of audio output other than a main speaker. If you can hook up headphones then you can make it work. Some radios have a specific connector port on them designed to be used with a TNC modem. This is not required but it can allow for your APRS station to have more functionality.


There are two routes you can go with this. The first route is to purchase a TNC that will work with your radio. TNC's are generally pretty expensive (greater than $100) but you can often find them at HAM fests cheaper. You can also find cheaper "KISS" TNCs that operate in KISS mode only. This means they have no interface of their own to log into and they don't really do anything with the packets they receive. A KISS TNC will decode the audio data in to digital information and just send it through a serial port to your computer without any other processing. They will also take raw data from your computer and turn it into sound for transmission. They don't do anything fancier than that.

The other option is to use your computer's sound card as a TNC. This is often much less expensive and can work just as well. For this, you will need to install some software that knows how to decode the audio data into packet data and visa versa. I have used AGW Packet Engine in the past. It is free and runs on Windows. I haven't used it in a while so I am unable to provide a good tutorial on configuring it at this time. Google is your friend on this one.

I tried using my sound card with AGWPE in the past to do nearspace balloon chasing but we ran into a problem where the car engine generated too much noise and it caused the audio going into the sound card to get distorted. If we ran the laptop on battery it was fine, but using the power inverter did not work. If you plan on going this route for near space balloon tracking then make sure you test everything exactly how you will have it configured during the chase so you know for sure it will work.


There is good APRS software for Windows, MacOS and also Linux. There is even APRS software for mobile phones now. What computer you use will depend on the rest of your setup. If you are using your sound card as a TNC then obviously you need a sound card with a decent sample rate. Any sound card made in the last 15 years will probably work fine for that. If you are using a TNC then you will probably need to have a serial port with a DB9 connector unless you have a newer TNC that has built in USB support. If you need a serial port, you can usually use a USB to Serial adapter with no problems.


  • Xastir
    • Xastir is free, open source software for APRS tracking and transmitting. It runs on Windows, Linux and MacOS, although it looks like pre-compiled Windows binaries are not easily available for free online. I have had good luck so far with the Linux version but I have never used it on Windows or MacOS. Xastir supports the ability to download free maps from Open Street Map or Terraserver on the fly as long as you have an Internet connection. It will also cache downloaded maps so if you lose your Internet connection you can still use the cached maps.
  • UI-View32
    • I have used this software in the past with good results. However, I was unable to get it to work recently with my Kantronics KPC-9612+ TNC and Windows 7 on my computer. I'm not sure what the issue was but UI-View would just not talk to my TNC properly. This software works well but you have to register it before you can use it. Luckily registration is free but it can take a day or so for them to generate a serial number for you to use.
    • If you want to use UI-View then it may be worth googling a program called Taho.exe. This software allows you to download maps from Open Street Map to use with UI-View. It's a bit laborious but it's free.
  • winAPRS
    • I've barely used this software but I did get it working with my KPC-9612+ TNC on Windows 7. It seemed a bit more cludgy then UI-View32 or Xastir so I didn't use it much.
There are other options then just those three but those are the only three I have any experience with. Please feel free to add to this list if you have more information to offer.

Ricks Setup

This is how I currently have my APRS station setup.


Icom IC-207 mobile radio. This radio has a MiniDIN-6 connector on the back (looks like a ps/2 port) that is used to connect the radio to a TNC. The manual can be downloaded from Icom and other places online. The manual contains the pinouts for the TNC port.

It is important to note that the Radio puts out about +5V on the SQL pin as a carrier detect signal. So every time the radio hears someone else transmitting, it puts +5V to this pin. If no one is transmitting then there is 0V on the pin.

This radio has a 1200bps mode and a 9600bps mode. You can change the mode by holding the "Set" button and turning the unit on. You then cycle through the menu with the "set" button and use the tuning knob to change the setting once you see "Bps".

The TNC port on this radio uses pin 4 for 1200bps operation and pin 5 for 9600bps operation. I accidentally used pin 5 for 1200bps operation and I noticed that I could still receive data just fine. However, the TNC always thought the line was busy and so it never allowed me to transmit ever. It just queued up all of my outgoing packets until I unplugged the radio. Once I switched to pin 4, everything started working just fine.


So far I have just been using a 2m/70cm dual band mag mount whip antenna attached to an old cookie sheet. It's sitting on the floor in my house and it's been working fine. I will probably just use this on top of a car when we chase down our balloon.


I currently use a Kantronics KPC-9612+ TNC that I found at a local HAM fest for about $70. The manual can be downloaded from Kantronics' website for free. The manual contains the pinouts for all of the data ports as well as pretty much everything else you would probably want to know about the TNC.

I am currently using the 1200bps port to do APRS. This port connects up to the Icom IC-207 radio using a cable I custom made.

It is important to note that the Carrier Detect pin on the TNC expects 0V whenever there is already a signal present and positive voltage whenever it is safe to transmit. This is opposite to how the Icom IC-207 acts. Unforunately there are no software settings on my TNC (At least in this version of firmware) to invert the logic. If you leave the Carrier Detect pin unhooked on the TNC then it will allow you to transmit with no problem, you just might transmit on top of someone else's signal. Laura is currently working on a simple transister circuit to invert the logic for me. We will just build this circuit into the cable.


I am primarilly using my Acer Aspire One 721 netbook as my APRS station computer. Since I was having trouble with running UI-View32 under Windows 7, I am now running Xastir under Fedora 17. My laptop has no serial port, so I use a basic USB to Serial adapter. It shows up in my devices under /dev/ttyUSB0.


To install Xastir, I just did a "yum install xastir" and it worked right off the bat. It shows up under "applications -> internet -> xastir". With default Fedora permissions, I have to run Xastir as root in order for it to be able to communicate with the serial port. I haven't figured out how to fix this yet, but in the mean time I have just been launching xastir with "sudo xastir" and it works fine.

The first thing you want to do with xastir is setup a new interface. To do this, click on the "Interface" menu in the main menu bar, then choose "Interface control". It will bring up a window with an empty list. Click the "Add" button. To get it to work properly with my TNC, I chose "Serial Kiss TNC" in the next window. After that, it will bring up the "Configure Kiss TNC" window. You will have to put in your proper TNC port in order for it to work right. On my computer, this was /dev/ttyUSB0. You can figure this out by plugging in your USB to Serial adapter and then typing "dmesg" into a terminal. Just look for any messages about your serial adapter and see what device name it was assigned too.

For port settings, I chose 9600bps because that's what my TNC is set to use between the TNC and the computer. This is not necessarily the same setting as the speed over the radio. If you want to transmit, make sure "allow transmitting?" checkbox is checked at the top. Also make sure "activate at startup?" is checked if you want the TNC initialized automatically when you start xastir. Finally, you can check "Init KISS-mode" on startup towards the bottom. I'm honestly not sure if this works or not on my TNC but it doesn't hurt anyway.

Hit "OK" to save the config and back at the interface control window click on your new interface and then click the "start" button. If it works properly you should see something like "Device 0 UP" in the list now rather than "Device 0 Down".

To see if the software is receiving data properly now you can go to the View menu and click "Incoming Data". Then on the new window, check "TNC Data only". Whenever you hear a valid APRS packet on your radio, you should see the raw data come into this window, assuming everything is hooked up right and configured properly. If you don't see it then something is not right somewhere. You can also go to View -> All stations to see a list of all the APRS stations you have heard so far.

You can choose your map by going to Map -> Map chooser. I usually use Online/OSM_tiled_osmrender.geo. You can highlight as many as you want though, and it seems like it caches all the types you select. I'm not sure how it decides which one you actually see though. The more maps you highlight, the longer it takes to refresh the map screen. Xastir will cache all the maps you view so you can view them later if you lose your Internet connection. This is a good thing if you want to go chasing a near space balloon without an Internet connection. Just be sure to cache all the maps you think you will need.


I was originally going to use my old Garmin eTrex for my APRS station GPS but I have so far been unable to locate it (irony). Instead I was able to figure out a way to tether my Android phone to my laptop and use the phone's GPS for local tracking purposes. It was a bit tricky to configure but it does seem to work so far. I still have to try driving around to make sure it tracks me properly and accurately.

I had to download a free app to my Android phone called ShareGPS. When you load up the app, you can configure it to share your GPS information via bluetooth or USB. I went the USB route since I don't have bluetooth built into my laptop.

In order to get the USB to work, I had to do a few things. Step one was to install the Android SDK on my laptop. I just downloaded it from Google and unpacked it into my home directory. From there I also had to install java (yum install java). Then I ran the android program (<androidsdk>/tools/android) and told it to install more android tools. This was required so I could get "adb" tool.

Once I had the adb tool, I plugged my phone into the USB port and selected "PC Mode" on the phone side. Then I ran the command "adb forward tcp:50000 tcp:50000". This forwards your Android phone's port 50000 (where ShareGPS sends your GPS info) to your localhost port 50000. You can verify if this is working by telneting to localhost:50000 on your computer and seeing if GPS data is being dumped in.

Once that works, configure a new "Networked GPS" interface in the "Interface Control" menu in xastir. Just put in "localhost" for the host and "50000" for the port. Make sure you start the interface afterwards. To see if it's working, go to "View -> GPS status". It should tell you how many GPS sattelites are currently in view and also it should say "Fix:Valid".

I've noticed that after a while the GPS status will say "GPS older than 30 seconds!" I noticed that this happens once my phone screen turns off. If I press the power button on my phone to turn the screen back on then I start getting data again. I may have to just force the screen to stay on when tracking. Since it is plugged into my laptop anyway the battery should not die. I will have to play around with this some more though.
Topic revision: r3 - 13 Oct 2016, ClifCox

This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback