aprsdigi - APRS(tm) digipeater


SYNOPSIS

       aprsdigi  [-CcDLMXv]  [-n|s|e|w  path] [-fF call] [-t tag]
       [-k    secs]    [-l    logfile]    [-i    interval]    [-p
       port:alias1,alias2...]


DESCRIPTION

       Aprsdigi is a specialized Amateur Packet Radio (AX.25) UI-
       frame digipeater for the Automatic Position Reporting Sys-
       tems,  APRS(tm).   It  uses the Linux kernel AX.25 network
       stack as well as the SOCK_PACKET facility  to  listen  for
       packets on one or more radio interfaces (ports) and repeat
       those packets -- with several possible modifications -- on
       the same or other interfaces.

       Aprsdigi  implements conventional packet radio AX.25 digi-
       peating, in which a packet is digipeated if the  next  hop
       (non-repeated)  digipeater  ("via")  callsign  matches the
       AX.25 port's callsign and  sub-station  ID  (SSID)  or  an
       alias callsign and SSID.

       There are a number of extensions to conventional digipeat-
       ing that have been proposed for use in the APRS community.
       Some  of these features have been adopted by Terminal Node
       Controller  (TNC)  manufacturers,  notably   Paccomm   and
       Kantronics.   Aprsdigi  implements  most if not all of the
       commercialy adopted and proposed features.  See the  APRS-
       dos  README  files  for protocol documentation and "future
       feature"  proposals.   Specific  features  implemented  by
       Aprsdigi include:


       - Single-interface conventional UI-frame digipeating.

       -  Cross-interface  digipeating  (also known as routing or
              gatewaying) and one-to-many fanout.

       - Substitution of a digipeated alias with the  interface's
              callsign  (typically used to substitute RELAY, WIDE
              or TRACE aliases).

       - WIDEn-n flooding algorithim.

       - TRACEn-n route recording.

       - Mic-Encoder(tm) support, including SSID-based  digipeat-
              ing, decompression of packets into the conventional
              APRS MIM format.  (The Mic-Encoder  compression  is
              also used by other products such as the Kenwood TH-
              D7A, and TAPR PIC-Encoder).




GENERAL OPTIONS

       -v        Produce verbose debugging output.

       -T        Test  mode: listen to my packets too.  This mode
                 is useful for off-air experimentation  and  con-
                 figuration testing.  Do not use it on-air.

       -D        Suppress Duplicate packets.  Remembers duplicate
                 packets for the number of seconds give by the -k
                 option  and will not repeat them more than once.
                 This  reduces  conjestion  caused  when  several
                 digipeaters  that  share a common flooding alias
                 (e.g. WIDE) have overlapping footprints, causing
                 geometric  duplication  of packets addressed via
                 "WIDE,WIDE" for example.

       -L        Suppress Looping packets.  Similar  in  function
                 to  duplicate packet suppression, but looks back
                 through the list of already digipeated callsigns
                 in  the  packet's  digipeat  list  and kills any
                 packets that list a callsign belonging  to  this
                 aprsdigi.   Note  that  only  real callsigns are
                 compared.  Generic flooding aliases are not.

       -V        Print program version and exit.

       -n|s|e|w  Set North|South|East|West SSID directional path.

       -d        Set  SSID omnidirectional next-hops when operat-
                 ing in a non flooding network (e.g. when WIDEn-n
                 is not an option).

       -f        Set  flooding  alias.   Use  "-f WIDE" to enable
                 WIDEn-n flooding.   Use  -f  multiple  times  to
                 define several flooding aliases.

       -F        Set  flooding trace callsign.  Use "-F TRACE" to
                 enable TRACE and TRACEn-n flooding. Use -F  mul-
                 tiple times to define several trace aliases.

       -k secs   Remember old packets for this long for duplicate
                 packet detection.  Default is 20.

       -l file   Log digipeated packets to this file.


PER-INTERFACE OPTIONS

       Put these options before each -p  to  set  new  values  as
       needed.   The values you set are remembered for subsequent
       -p's so options you want to set for  all  interfaces  need
       only be specified once, before the first -p.
                 enabled, aliases are replaced  with  the  inter-
                 face's callsign when repeated.

       -M (-m)   Do (not) perform Mic-E to MIM translation.  When
                 enabled, compressed Mic-E reports  are  expanded
                 into  one  MIM-style  position report packet and
                 optionally a second telemetry packet if  teleme-
                 try was supplied in the Mic-E packet.

       -X (-x)   Do   (not)   perform   X1J4  translation.   When
                 enabled, the leading "TheNet X1J4 (alias)"  text
                 is  removed  when  digipeated.  This allows non-
                 compliant APRS implementations to detect an APRS
                 position report in an X1J4 beacon.

       -i secs   Seconds  between  ID transmissions.  Set to 0 to
                 disable IDs on this interface.  Default  is  570
                 (9  minutes  30  seconds).  IDs are only sent if
                 the interface  transmitted  anything  since  the
                 last  ID.   ID packets are addressed to the "ID"
                 callsign, have no digipeat path,  and  list  the
                 callsign and aliases for the interface the ID is
                 being transmitted on.

       -t text   Text to append to received packets.  Use -t - to
                 reset  to  empty.   Use  this, for example, when
                 gatewaying Mic-E packets from a  voice  repeater
                 to  the APRS net frequency to indicate where the
                 report originated.

       -p port:alias1,alias2,...
                 AX25 interface name (port) and optional list  of
                 aliases.   The primary callsign is obtained from
                 the  interface's  configuration.   (See   ifcon-
                 fig(8)).



MIC-E SSID-BASED ROUTING

       SSID-based  routing  uses a non-zero sub-station ID in the
       destination callsign, an empty digipeater  path,  and  the
       presence  of  a Mic-Encoder "signature" in the text of the
       packet to indicate that the APRS digipeater should  repeat
       the  packet  after  filling  in  an appropriate digipeater
       path.  For example, a packet sent to "T1QS4W-3"  would  be
       repeated  with a modifed destination of "APRS VIA WIDE3-3"
       (in a network that supports WIDEn-n flooding).   A  packet
       sent  to "T1QS4W-11" would be repeated to the West unproto
       path, as defined with the -w option.  A table of SSID val-
       ues and their paths follows:

       SSID unproto path
       ---- ------------
       2    WIDE2-2
       3    WIDE3-3
       4    WIDE4-4
       5    WIDE5-5
       6    WIDE6-6
       7    WIDE7-7
       8    NORTH UNPROTO path
       9    SOUTH UNPROTO path
       10   EAST  UNPROTO path
       11   WEST  UNPROTO path
       12   NORTH UNPROTO path + WIDE
       13   SOUTH UNPROTO path + WIDE
       14   EAST  UNPROTO path + WIDE
       15   WEST  UNPROTO path + WIDE

       The  theory behind Mic-Encoder digipeating is described in
       more detail in the APRSdos README, MIC-E.TXT.   Basically,
       the  idea  is to minimize packet lengths on the voice fre-
       quency and to have the manager of the Mic-Encoder repeater
       gateway determine the most appropriate digipeat paths from
       the Mic-E gateway site.

       Aprsdigi also fits into a non WIDEn-n network by using the
       same algorithm for selection of subset of digipeaters from
       a list supplied with the -d option as the MIC-E.  That is,
       SSIDs  of 1, 2 or 3 select that number of digipeaters from
       the first three digipeaters in the -d list.  SSIDs  of  4,
       5, 6, or 7, start at the fourth digipeater in the list.



FLOODING ALIASES

       APRS flooding (WIDEn-n) digipeating works by repeating any
       received packet whose next hop digipeater has  a  flooding
       alias (specified with the -f option), and the SSID is 1 or
       greater.  The SSID is decremented by one, and  the  packet
       is  repeated.   Furthermore,  to prevent broadcast storms,
       recently transmitted packets are remembered for  a  period
       of time specified by the -k option and are not repeated if
       they are heard within that time period.

       Unlike conventional digipeating, in which  the  digipeater
       callsign/alias is flagged as "repeated", the flooding mode
       does not do this.  Once the SSID decrements to zero,  then
       a flooding alias is treated just like any other alias, and
       does get marked as repeated upon transmission.



TRACE and TRACEn-n ALIASES

       "Flooding" Trace aliases (TRACEn-n; -F option) are treated
       like  flooding  aliases  with  the  addition that, besides
       decrementing the SSID, the current interface's callsign is
       inserted  in front of the trace alias, providing a record-
       manner.



MULTI PORT OPERATION

       In single port operation,  there  is  only  one  interface
       specified  with -p.  All packets are received and some are
       retransmitted on the same interface, depending on  whether
       they  match the criteria for retransmission after transla-
       tion of the digpeater path from one of  the  APRS-specific
       formats:

       - Mic-E TO-call SSID-based route.

       - WIDEn-n/TRACEn-n flooding.

       or   a  conventional  next-hop  (non-repeated)  digipeater
       matching the callsign or one of the aliases for the inter-
       face.

       The  decision to transmit is made by matching the next hop
       callsign/alias with the table of callsigns and aliases you
       supply to -p.

       In   multi-port  operation,  this  same  technique  simply
       extends to several interfaces.  Besides  each  interface's
       unique  callsign,  you  can give the same alias to several
       interfaces.  This results in a  one-to-many  fanout  which
       might  be  useful  for  dual frequency operation such as a
       general use APRS net frequency and an event-specific  fre-
       quency.

       By  using  different  flags for Mic-E expansions, etc. you
       can tailor these fanouts  differently  on  each  of  these
       interfaces,  perhaps  keeping  Mic-E packets compressed on
       one frequency while decompressing them on another.


EXAMPLES

       - Implementation of TRACE:  Note that TRACEn-n  vs.  plain
       TRACE  do  different things: TRACEn-n *inserts* calls into
       the digipath while decrementing ssid, e.g.:
            RELAY*,TRACE3-3
            RELAY,N2YGK-7*,TRACE3-2
            RELAY,N2YGK-7,WB2ZII*,TRACE3-1
            RELAY,N2YGK-7,WB2ZII,N2MH-15*,TRACE3
            RELAY,N2YGK-7,WB2ZII,N2MH-15,WA2YSM-14*

       - Kill looping packets (-L option):
            RELAY*,WIDE,WIDE,WIDE
            RELAY,N2YGK-7*,WIDE,WIDE
            RELAY,N2YGK-7,WIDE*,WIDE
       Normally n2ygk-7 would respond to this,  but,  by  finding
       one of mycall earlier in the path, I know to ignore it.
       two ports.  This is a contrived example that tries to show
       all the features.
       aprsdigi \
          -v \
          -T \
          -n "N2YGK-2 WB2ZII WA2YSM-14" \
          -s "N2YGK-3 WB2ZII WA2JNF-4" \
          -e "N2YGK-3 WB2ZII KD1LY" \
          -w "N2YGK-2 WB2ZII N2MH-15" \
          -f "WIDE" \
          -F "TRACE" \
          -DLMC \
          -t " via 147.06 (WB2ZII/R)" \
          -psm0:RELAY,WIDE,TRACE \
          -mXc \
          -t - \
          -pax0:RELAY,WIDE,FOO,TRACE

       Linux APRS(tm) digipeater
       portions Copyright (c) 1996,1997,1999 Alan Crosswell, n2ygk@weca.org
       Version: aprsdigi aprsdigi-2.0
       This is free software covered under the GNU Public License.
       There is no warranty.  See the file COPYING for details.

       My interfaces:
       Interface Callsign  Aliases...
       sm0       N2YGK-2   RELAY     WIDE      TRACE
       ax0       N2YGK-3   RELAY     WIDE      FOO       TRACE
       My interface options:
       Interface Flags    ID interval tag
       sm0       CMx      570 (09:30)  via 147.06 (WB2ZII/R)
       ax0       cmX      570 (09:30) (none)

       My callsigns and aliases (routing table):
       Callsign  Interfaces...
       N2YGK-2   sm0
       RELAY     sm0       ax0
       WIDEn-n   sm0       ax0
       TRACEn-n  sm0       ax0
       N2YGK-3   ax0
       FOO       ax0
       SSID-based directional routing:

       N:        N2YGK-2   WB2ZII    WA2YSM-14
       S:        N2YGK-3   WB2ZII    WA2JNF-4
       E:        N2YGK-3   WB2ZII    KD1LY
       W:        N2YGK-2   WB2ZII    N2MH-15
       keep dupes for: 20 seconds
       log file: (none)
       kill dupes: ON loops: ON  testing: OFF


       Aprsdigi  should  not be confused with a Wes Johnson's DOS
                 program of the same name.

       This code has only been tested with Linux 2.2 kernels.

       The Linux 2.2 kernel currently prints the message,
                 "protocol 0000 is  buggy,  dev  ax0,"  for  each
                 transmission.   This  appears to be a bug in the
                 af_packet driver.  The message is only a warning
                 and  a  properly formed packet is in fact trans-
                 mitted.  Printing of this message  is  time-lim-
                 ited  by  the kernel so a busy digipeater should
                 not have trouble due to too many messages print-
                 ing,  provided  you've  configured syslogd(8) to
                 not log these messages to a disk file.

       Features planned but not yet implemented:

       - UDP multicast interface.

       - HOME routing as described in the APRSdos README,
                 DIGIS.TXT.

       - Compression.



FILES

       /etc/ax25/axports


SEE ALSO

       call(1),  listen(1),  beacon(1),  ax25(4),  kissattach(8),
       ifconfig(8), aprsmon(1), http://www.tapr.org


AUTHORS

       Alan Crosswell, n2ygk@weca.org
       APRS and the Mic-Encoder are Trademarks of APRS Engineering LLC.