Aprx.en

Radioamatööriwikistä
Versio hetkellä 2. helmikuuta 2008 kello 20.46 – tehnyt >Oh2mqk (English translation)
(ero) ← Vanhempi versio | Nykyinen versio (ero) | Uudempi versio → (ero)
Siirry navigaatioon Siirry hakuun

Tästä sivusta on suomenkielinen versio Aprx — this page is English translation of Finnish page...

APRX is a receive-only APRS IGate (see APRS iGate properties) software. It works on any UNIX-like systems with minimal requirements of system services, nor system libraries beyond basic POSIX libc.

There are readily usable binary packages for some Fedora and Debian environments. Other platforms should be easily compilable for.

The software is to be installed on suitable UNIX-like system, and its configuration file is to be adjusted. Then it can relay APRS packets from radio receivers to APRS-IS (http://www.aprs-is.net) network.

This software is intended for very limited resources environment, like small embedded-like machines barely able to run the operating system with TCP/IP networking.

A receive-only Rx-iGate does not need any sort of licenses in most parts of the world where radio amateur hobby is permitted to begin with.'

Distribution

The software is downloadable at:

http://ham.zmailer.org/oh2mqk/aprx/

Features

This software is no competitor either for bi-directional APRS IGATEs, nor for APRS digis, instead this is written for the need of primarily a dense receiver network feeding things APRS-IS network, and then to have APRS-digi and bi-directional gating running off that system. (Minimize number of transmitters, and repeated transmissions on channel.)

The basic design criterias have also included something called minimun technology, whereby the software does not need any external software or libraries in order to function. This also minimized system resource requirements, which in case of IGate do include networking, but can be done with very small machines. Also the software should be able to function on any minimally compliant POSIX system.

Minimum configuration has three tunable parameters:

MYCALL ...
APRSIS-SERVER ...
RADIO SERIAL ...

If the host system runs Linux, and has radio modems attached with kissattach or are other special radio amateur hardware drivers, then possibly just "MYCALL" and "APRSIS-SERVER" definitions are what is needed. (One should note that kissattach configuration is much more complicated than Aprx configuration...)

As this software must operate in extremely memory limited systems, its writers have seen no need to make any memory hungry configuration tools, and instead the installer must be able to edit the text format configuration file by means of some simple editor existing in the system.

aprx(8) manual page

Operating systems

Observed to work:

  • Linuxes (Fedora, RedHat, SuSE, Debian)

"Should work":

  • FreeBSD/NetBSD/OpenBSD/Apple OSX
  • Solaris / OpenSolaris
  • HP-UX
  • Windows+CygWin

(in other words: any POSIX compliant system should work)

There is no integrated installation package for all the systems in the world, but things should not be too difficult to cook up your own.

Radio modem connections

It listens on radio modems speaking so called KISS protocol on any system attached serial ports. The modems can also speak of so called TNC2 monitor format:

  • Has support for principally unlimited number of serialports on single machine
  • Works also with USB serial ports
  • Works also with serial ports on remote servers, as long as they are connectable with "TCP STREAM" service initiated from server running the Aprx program (like Cisco router AUX ports.)

Supports also AX.25 protocol in a machine, where such exist (mainly Linuxes) and radio modems attached on it.

APRS Rx-iGate properties

  • Connects with single callsignSSID to APRS-IS core network for all radio receiver ports attached on it, optionally can also identify all receiver ports with separate callsigns
  • Knows that following tokens in AX.25 address VIA fields are a reason for not relaying message to APRS-IS network:
    • RFONLY, NOGATE, TCPIP, TCPXX
  • Knows that following AX.25 source addresses are bogus, and packets with them are not to be relayed to APRS-IS network:
    • WIDE*, RELAY*, TRACE*, TCPIP, TCPXX, NOCALL, N0CALL
  • Does not relay any query messages ("?")
  • Opens all "3rd-party" messages to determine if any intermediate or the innermost addresses (and possibly data) are a reason for not relaying to APRS-IS.
  • Relays receives APRS messages to APRS-IS network in network standard form

Complex properties

This software has some unique complex capabilities:

Serial ports

  • The serial ports can be physical D9/D25 ports on machine, or perhaps USB ports, as long as they offer standard POSIX semantics
  • The serial ports can be elsewere on the internet, as long as they are reacable with TCP STREAM without any sort of encapsulation protocols (like TELNET escapes)
  • There can in principle be unlimited number of serial ports
  • The serial ports can speak a few variations of the KISS protocol
  • The serial ports can also receive TNC2 monitor format

On Linux systems the system does also understand machine internal AX.25 network, and radios attached on it.

Optionally multiple callsignSSIDs

APRS traffic received from all ports can be offered to APRS-IS network with single callsign (MYCALL), or if so wanted, any of the serial ports can be offered with their own callsigns.

The individual callsigns for each port system is a feature for intermediate APRS-IS -like server that really collects all packets received from radios, and correlates them in order to determine where everywhere each packet was heard. Normal APRS-IS does duplicate removal making such "radio coverage analysis" somewhat difficult...

Measuring radio channel occupancy

There are lots of rumors about APRS radio channel occupancy, but very little measured hard facts. To help on this issue, the Aprx-program has a radio channel occupancy measurement estimator calculating the number of received bytes from radio and making some fuzzy guesses on how much more time transmitters did spend on channel before and after each packet.

The data is collectable live via "SNMPish" counters, and also via "RRDish" datasets. Auxiliary tool aprx-stat is for this purpose.

The configuration

#
#  Sample configuration file for the APRX  -- an Rx-only APRS iGate
#
#

# The  mycall  parameter: 
# Station call-id used for relaying APRS frames into APRS-IS.
#
#mycall           N0CALL-1

# APRS-IS server name and portnumber.
# Every reconnect does re\-resolve the name to IP address.
# There can be as many definitions as you want, and they will be
# used in round\-robin fashion.  Heartbeat and filter definitions
# must follow each server definition.

#aprsis-server    finland.aprs2.net  14580
#aprsis-server    rotate.aprs.net    14580

# Some APRS-IS servers tell every about 20 seconds to all contact
# ports that they are there and alive. Others are just silent.
# Enable only if the server you use does present heartbeat.
# Recommended value 3*"heartbeat" + some  -> 120 (seconds)
#
#aprsis-heartbeat-timeout   120


# APRS-IS server may support some filter commands.  Although this
# program does not transmit out to RF, filter rules can be used to
# ensure that there is sufficient dataflow from APRS-IS server to
# this program that it very likely will not timeout within network
# monitoring timeout..
#
#aprsis-filter "some filter specs in quotes"

# Additional APRS-IS servers can be entered, by repeating following
# three configuration entries as many times as are needed.
#
#aprsis-server            rotate.aprs.net 14580
#aprsis-heartbeat-timeout 120
#aprsis-filter            "some filter specs in quotes"

# AX.25 filters block selected messages matching on selected regular
# expressions.  The expressions are case sensitive, and AX.25 address
# elements are in all uppercase text.  There can be unlimited number
# of patterns, type fields are four: "source", "destination", "via",
# and "data".  These patterns can be used in addition to built-in
# hard-coded reject rules listed in documentation.
#
#ax25-reject-filter source      "^NOCALL"
#ax25-reject-filter destination "^NOCALL"
#ax25-reject-filter via         "^NOGATE"
#ax25-reject-filter data        "^\\?"

# ax25-rxport limits reception on listed AX.25 ports (their cal lsigns),
# if system happens to use AX.25 ports also for other purposes than APRS.
# If this option is not used, all reception ports are accepted.
# Number of port definitions here is unlimited.
#
#ax25-rxport NoCALL
#ax25-rxport N0CALL

# pidfile is UNIX way to tell that others that this program is
# running with given process-id number.  This has compiled-in
# default value of:  pidfile /var/run/aprx.pid
#
pidfile /var/run/aprx.pid

# rflog defines a rotatable file into which all RF-received packets
# are logged.
#
#rflog /var/log/aprx/rf.log

# aprxlog defines a rotatable file into which most important 
# events on APRS-IS connection are logged, namely connects and
# disconnects.
#
#aprxlog /var/log/aprx/aprx.log

# erlangfile defines a mmap():able binary file, which stores
# running sums of interfaces upon which the channel erlang
# estimator runs, and collects data.
# Depending on the system, it may be running on a filesystem
# that actually retains data over reboots, or it may not.
# With this backing store, the system does not loose cumulating
# erlang data over the current period, if the restart is quick,
# and does not stradle any exact minute.
# (Do restarts at 15 seconds over an even minute..)
# This file is around 0.5 MB per each interface talking APRS.
# Things go BADLY WRONG if this file can not be created or
# it is corrupted!
#
# Built-in default value is: /var/run/aprx.state
#
#erlangfile /var/run/aprx.state

# erlang-loglevel is config file version of the "-l" option
# pushing erlang data to syslog(3).
# Valid values are (possibly) following: NONE, LOG_DAEMON,
# LOG_FTP, LOG_LPR, LOG_MAIL, LOG_NEWS, LOG_USER, LOG_UUCP,
# LOG_LOCAL0, LOG_LOCAL1, LOG_LOCAL2, LOG_LOCAL3, LOG_LOCAL4,
# LOG_LOCAL5, LOG_LOCAL6, LOG_LOCAL7.  If the parameter value is
# not acceptable, list of accepted values are printed at startup.
#
#erlang-loglevel NONE

# erlanglog defines a rotatable file into which erlang data
# is written in text form.
#
#erlanglog /var/log/aprx/erlang.log

# erlang-log1min option logs to syslog/file also 1 minute
# interval data from the program. (In addition to 10m and 60m.)
#
#erlang-log1min

# The  radio serial  option.  Parameters are:
#   - /dev/ttyUSB1    -- tty device
#   - 19200           -- baud rate, supported ones are:
#                        1200, 2400, 4800, 9600, 19200, 38400
#   - 8n1             -- 8-bits, no parity, one stop-bit,
#                        no other supported modes
#   - KISS/XORSUM/BPQCRC/SMACK/CRC16  -- KISS mode variants
#     TNC2            -- non-KISS text format variant
#
#
#radio serial   /dev/ttyUSB0  19200 8n1    KISS
#radio serial   /dev/ttyUSB1  19200 8n1    TNC2

# Additional/alternate options for the "radio" line.
#
# "initstring" is of two parts, the keyword, and then a string.
#    initstring "\xC0\xC0\xFF\xC0\r\nMO 0\rKISS $01\r"
#
# "callsign NAME" sets callsign used in statistics displays,
#    and when the message is sent to APRS-IS.
#    If none are given, then it will use physical port name.
#
# "timeout 900" sets a timeout monitor (in seconds) to make
#    reopen/reconnect if the (tcp) connection to radio has
#    failed somehow and nothing is heard. Local serial ports
#    do not (in general) need this.  At APRS silent sites
#    this may cause repeated reconnects, but it should not
#    harm either.  At busy sites this will handle reconnect
#    gracefully in case of network failures, and timeout
#    value can be shortened.
#
#  "KISS"                  - plain basic KISS mode
#  "XORSUM" alias "BPQCRC" - KISS with BPQ "CRC" byte
#  "SMACK" alias "CRC16"   - KISS with better CRC
#  "TNC2"                  - TNC2 monitor format


# The  radio tcp  option defines a connection to remote socket
# beyond which is a binary transparent connection to a serial
# port.  The parameter fields:  literal IP address (IPv4 or IPv6),
# then literal port number, and finally protocol mode.
# KISS-protocol parameters are same as with normal serial port.
#
#radio tcp  12.34.56.78  4001  KISS  alias Rx5 timeout 900
#radio tcp  12.34.56.78  4002  TNC2  alias Rx6 timeout 300
#

# The  netbeacon  option.
# Parameter string (in quotes) is sent to network (without quotes)
# at varying intervals --  1200-1800 seconds in between restransmits.
# This interval is intentionally randomized.
# Multiple netbeacons are evenly distributed for each time period,
# or at least 3 seconds apart.  First netbeacon is sent to network
# 30 seconds after connection to APRS-IS.
#
# There can be multiple netbeacon options.
# Symbol  R&   is for "rx-only iGate"
#
#netbeacon  "!6016.35NR02506.36E&aprx - an Rx-only 'iGate'"