My APRS stuff

My handheld APRS rig

I’m using a Yaesu VX8-GE which has a built-in TNC on it’s second VFO, with full APRS support. My handheld’s APRS callsign is HA2NON-7. You can send me a message on APRS by sending an email to with your message in the subject (source code for this application can be found here).


I have an APRS IGATE at home, currently in receiving-only mode. So it just listens on the APRS freq (144.800 in Europe), and posts everything heard to the APRS-IS (for simplicity: the internet version of APRS) network. I’m planning to convert it to an RX/TX IGATE in the near future.

The equipment: 3 el. Yagi above my window on the rooftop facing east-southeast towards Tatabánya, Wouxun KG-689 VHF handheld hanging on the wall, a homebrew 7808 power supply for it and my home Linux server called puttony with an SB Live soundcard (so I’m using a soundcard modem instead of a TNC).

I set up this APRS gateway for two reasons, the first is that I like to try out everything ham-related, the second is that the APRS digipeater on the Gerecse mountain can’t be reached from and around Tatabánya, where I go quite often with my car. So now everybody can see APRS stations on (or other tracking sites/apps) moving around Tatabánya and the nearby M1 highway.

APRS in my car

I’m using an old and inaccurate Rockwell GPS receiver module with an active antenna both bought on eBay, a TinyTrak v3 and a homemade relay circuit for switching on/off the whole thing according to car ignition and a Grundig FK105 as the transmitter (14W output power) with a small antenna bought on eBay.

Here’s my TinyTrak config (secondary tab is nearly the same):

HG2EBH Zsolt noticed that my TX delay is not enough, it should be at least 350ms and my path is obsolete, now everyone should use WIDE1-1,WIDE2-1 for a mobile station so now I’m using these settings.

Now this APRS rig doesn’t function very well (maybe it’s an antenna problem), but I’ll fix it soon.

So how to make an APRS IGATE?

First you need the software called soundmodem. I compiled it from source (extract somewhere, then run configure, then run make, make install), you can download it here. It has a graphical configuration tool called soundmodemconfig. As I don’t have X on my server, I installed xming on my desktop Windows machine, which acts as an X server, opened putty and before connecting to my Linux server via SSH, I enabled X11 forwarding in Connection -> SSH -> X11:

After opening the SSH connection, I was able to run soundmodemconfig (make sure you run it as root, otherwise it won’t be able to save the config). I made a few screenshots about my settings:

I’m using /dev/dsp1 because I have two soundcards in the machine and I plugged the Wouxun into this one.

Poor Wouxun needs pretty much tx-delay to be able to transmit valid APRS packets…

Demodulator and modulator settings are the same as you can see.

After you are finished with the config, you can use the various tools in the diagnostics menu, like the scope, spectrum analyzer and modem to if your setup is working. Don’t forget to adjust you radio’s volume so it won’t be distorted on the soundcard (check the levels with the scope). For adjusting soundcard record inputs and volumes, I’m using the program called aumix, which is in the Debian distribution. It can save and load custom volume configs, I saved mine to /home/nonoo/.aumixrc and then I edited /etc/init.d/aumix, put these to the beginning of the file:

#! /bin/sh
aumix -d /dev/mixer -L -f /home/nonoo/.aumixrc &2>/dev/null
aumix -d /dev/mixer1 -L -f /home/nonoo/.aumixrc1 &2>/dev/null

This loads the custom volume/record settings for my two soundcards (to make everything clear, you need only one soundcard an APRS IGATE, I have two because other reasons). The /etc/init.d/aumix file should load your default /etc/aumixrc config, but it never worked for me (I didn’t spent much time on the subject, it’s not an elegant solution, but works).

I’m using PTT on the parallel port (see the first soundconfig screenshot). This needs parport and ppdev kernel modules (or compiled into the kernel). Parallel port DATA0 pin (pin#2) is driven high (+5V) when PTT is on. Of course if you want a receive-only IGATE, you don’t have to mess with PTT.

After setting the recording input and volumes, checking it with the scope, trying out PTT and if your soundmodem can decode packets (use diagnostics -> modem), you can close soundmodemconfig. You can download my init.d script to start soundmodem here. After putting it into /etc/init.d, exec this:

update-rc.d soundmodem start 15 2 3 4 5 . stop 20 0 1 6 .

This will put symlinks to the soundmodem init script to /etc/rcX dirs, so it will start automatically at system boot, and shuts down at shutdown.

The next thing is to set up the AX25 interface, edit /etc/ax25/axports. I only have one line there (besides the commented out lines of course):

HA2NON-1        HA2NON-1        1200    255     2       144.800 MHz (1200  bps)

After editing this, start soundmodem (/etc/init.d/soundmodem start). If you run ifconfig, you should see your AX25 interface up. If you don’t see it, make sure you have mkiss and ax25 kernel modules loaded (or compiled into the kernel).

I listened to my Wouxun transmitting on my Windows machine with MixW (it can decode APRS packets) and found out that sometimes – quite often – some broadcast UDP data (maybe some DHCP stuff? I didn’t check what it was, just disabled it) gets transmitted. To eliminate them I’m using this script:

# ax25 broadcast ignore
iptables -A INPUT -i HA2NON-1 -p udp -j DROP
iptables -A OUTPUT -o HA2NON-1 -p udp -j DROP
iptables -A FORWARD -i HA2NON-1 -p udp -j DROP

Make sure this script runs at every boot.

I’m using the software called aprx for gatewaying. It can act as an rx-only IGATE, rxtx IGATE and also as a digipeater combined. Download it here. After unpacking, run configure, make, make install. I think it needs the libax25-dev package, install it and other missing libs.

You can find it’s configuration in /etc/aprx.conf, mine can be downloaded here. Server is, which is a round-robin hostname for the tier2 APRS servers around Europe. The raw beacon starts with a ! character, then comes the position (4738.48N/01818.15E). Between the lat/long positions there’s a / character, which selects the symbol table used for marking the gateway on APRS maps like The ‘y’ character after the position part selects the symbol to use. Symbol table is here. After the symbol char there’s PHG2277, which is the Power/Height/Gain ratio, you can read about it here (search for power-height-gain). After this comes the comment.

The init.d script I’m using to start/stop aprx is here. After putting it into /etc/init.d, exec this:

update-rc.d aprx start 20 2 3 4 5 . stop 15 0 1 6 .

This makes aprx to start after soundmodem at system boot, and shut down before soundmodem at system shutdown. Don’t forget to make the dir /var/log/aprx/, otherwise aprx won’t be able to write the log files.

After running aprx, you should see your APRS raw packets on (filter to your callsign). Please write a comment if I missed something. :)

Simple TCP/IP APRS beacon

I made a simple PERL script for reporting the position of anything to the APRS-IS network. Script is here. I no longer use it (aprx can send a beacon of course). Here’s a PHP version of the location sending script.

oh2mqk 2010-05-29 22:58:08

The Aprx itself does not need libax25* to compile or to use. Also it is quite neutral to boot/shutdown order, when you connect the soundmodem to Linux system AX.25 network.

The Aprx is now a full feature Digipeater as well as bidirectional APRS iGate.

Furthermore, I try to supply pre-compiled debian binaries (debian 4.0 at present, runs also on debian 5.x i386/x86-64) so that you really do not need to compile anything. We have a few digi+igate machines around the OH which are very small PCs with 128MB RAM and at most 1GB flash drive for a “disk” – no moving parts at all. Some of those run this older debian version, and Aprx is happy at all versions.

73 de Matti, OH2MQK

Nonoo 2010-05-29 23:32:32

Thank you for the info!

Steve 2010-10-09 06:47:13

I’m running aprx 2.0 quite nicely on a Linksys WRT-54G v4 router loaded with OpenWRT Linux. Digipeater and tx/rx iGate.

Steve, W8AN

Nonoo 2010-10-09 09:53:43

what sound card are you using and how?

Francis 2011-03-08 17:06:53

Fine, thanks for these info !

73s from F4GMT

Zsolt 2011-05-06 17:35:39


Lenne kedved lecserélni az APRX-et egy fejlesztés alatt álló hazai aprs digi/kapu szoftverre, a DiXPRS-re?
Örülnénk, ha minél több helyen lehetne tesztelni.

Lásd pl. HG2PPA-2 infó és telemetria:

Több infó:

Küldj mail-t, ha érdekel ;)
73! Zsolt HG2EBH

Aaron Scheiner 2011-05-14 23:12:03

Great article! Thanks.

Nagy Istvan 2011-11-10 08:40:50

Nagyszerű project!
Már én is beépítettem egy aprs kütyüt az autóba.
Érdekes, hogy amint elhagyom Tatát Tatabánya irányába, akkor már csak a hg1pny szokott venni. Újváros-Alsógalla környéke meg teljesen holt zóna.Én ide jobban belátok egy yagival, ugyhogy már elkezdtem fejleszteni egy igatet pic24-gyel. Az internetes rész már beindult…


Nonoo 2011-11-10 09:11:54

Gerecsei APRS atjatszo nem tudom, hogy mukodik-e mar, majd megfigyelem, volt par honap, amikor nem ment. Lehet amugy, hogy szar mar az antennam, mert a fenyofa is elegge benott ele :)

Alp Sayin 2012-06-06 12:52:58

Hi, great work! Thank you for explaining these stuff in a simple manner. May I ask how did you connect your soundcard outputs(i.e. mic in and speaker out) to the handheld radio for puttony? Did you connect them with simple audio cables or did you use some kind of resistor circuit to adjust the levels?

Nonoo 2012-06-06 19:17:33

Hello, I used just simple audio cables as the radio doesn’t have to transmit. Volume is reduced on the radio.

F8FFP 2012-12-07 19:36:43

Good morning I like to use your script for debian and raspberry Pi. How to set up script?

Pingback by Setting up HF APRS iGate | YDØNXX's Blog 2013-09-18 02:56:58

[…] Here is the site that explains the procedure to remote configure the soundmodem. […]

Name (required)
E-mail (required - never shown publicly)
Webpage URL
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> in your comment.

Trackback responses to this post

About me

I'm Nonoo. This is my blog about music, sounds, filmmaking, amateur radio, computers, programming, electronics and other things I'm obsessed with. ... »


Listening now

My favorite artists