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 firstname.lastname@example.org with your message in the subject (source code for this application can be found here).
IGATE at my QTH
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 aprs.fi (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:
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 euro.aprs2.net, 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 aprs.fi. 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 aprs.fi (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.