Skip to content


Switch branches/tags

Latest commit

When characters didn't seem printable, they get escaped inside < >
and the raw hex is printed to the log, but the character was
getting cast as a 32 bit integer, which made for some nasty
long negative ints when the original byte was unicode UTF-8
and the high bit was set.

Git stats


Failed to load latest commit information.
Latest commit message
Commit time
Feb 1, 2014
Jan 1, 2011
		APRX    v2.9

A multitalented APRS i-gate / digipeater

   Config file (-f option) default is:  /etc/aprx.conf
   Other runtime options are: -v,  -d,  -h/-?  (verbose, debug and help)

   - Rx-IGate functionality works correctly
   - Tx-IGate functionality works correctly

   - Can do APRS New-N and generic AX.25 node digipeater functionality
     with transmitters

   - Has same-channel Viscous Digipeater functionality to not digipeat
     at all, if during initial wait period the packet is heard again.

   - Has cross-interface Viscous Digipeater functionality to not to digipeat,
     if during the initial wait period the packet is heard on destination
     interface at least once, and at least once from other sources.

   - Can receive data from multiple receivers/modems on local machine
     serial ports, both classical and USB.

   - Can receive data from remote TCP stream connectable serial ports
     over the internet.

   - Understands on serial ports (local and remote TCP ones):
       - several KISS protocol variants, checksummed variants preferred
       - TNC2 debug style text (Rx-iGate receive only.)
       - D-STAR data side-channel "D-PRS"

   - Connects with one  callsign-ssid  pair to APRS-IS core for all
     received radio ports (the "mycall" parameter), but reports
     receiving radio port at each Rx-iGated packet

   - Knows that messages with following tokens in VIA fields of the
     path are not to be relayed into network:

   - Knows that following source address prefixes are bogus and thus
     to be junked at Rx-iGate:
     (Actually these are string prefixes, so any WIDE*-* will block, etc.)

   - Has integrated D-PRS -> APRS/APRSIS Rx-iGate.
     Can even do D-PRS -> APRS RF conversion.
     This is experimental quality for "GPS" packets, the "GPS-A" is OK.

   - Does not require machine to have AX.25 protocol support internally!

   - On Linux machine with kernel internal AX.25 protocol support, does
     listen on internal AX.25 network in promiscuous form, and requires
     to be running as root to do that.   Does not fail to start in case
     the port fails to open (running as non-root.)

   - Built-in "erlang-monitor" actually counts bytes per time interval
     (1 min, 10 min, and 20 min)  on each receiving interface, including
     all that feed internal AX.25 network.

   - Telemetry reported erlang data is sent out every 20 minutes, and
     contains summarized data from 10 minute round-robin memory arrays.
     These are _not_ sent at exact 10 minutes of wall-clock, but exact
     20 minutes from previous telemetry reporting, and first one is sent
     20 minutes after program start.

   - Telemetry reported erlang data can be sent also over APRS radio
     port, but only for ports with valid AX.25 callsigns. See aprx-manual.pdf

   - The netbeacons are distributed timewise more evenly around the interval,
     and even the interval length is varied at random to statistically spread
     out traffic.  Number of netbeacons are unlimited, but their minimum
     transmit interval is 3 seconds making the amount of beacons sendable in
     20 minutes to be: 20*60/3 = 400.  All will be sent, but the cycle will
     just take longer.

   - Project homepage:
   - Source code repository:
   - A google-group for Aprx:

by Matti Aarnio - OH2MQK - oh2mqk-at-sral-fi - 2007-2014
by Kenneth W. Finnegan - W6KWF - - 2014-