APRS microModem


24 February 2017

I was looking for a home for some recently purchased Arduino Nanos when I came across a project for an APRS Modem created by Mark Qvist in Denmark (http://unsigned.io) . Mark's design is built around just about any flavor of Arduino. In addition to a schematic, Mark provides the firmware for a KISS mode modem. The hardware is super simple to build, but you have to tweak the design to interface with your particular radio, especially the PTT circuit. Coming from the Arduino, the PTT signal is a HIGH so I had to add a transistor to reverse it to a LOW required by my Yaesu FT-2500M 2 meter transceiver.

https://sites.google.com/a/wt4y.com/radio/aprdmicromodem/APRSmicroModemSchematic.jpg

R1 - 1k, R2 - 2.2k, R3 - 3.9k, R4 8.2k, R5 - 270, R6 - 100k, R7 - 1k, R8 - 270, R9, R10 - 100k, R11 - 10k, R12 - 470*
C1 - 100nf, C2 - 4.7uf, C3 - 1mf non-polarized (I used a .1mf, worked just fine)
Q1 - generic NPN transistor (2n2222 etc.)
D1 - Red LED (indicates transmit out)
D2 - Green LED (indicates received data)
* Note: R12 not needed if PTT and Mic Out lines are combined for many HT's such as Yaesu, Icom and Alinco. Research your particular radio for PTT and Microphone Input requirements.

Here's the completed hardware, the APRSmicroModem on the left, a Raspberry Pi in the center and a 5 volt power supply on the right.  Note the external USB WiFi required because the Pi's internal WiFi  doesn't work so good inside an aluminum box. I had problems with a too low voltage on the Arduino because the power was coming from the USB connection. The ribbon cable connects 5 volts and ground in parallel from the power supply to the Raspberry Pi and the Arduino.
https://sites.google.com/a/wt4y.com/radio/aprdmicromodem/APRSmicroModemHardware.jpg

Now you have to flash the firmware for the Arduino to turn it into a KISS mode modem. The file is at:
https://github.com/markqvist/MicroAPRS/blob/master/precompiled/microaprs-5v-kiss-latest.hex
You should go to https://github.com/markqvist/MicroAPRS and download a ZIP file containing everything including the .hex file.

For instructions on flashing the firmware, check out http://www.wt4y.com/arduino-bootloader. This is by no means the only method and you may have your own favorite programmer so have at it.

Now it's time to install the APRS client on the Raspberry Pi. If you want the GUI client Xastir, you will need a Raspberry Pi running the desktop version of Raspian.

The following directions are for APRX, a command line only client.
I run commands as root (not recommended) so if you get errors, precede the commands with sudo.
Check for latest version at: http://thelifeofkenneth.com/aprx/. When these instructions were created the latest version is 2.9.0.

This will download it:

wget http://thelifeofkenneth.com/aprx/debs/aprx_2.9.0_raspi.deb

Now install it:
dpkg -i aprx_2.9.0_raspi.deb
Edit the file /etc/default/aprx so the client starts when the Pi is restarted:
nano /etc/default/aprx
Change the file so that the configuration reads: STARTAPRX="yes" and DAEMON_OPTS=""
Save the file and issue the following commands:

update-rc.d aprx defaults 84

/etc/init.d/aprx start

The manual you will need to read and understand to configure the client is at: http://thelifeofkenneth.com/aprx/aprx-manual.pdf
The configuration file is /etc/aprx.conf
Here is my configuration for a Tx/Rx iGate. Read the manual if you want something else like a Rx only iGate. You must change the values highlighted in yellow. See the notes at the end.

mycall YourCallSign myloc lat xxxx.xxN lon xxxxx.xxW <aprsis> passcode xxxx server noam.aprs2.net heartbeat-timeout 1m </aprsis> <logging> pidfile /var/run/aprx.pid rflog /var/log/aprx/aprx-rf.log aprxlog /var/log/aprx/aprx.log erlangfile /var/run/aprx.state </logging> <interface> serial-device /dev/ttyUSB0 9600 8n1 KISS tx-ok true </interface> <digipeater> transmitter $mycall <source> source $mycall </source> </digipeater> <beacon> beaconmode both cycle-size 15m beacon symbol "I&" $myloc comment "PHG70966/ RxTx iGate Nicholson, GA" </beacon>

Notes:
  • Obviously, use your call sign.
  • To understand how APRS reads the latitude and longitude, see the following: http://ember2ash.com/lat.htm. Make sure the value for longitude is 5 digits before the decimal point, even if you have to precede it with a zero.
  • If you don't know your APRS passcode, go here and generate yours: http://apps.magicbug.co.uk/passcode/
  • You can leave the server value at noam.aprs2.net if you live in North America.
  • Make sure the correct USB port is listed for serial-device.
  • The beacon you transmit can be anything you want. The optional "PHG" (Power Height Gain) code will advertise the characteristics of your antenna. To calculate your very own PHG, go to: http://www.aprsfl.net/phgr.php. Unless you live in Nicholson, GA, you should change this also.
The red LED will turn on when transmitting and the Green LED will turn on as the modem decodes received packets. Make sure the volume control is turned up high enough, but not too high that you over-drive the modem. After a few seconds of operation, you should be able to find yourself on the map at: http://aprs.fi/. You may have to search for your call sign.

Note: If you really really want to run a Raspberry Pi desktop with a GUI APRS client, here are some brief instructions:
Get the latest Raspian image at: https://www.raspberrypi.org/downloads/raspbian/
You will want "RASPBIAN JESSIE WITH PIXEL"
Download and unzip the file.
Write the image to your SD card using Win32 Disk Imager
A very nice fellow has written a script to run about 100 commands that install Xastir. To get it, from a terminal windows run:
sudo wget http://www.175moonlight.com/xastir/debian7-8-xastir-git-build.sh then run it with the command: ./debian7-8-xastir-git-build.sh
(run as the Pi user, not root) Good luck.