Welcome to YAAC - "Yet Another APRS Client"

YAAC is a (mostly) platform-independent Java application written by Andrew Pavlin, KA2DDO, for monitoring and contributing to the Automatic Packet Reporting System (APRS) network (invented and trademarked by Bob Bruninga, WB4APR).

YAAC is Free Software; it is an Open-Source program, licensed under the GNU Lesser General Public License, and complete source code is provided. Feel free to create improvements and extensions to YAAC.

YAAC can be used as a stand-alone APRS client, an APRS RF-Internet gateway (I-Gate), or as a AX.25 digipeater. It supports 16 different data reporting views as delivered, and can be extended with user-written "plugins" to add more functionality. YAAC's map rendering does not depend on Internet connectivity, so it can be used wherever a portable computer and radio/TNC can be located.

Here is where YAAC can be downloaded. If you would like to share information or questions about your use of YAAC, please join our mailing list first. Existing list members can post to the list by e-mailing to yaac-users@groups.io.

Bug reports can be e-mailed to the above mailing list, or submitted to the bug tracker on SourceForge (note you will have to have a free SourceForge account in order to submit tickets, click here to get one if you don't already have one).

For more information about YAAC, you can read the author's presentation from the 2012 ARRL/TAPR Digital Communication Conference, or watch it on HamRadioNow.

If you don't know what APRS is, visit Bob Bruninga WB4APR's authoritative website or look at this PowerPoint presentation I made on the subject.

Installing YAAC

Please read the following directions before downloading and installing YAAC for the first time. Doing so will make your life much easier.

Installation Pre-requisites

The current operating systems supported by YAAC are:

YAAC may also theoretically work on Solaris with SPARC processors, but has not been tested on that Oracle platform and does not include Solaris builds of JSSC. YAAC will not work on embedded systems using a headless (non-GUI-support) version of the Java runtime; although YAAC does have a non-GUI execution mode, it requires the Java Abstract Widget Toolkit (AWT) and Swing graphics support to operate (at least to configure YAAC for the desired non-GUI mode such as digipeating or I-gating). Similarly, due to the lack of AWT support, YAAC will not work on Android either (a work in progress...).

Because YAAC is written in the Java language, you will need to have installed a suitable version (at least Java 8) of the Java Runtime Environment installed on your system (either just the JRE or the full Java Development Kit [JDK] which includes a copy of the JRE). Either the standard Oracle distribution, OpenJDK, or a vendor-specific distribution for your platform should work, as long as it is up to the appropriate release of the Java standards. You can test whether you have an appropriate version of Java installed by getting a command shell on your system and issuing the command

java -version

If you do not have a sufficiently recent version of Java installed, use your vendor-provided software installer (for Linux), or download one of the above Java distributions for your operating system and install or upgrade Java using the directions on the download site. Do not install only what some Linux distributions call openjdk-jre-headless; this is insufficient to run YAAC, as it does not include the AWT part of the Java runtime.

Installing YAAC Itself

A zip file contains the current binary distribution. Note this file is over 21MB in size, and will unpack to a slightly larger amount of space, so ensure you have at least 50MB of free disk space (to account for the zip file, the unpacking, and the other data files that YAAC will create once started). To install the contents of the zip file, unzip this file in a directory on your system (we recommend naming the directory "YAAC"), maintaining the internal subdirectory structure of the zip file. This is all that is needed to install the executable distribution. For those who want to validate the distribution zip file, a SHA256 signature of the distribution is included here. Note that the graphical desktops of current releases of Windows and Linux include ZIP support; if command-line tools are needed, they can be downloaded from Info-Zip. The file YAAC.jar in the directory is the main program; the lib subdirectory contains libraries (both Java and native code) needed to support YAAC. The change notes for the current binary are available here. Those interested in tinkering with the source code under the Open Source GNU Lesser General Public License can download it here or from the SourceForge project page.

Raspberry Pi Detailed Installation Directions

For those using the Raspberry Pi who are new to Linux and the Pi, here are some simplified directions. Text in this font are literal text to be typed into the Pi.

  1. Download the YAAC.zip file to your Pi. (The following steps assume you are using the Raspbian default browser, so the file will be placed in the /home/pi/Downloads directory.)
  2. Open a terminal (lxterm) window.
  3. sudo bash to become superuser.
  4. apt-get install openjdk-8-jre unzip libjssc-java to install the other software modules that YAAC needs as prerequisites.
  5. exit from the superuser shell.
  6. mkdir YAAC
  7. cd YAAC
  8. unzip ../Downloads/YAAC.zip

At this point, YAAC is installed and ready to run. Use the command

java -jar YAAC.jar

to invoke YAAC and start the configuration wizard.

Compatible Hardware for YAAC

YAAC has been tested with the following hardware, but should work with other compatible hardware:

Equivalent hardware should also work. If you are testing YAAC on a different platform, please let us know what it is, so we can add it to the supported list.

Running YAAC

Once you have Java and YAAC installed, starting YAAC is easy. All you should have to do is double-click on the YAAC.jar file (for environments where the Java Runtime is integrated into the file manager). If this does not work in your environment, obtain a command shell on your system, cd to the directory where you unpacked the YAAC.zip file's contents, and issue the command

java -jar YAAC.jar

Either way, this should bring up the YAAC user interface screen.

If it doesn't, please let us know, reporting any error messages displayed when you attempted to start it.

Configuring YAAC

YAAC doesn't do much without a connection to some source of APRS data. The details are in YAAC's built-in online help, but basically you need to open the File->Configure dialog (we recommend using the configuration wizard for a new installation or if you are new to YAAC), and update the appropriate options to use your callsign and appropriate interfacing equipment to the APRS network (either over the Internet through the Tier 2 APRS-IS servers, or through actual radio equipment via a TNC). Hardware TNCs (whether separate boxes or built-in to modern radio transceivers like the Kenwood TM-D710) will always be connected through a serial port, so your computer will need one for each TNC (RS232 or USB, as appropriate for your TNC hardware). The same applies for GPS receivers.

If you want to use YAAC as an I-Gate (APRS Internet gateway) or otherwise as a transmitter to the APRS-IS backbone on the Internet, e-mail YAAC's author to get an APRS-IS passcode, telling us your amateur radio callsign; without using a valid passcode that matches your callsign, you will not be able to send any messages to APRS-IS. Note this is a restriction of the APRS-IS network, not of YAAC. YAAC also supports the experimental authentication connection to the APRS-IS using Secure Socket Layer (SSL) and your ARRL Logbook of the World log-signing certificate, however the SSL support in the servers is still under development and is not available on all Tier 2 APRS-IS servers.

Displaying Maps in YAAC

YAAC supports map data produced by the OpenStreetMap project, and has an efficient downloader built into YAAC for pre-processed map data served by the YAAC author. If you would rather convert the OSM data to YAAC format yourself, you can download a bzipped or protocol-buffer OSM file for your geographical area from planet.openstreetmap.org or a suitable mirror site (you can download the entire planet file if you like, but it will take a long time). Then follow the directions in YAAC's online help to import the OpenStreetMap data into YAAC's internal map data format.

YAAC also supports world-wide terrain (elevation) data made available to the public domain by the U.S. Geological Survey, through an automatic downloader built into YAAC, and can display North American weather radar overlays from the U.S. National Weather Service.

Getting Help and Reporting Bugs in YAAC

YAAC has extensive built-in help; just click on the Help menu and select Contents to get the help table of contents displayed. An index of help and a list of frequently asked questions (and answers) is also available. Some parts of YAAC also have single-button help; pressing the F1 key on the keyboard or clicking a Help button in a dialog will bring up help if the current window being viewed has a help connection. Help is self-contained within the YAAC distribution, so it can be used when YAAC is disconnected from the Internet.

If you have a problem with YAAC, and you can't figure out what to do after reading the help, there are two options:

  1. e-mail the yaac-users mailing list (assuming you have become a member of the list) and ask for help.
  2. file a bug report on YAAC's bug-tracking system on SourceForge.

SourceForge will require that you establish a (free) account associated with your e-mail address, so the author can contact you for more information regarding your problem.

The author also accepts requests for new features through these means.

Optional Plugins for YAAC

YAAC can be extended by writing plugins, that automatically extend the base functionality of YAAC in whatever way is desired by the plugin author. Besides the sample plugin (whose sole purpose is to demonstrate how to write a simple plugin), other plugins made available by YAAC's author include:

NameFunctionality
adsbplugin.jarADS-B air traffic monitoring using Software Defined Radio (SDR) hardware and the rtl_adsb or dump1090 programs
aisdecoder.jarAIS decoder for use with DireWolf 1.6+
aprsisserver.jarproxy fake APRS-IS server to allow YAAC to share data from radio/TNC ports with other APRS clients
arednobjects.jarclient to query AREDN mesh network information and convert to APRS Objects
bikestats.jarsupplemental notation columns for objects for supporting public service event operations
callsigndb.jarcallsign lookups with local caching of some national license databases and use of the QRZ.COM Internet database
demo.zipdemonstration of YAAC running a PowerPoint slideshow on one side of the window and cycling through a selected set of YAAC displays on the other, fully automatically
dynamicobjectsplugin.jarability to have locally-originated APRS Objects moving automatically on a course bearing or along a specified route (from GPX files)
eventloggerplugin.jarbasic file logger of APRS events
madispost.jarextract real-time weather data into rotating CSV files in the MADIS export format
marineports.jarPort drivers for maritime usage including NMEA-0183 over TCP
pbbsplugin.jarPacket Bulletion Board Service server
repeaterfinderplugin.jarrepeater station locator and chooser
smallscreen.jaralternate YAAC UI for low-resolution and/or touch screens (such as the 7-inch 720x480 pixel touchscreen for the Raspberry Pi)
soundsplugin.jarconfigurable sound effects (including speech using the espeak text-to-speech synthesizer) for various events that YAAC can detect occuring in the APRS network
telemetryalarmpluginconfigurable monitoring of telemetry
weatheralertplugin.jarplugin to detect and report severe weather events from incoming weather data

Click the Help->Install Plugins menu choice in YAAC (while connected to the Internet) to automatically download and install plugins.

If you wish to author your own plugin for a custom feature not available in standard YAAC, the documentation is here, as is the API documentation for having your plugin tie into YAAC's inner data flows.

Authentication over APRS

YAAC includes a preliminary implementation of an authentication protocol to use over APRS to send securely identified text messages to other parties; such text messages could include telecommand directives to other APRS stations, such that the receiving station could validate that it is an authorized user sending the commands instead of someone spoofing someone else's callsign. The protocol specification document is available on the Amateur Radio Engineering Task Force (ARETF) website (concept copied from the Internet Engineering Task Force or IETF), or may be downloaded here. The IETF-compliant RFC XML format is also available.