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.
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.
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.
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.
sudo bash
to become superuser.apt-get install openjdk-8-jre unzip libjssc-java
to install the
other software modules that YAAC needs as prerequisites.exit
from the superuser shell.mkdir YAAC
cd YAAC
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.
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.
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.
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.
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.
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:
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.
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:
Name | Functionality |
---|---|
adsbplugin.jar | ADS-B air traffic monitoring using Software Defined Radio (SDR) hardware and the rtl_adsb or dump1090 programs |
aisdecoder.jar | AIS decoder for use with DireWolf 1.6+ |
aprsisserver.jar | proxy fake APRS-IS server to allow YAAC to share data from radio/TNC ports with other APRS clients |
arednobjects.jar | client to query AREDN mesh network information and convert to APRS Objects |
bikestats.jar | supplemental notation columns for objects for supporting public service event operations |
callsigndb.jar | callsign lookups with local caching of some national license databases and use of the QRZ.COM Internet database |
demo.zip | demonstration 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.jar | ability to have locally-originated APRS Objects moving automatically on a course bearing or along a specified route (from GPX files) |
eventloggerplugin.jar | basic file logger of APRS events |
madispost.jar | extract real-time weather data into rotating CSV files in the MADIS export format |
marineports.jar | Port drivers for maritime usage including NMEA-0183 over TCP |
pbbsplugin.jar | Packet Bulletion Board Service server |
repeaterfinderplugin.jar | repeater station locator and chooser |
smallscreen.jar | alternate YAAC UI for low-resolution and/or touch screens (such as the 7-inch 720x480 pixel touchscreen for the Raspberry Pi) |
soundsplugin.jar | configurable sound effects (including speech using the espeak text-to-speech synthesizer) for various events that YAAC can detect occuring in the APRS network |
telemetryalarmplugin | configurable monitoring of telemetry |
weatheralertplugin.jar | plugin 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.