Provided by: aprsdigi_3.11.0-1_amd64 bug

NAME

       aprsdigi - APRS(™) digipeater

SYNOPSIS

       aprsdigi options

DESCRIPTION

       Aprsdigi  is  a  specialized  Amateur Packet Radio (AX.25) UI-frame digipeater for the Automatic Position
       Reporting Systems, 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 can also use the Internet to
       tunnel connections among other APRS digipeaters and nodes using IPv4 or IPv6 UDP unicast or multicast.

       Aprsdigi implements conventional packet radio AX.25 digipeating, 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 digipeating 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 1.0 Protocol Specification at www.tapr.org for protocol documentation.
       Aprsdigi attempts to minimally comply with the protocol specification as  well  as  support  experimental
       APRS features.  Specific features implemented include:

       • Single-interface conventional UI-frame digipeating.

       • Cross-interface digipeating (also known as bridging, 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 algorithm.

       • TRACEn-n route recording.

       • Mic-Encoder(tm)  support,  including  SSID-based  digipeating,  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 D700, and TAPR PIC-Encoder).

       • TheNet X1J4 node beacon text translation (removal of the “TheNet X1J4 (alias)” prefix from the btext).

GENERAL OPTIONS

       -v --verbose
                 Produce verbose debugging output.

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

       -D --kill_dupes
                 Suppress Duplicate packets.  Remembers duplicate packets for the number of seconds given 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 --kill_loops
                 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.  Therefore, loop detection  is  only  useful  when
                 callsign substitution is used.

       -V --version
                 Print program version and exit.

       -n|s|e|w --north|south|east|west
                 Set North|South|East|West SSID directional path.

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

       -W --floodnlimit
                 Limit each flooding alias to this many hops to limit  traffic  from  excessive  specifications.
                 Default is off.

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

       -F --trace
                 Set  flooding  trace  callsign.   Use  “-F TRACE” to enable TRACE and TRACEn-n flooding. Use -F
                 multiple times to define several trace aliases.

       -k --keep secs
                 Remember old packets for this long for duplicate packet detection.  Default is 28 seconds.

       -H --hops digipeats
                 Limit the total number of digipeats a packet that comes to us direct can request.   This  value
                 is  compared  to  the sum of the hops computed from the via list.  Those packets exceeding this
                 value are suppressed.  Packets relayed to us by other digipeaters are not affected.  Default is
                 no limit.

       -l --logfile file
                 Log digipeated packets to this file.

PER-INTERFACE OPTIONS

       Put these options before each -p --interface 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.   But  you  have  to remember to unset an option if you don't want it to apply to
       subsequent interfaces.

       -C (-c) --[no]subst_mycall
                 Do  (not)  perform  callsign  substitution.   When  enabled,  aliases  are  replaced  with  the
                 interface's callsign when repeated.

       -M (-m) --[no]mice_xlate
                 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 telemetry
                 was supplied in the Mic-E packet.

       -X (-x) --[no]x1j4_xlate
                 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 --idinterval 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 --tag 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.

       -3 --3rdparty
                 Enable 3rd party tunneling.  Packets tunneled to a 3rd party interface are sent with the unused
                 digipeaters removed from the digipeater list.  Packets tunneled from a 3rd party interface have
                 the Source Path Header prepended to the packet payload prefixed by the "}" character.

       -0 --no3rdparty
                 Enable  transparent  tunneling.  No special tricks are done when sending to or receiving from a
                 tunneled interface.  If the interface does not natively support AX.25 addresses (from-call, to-
                 call, and digipeater list), then the address header is prepended to  the  payload  in  "cooked"
                 format. Likewise, a cooked prepended header is stripped from a cooked interface and put back in
                 the AX.25 address when going from a non-AX.25 to AX.25 interface.

       -o r --norx
                 Disable receiving on the following interface(s).

       -o R --rx Enable receiving on the following interface(s).

       -o t --notx
                 Disable transmitting on the following interface(s).

       -o T --tx Enable transmitting on the following interface(s).

       -o s --notxsame
                 Disable retransmitting a received packet on the same interface.

       -o S --txsame
                 Enable retransmitting a received packet on the same interface.

       -o d --duplicate intf
                 Duplicate received packets without modification to the given interface (port).

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

       -p --interface udp:host/port/ttl:alias1,alias2,...
                 IP  host name or address and list of aliases.  IP addresses may be IPv4 unicast or multicast or
                 IPv6 unicast.  The primary callsign is obtained from the first alias.

       -p --interface unix:filename:alias1,alias2,...
                 Unix file and list of aliases.  Useful for debugging by setting up a simulated APRS network  on
                 one  machine.   You  may  want to make your FIFOs explicitly transmit- or receive-only to avoid
                 confusion.  The primary callsign is obtained from the first alias.

       -B|b --[no]bud
                 addr Is similar to a TNC-2's BUDLIST.  Use -B --bud to accept or -b --nobud to  ignore  packets
                 from  a  sender  or group of senders.  Budlists are attached to each interface and can be reset
                 with --bud -
                 You can set up a global budlist once, or per-interface budlists.  The  format  of  addr  varies
                 based on the interface type:

       --bud   ax25:callsign-ssid  matches  only  a  given  digipeater  callsign  and  SSID.   For  example,  -B
                 ax25:n0clu-14.

       --bud ax25:callsign matches all SSIDs for the given callsign.  For example -B ax25:n0clu.

       --bud ip:hostname matches one Internet host name (IPv6 or IPv4).  For example -B ip:n0clu.ampr.net

       --bud ip:address/maskbits matches all IP addresses  that  have  the  given  prefix.   For  example  --bud
                 ip:44.0.0.0/8  matches  the entire class-A network.  --bud ip:192.168.0.0/16 matches the entire
                 class-B  network.   --bud  ip:fe80::201:3ff:fe9a:38c6  matches  a  single  IPv6  host.    --bud
                 ip:2002:905::/32 matches the 32-bit IPv6 prefix.

RUNTIME CONTROLS

       aprsdigi responds to the following signals:

       SIGUSR1   Print  cumulative  statistics.   For  each  port, the following counters are displayed: packets
                 received and how many of those where ignored,  duplicates,  loops,  mic-E  formatted;   packets
                 transmitted  and  how many of those where conventional digipeats, flooding digipeats (WIDEn-n),
                 SSID-based digipeats, and IDs.  If a log file was specified with the -l --logfile option,  then
                 the statistics are written to that file.  Otherwise they are written to stderr.

       SIGUSR2   Prints the statistics and then resets all counters to zero.

       All other normal termination signals cause final statistics to print before aprsdigi exits.

SSID-BASED ROUTING

       SSID-based  routing  uses a non-zero sub-station ID in the destination callsign, an empty digipeater path
       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 modified destination of “APRS
       VIA WIDE3-3” (in a network that supports WIDEn-n flooding).  A packet sent to “APRS-11” would be repeated
       to the West unproto path, as defined with the --west option.  A table of  SSID  values  and  their  paths
       follows:

       SSID unproto path
       ---- ------------
       0    none
       1    WIDE1-1
       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

       SSID digipeating was first introduced with the Mic-Encoder but works with any destination callsign with a
       non-zero SSID.  The theory behind destination SSID digipeating is described in more detail in the APRSdos
       README, MIC-E.TXT.  Basically, the idea is to minimize packet lengths and to have the manager of the WIDE
       APRS  digipeater  determine the most appropriate directional digipeat paths, removing the burden from the
       mobile user.

       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 --digipath 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 --digipath 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 --flood 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  --keep  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; --trace 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-route function.  “Plain” trace aliases (TRACE; also --trace option) are simply
       substituted in the conventional ( --subst_mycall ) manner.

MULTI PORT OPERATION

       In single port operation, there is only one  interface  specified  with  --interface.   All  packets  are
       received  and  some are retransmitted on the same interface, depending on whether they match the criteria
       for retransmission after translation 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
       interface.

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

       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 frequency.

       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.

DUPLICATING PACKETS

       The --dupe intf option will duplicate a packet received on one interface to the interface name given.  If
       you  want  to duplicate to several other interface, repeat --dupe intf for each interface.  The packet is
       duplicated verbatim as received.  No callsign substitution, flooding or other processing or checking such
       as whether the packet still has any non-repeated digipeaters in the list is  checked.   This  feature  is
       meant to provide a means to simply repeat received packets verbatim, on an RF interface, for example, out
       an  interface  that  might  be  an  Ethernet,  that  has APRS client applications running on it (or aprsd
       listening on a UDP interface).  Digipeating without the normal processing  can  be  dangerous  since  the
       digipeater  list  is never used up.  Because of this, packets received on a given interface will never be
       blindly duplicated back to the same interface, regardless of the option setting.

TRACE vs. TRACEN-N

       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*

KILLING LOOPING PACKETS

       Kill looping packets (--kill_loops 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.

EXAMPLES

       Following is a sample invocation of aprsdigi running on two ports.  This  is  a  contrived  example  that
       tries to show all the features.  Comments to the right describe each feature.
       aprsdigi \
          --verbose \                                 # verbose
          --north "N2YGK-2 WB2ZII WA2YSM-14" \        # North digi path
          --south "N2YGK-3 WB2ZII WA2JNF-4" \         # South ...
          --east "N2YGK-3 WB2ZII KD1LY" \             # East ...
          --west "N2YGK-2 WB2ZII N2MH-15" \           # West ...
          --flood "WIDE" \                            # WIDEn-n flooding
          --trace "TRACE" \                           # TRACEn-n tracing
          --kill_dupes \                              # kill dupes
          --kill_loops \                              # kill loops
          --mice_xlate \                              # do Mic-E translation
          --subst_mycall \                            # do callsign substituton
          --tag " via 147.06 (WB2ZII/R)" \            # add this tag to rec'd pkts
          --nobud "ax25:NOCALL" \                     # ignore pkts from NOCALL
          --dupe udp:233.0.14.100 \                   # dupe everything heard
          --int ax25:sm0:RELAY,WIDE,TRACE \           # ax25 soundmodem intf
          --nomice_xlate \                            # turn off Mic-E translation
          --x1j4_xlate \                              # do X1J4 translation
          --nosubst_mycall \                          # turn off callsign subst.
          --tag - \                                   # clear the tag
          --int ax25:ax0:RELAY,WIDE,FOO,TRACE \       # ax25 ax0 intf.
          --bud - \                                   # clear the budlist
          --bud ip:128.59.39.150/32 \                 # allow only from this IP host
          --int udp:233.0.14.99/12345/16:N2YGK-4,RELAY,WIDE,TRACE \ # multicast
          --int udp:233.0.14.100/12345/16:N2YGK-5      # to this mcast group

       opening UDP socket on 233.0.14.99/12345/16
       UDP address info: family 2 type 2 proto 17 next 0x0
       Linux APRS(tm) digipeater
       Copyright (c) 1996,1997,1999,2001,2002,2003 Alan Crosswell, n2ygk@weca.org
       Version: aprsdigi aprsdigi-2.4.3
       This is free software covered under the GNU General Public License.
       There is no warranty.  See the file COPYING for details.

       # configuration:
        budlist 1 deny NOCALL/48
        budlist 2 permit 128.59.39.150/32
       interface ax25:sm0
        callsign N2YGK-2
        alias RELAY
        alias WIDE
        alias TRACE
        option SUBST_MYCALL on
        option MICE_XLATE on
        option X1J4_XLATE off
        option I_TX on
        option I_RX on
        option I_TXSAME on
        option idinterval 570 #(09:30)
        option tag  via 147.06 (WB2ZII/R)
        budlist 1
       interface ax25:ax0
        callsign N2YGK-3
        alias RELAY
        alias WIDE
        alias FOO
        option SUBST_MYCALL off
        option MICE_XLATE off
        option X1J4_XLATE on
        option I_TX on
        option I_RX on
        option I_TXSAME on
        option idinterval 570 #(09:30)
        option tag #(none)
        budlist 2
       interface udp:233.0.14.99
        callsign N2YGK-4
        alias RELAY
        alias WIDE
        alias FOO
        option SUBST_MYCALL off
        option MICE_XLATE off
        option X1J4_XLATE on
        option I_TX on
        option I_RX on
        option I_TXSAME off
        option idinterval 570 #(09:30)
        option tag #(none)
        budlist 2
       # end of configuration

       My callsigns and aliases (routing table):
       Callsign  Interfaces...
       N2YGK-2   sm0
       RELAY     sm0       ax0       233.0.14.99
       WIDEn-n   sm0       ax0       233.0.14.99
       TRACEn-n  sm0
       N2YGK-3   ax0
       FOO       ax0       233.0.14.99
       N2YGK-4   233.0.14.99
       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: 28 seconds
       log file: (none)
       kill dupes: ON loops: ON  testing: OFF

BUGS

       Aprsdigi  should  not  be confused with a Wes Johnson's DOS program of the same name.  This code has most
       recently been tested with the Linux 2.4.20 kernel under Red Hat Fedora Core 1.  The command  line  syntax
       is  ugly  and will eventually be replaced by a configuration file.  Short options are deprecated and will
       disappear in a future release.  Please use long options.

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.

                                                 14 August 2020                                      APRSDIGI(8)