Provided by: aprsdigi_3.10.0-5_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 algorithim.

       • 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).

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

       -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
            RELAY,N2YGK-7,WB2ZII,N2MH-15,WA2YSM-14*

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.

                                                25 February 2004                                     APRSDIGI(8)