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 the beta release of YAAC can be downloaded. If you plan on joining the beta-test effort, please join our mailing list first. Existing list members can post to the list by e-mailing to firstname.lastname@example.org.
Bug reports can be e-mailed to the above mailing list, 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 at 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 Sun/Oracle platform and does not include Solaris builds of RXTX. 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 7) 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 Sun/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
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 18MB 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 bashto become superuser.
apt-get install openjdk-8-jre librxtx-java unzipto install the other software modules that YAAC needs as prerequisites.
exitfrom the superuser shell.
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.
Note that, if you are using any sort of Unix, FreeBSD, or Linux operating system, you will probably need to ensure your account is a member of the lock group (to create lock files for the serial ports you use) and the dialout or tty group (to have access to the serial port devices).
Note that Fedora Core (and many other distros of Linux) have moved the device locking directory to a non-standard location (often /run/lock), so the device file locking code in the RXTX library (used by YAAC) becomes confused and is unable to open serial port device files. The current work-around is to change the file permissions and group on the /var/lock directory (or the /run/lock directory pointed by a symlink at /var/lock) so device lock files can be placed here by YAAC. The YAAC author plans to submit suitable changes to the RXTX project to overcome this limitation, but is presently using the standard 2.2pre2 binary release (bundled in the YAAC.zip file), except for x86 Linux distros; these are using a custom rebuild of the latest 2.2 code (solely to turn on support for non-standard-named serial port devices, including the Raspberry Pi's console serial port). The set of native library variants provided in the RXTX binary distribution is the major limiting factor regarding platforms upon which YAAC will run; YAAC will run on platforms without RXTX support, but will report an error at startup indicating the RXTX libraries cannot be found, and all port drivers requiring RXTX support will not be available.
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 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 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 looked at 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:
|adsbplugin.jar||ADS-B air traffic monitoring using Software Defined Radio (SDR) hardware and the rtl_adsb or dump1090 programs|
|aprsisserver.jar||proxy fake APRS-IS server to allow YAAC to share data from radio/TNC ports with other APRS clients|
|bluetoothport.zip||port driver for Bluetooth TNCs and GPSs|
|callsigndb.jar||callsign lookups with local caching of some national license databases and use of the QRZ.COM Internet database|
|repeaterfinderplugin.jar||repeater station locator and chooser|
|soundsplugin.jar||configurable sound effects (including speech using the Festival or espeak text-to-speech synthesizers) for various events that YAAC can detect occuring in the APRS network|
|telemetryalarmplugin||configurable monitoring of telemetry transmitting stations with alarm reporting for selected out-of-range values|
Click on any plugin name to download it. Downloaded zip files will contain the JAR files that need to be copied into YAAC's plugins subdirectory in the directory where YAAC is installed; downloaded jar files can be copied directly into the plugins subdirectory without modification.
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.