APRS On-Air Protocols and Formats
            APRS and Mic-Encoder are Trademarks of Bob Bruninga
      APRS protocols are copyrighted material of Bob Bruninga, WB4APR

COPYRIGHT 1992-98: Amateur radio operators may freely copy and use the APRS
software in the Amateur Radio Service. I have tried to make APRS fully capable
of receiving and plotting ALL on-the-air packets whether a station is
registered or not. The registration contribution only balances the headache
factor, and to cover myself against un- licensed commercial exploitation. What
you get for registering is the ability to interface your own GPS/WX/DF units
and a little convenience in saving your configuration.

Amateur Radio operators may apply the APRS formats in the transmission of
position, weather, and status packets from their own station. However, the
author reserves the ownership of these protocols for all commercial
applications and for all reception and plotting applications, amateur or not.
Homegrown versions and/or the release of source code would cripple further
APRS development and the maintenance of on-air standards leading to chaos and
are are not authorized.

APRS is a registered trademark of APRS Software and Bob Bruninga. Other
software engineers desiring to include APRS protocols in their software for
sale within or outside of the amateur community will require a license from
the author. Licensing is not intended to be restrictive, but to provide a
means for the maintaining a consistent on-air protocol and for the owner of
APRS to share in any proceeds made from APRS applications.

APRS uses UI frames which retain all of the error detection capability of
standard packets, but without acknowledgment. In APRS, collisions or lost
packets are not a problem since information is redundantly transmitted (AND
effeciently! due to the decaying transmission periods). UI packets are the
same type that are sent by a TNC using BEACON and BText commands. NOTE,
however, that the APRS UI packets are generated internally in the APRS
software and the TNC BText is not used while APRS is running.

APRS uses the TNC UNPROTO command to setup the path for the trans- mission of
each packet. But when we refer to the UNPROTO command in APRS, we are refering
to the APRS UNPROTO or OPS-UNPROTO command which then in turn issues the
hardware UNPROTO commands to the TNC.

TO ADDRESS: APRS uses the TO address to indicate the general application of
your packets or to address certain sub-nets of interest. By default, APRS will
accept packets addressed to the following generic calls:

APRS, BEACON, ID, CQ, QST, BEACON, MAIL, SKYWRN, GPS, DFNET, TEST, DRILL and
SPCL.

All other TO addresses are ignored unless you set CONTROLS-FILTERS-OTHER to
ON. There is also a alt-SETUP-MODES-SPECIAL command which tells APRS to ignore
ALL TO calls except SPCL. SImilarly it configures your station to transmit TO
SPCL. This allows participants in a special event to ignore all other traffic
on frequency but still all non-participants will still see the SPCL packets.
You can also use alt-S-MODES-altNet to set up any other private alternet
address so that your APRS packets do not clutter up other APRS users screens.

APRS FORMATS: In the following APRS on-air formats, the abbreviations are D
for degrees (or DAY), M for minutes (Both lat/long and time), h for hundredths
(or Hours), N for North and W for West. The APRS symbol is identified by the
character following the Longitude (shown here as a $). See SYMBOLS.HTM. There
are three types of time for local, zulu and hhmmss.

POSITION REPORT: The first character determines the position report format
except for the FIXED format which may occur anywhere up to the 24th character
position in the packet. If the posit begins with @ or = then APRS is running.
If only a TNC is running, then a ! or a / indicates that there is no APRS
messaging capability on line. In this case, the date- time means the time that
aprs WAS LAst running.

FIXED:      .......!DDMM.hhN/DDDMM.hhW$comments...   (fixed short format)
                  =DDMM.hhN/DDDMM.hhW$comments      (message capable)
           /DDHHMM/DDMM.hhN/DDDMM.hhW$comments...   (no APRS is running)
                                                    (fades gray > 2 hrs)
MOBILE:     @DDHHMM/DDMM.hhN/DDDMM.hhW$CSE/SPD/comments...
DF:         @DDHHMM/DDMM.hhN/DDDMM.hhWCSE/SPD/BRG/NRQ/Comments
           .......z............................. (indicates Zulu date-time)
           ......./............................. (indicates LOCAL date-time)
           .......h............................. (Zulu time in hhmmss)
GRDSQR:     [XXnnyy]comments to end of line
           [XXnn]comments to end of line
W3AB>FM19SX:Hello there....                       (Space/MScat/Grid-SQ mode)
W3AB>FM19SX:]$[Hi there....                       (Space/MScat with stn symbol
POWER:      ..........................$PHGabcd... (Power,ant/height/Gain.


OMNI-DF:    ..........................DFSxbcd... (Same as PHG, but x=sig str)

RTTY:       APRS DE WB4APRx/011427/3859.11'07629.11($ ...   This  format
uses only the RTTY subset of the ASCII alphabet where ',)( mean N,S,E & W,
and the x is an SSID number and the $ is the APRS symbol character.  The
.. comment field can contain the normal APRS CSE/SPD.  The callsign must
be padded to six spaces.




POWER-HEIGHT-GAIN:  This optional field replaces the CSE/SPD fields with a
report of transmitter power, antenna height-above-average-terain and
antenna gain.  APRS uses this to plot radio range circles around all
stations.  The following details the format to be used in the BText of
a TNC dedicated as an APRS digipeater:



   !DDMM.mmN/DDDMM.mmW#PHG5360/WIDE...(identifying comments)...
     |         |      | | ||||  |_____ makes station show up green
     |         |      | | ||||________ Omni (Direction of max gain)
     |         |      | | |||_________ Ant gain in dB
     |         |      | | ||__________ Height = log2(HAAT/10)
    LAT      LONG     | | |___________ Power = SQR(P)
                      | |_____________ Power-Height-Gain identifier *
                      |_______________ # is symbol for digipeater



    As you can see by the integers in the PHG string, there are only 10
    possible values for each of these fields as follows:



    DIGITS   0  1  2   3   4   5   6    7    8    9         Equation
    -------------------------------------------------------------------
    POWER    0, 1, 4,  9, 16, 25, 36,  49,  64,  81  watts  SQR(P)
    HEIGHT  10,20,40, 80,160,320,640,1280,2560,5120  feet   LOG2(H/10)
    GAIN     0, 1, 2,  3,  4,  5,  6,   7,   8,   9  dB
    DIR      0,45,90,135,180,225,270, 315, 360,   .  deg    (D/45)



    The DIRECTIVITY field offsets the PHG circle by one third in the
    indicated direction.  This means a front to back range of 2 to 1.
    Most often this is used to indicate a favored direction or a null
    even though an OMNI antenna is at the site.  Note that 0 means
    OMNI and 8 means 360 or a NORTH offset.



    HIGHTS are ABOVE-AVERAGE TERRAIN!  Not above ground or sea
    level.  Your antenna may be at 1000 ft above sealevel and be on
    a 100 foot tower.  But if you go out 10 miles in all directions
    and find that the average elevation is 1200 feet, then your
    height-above-averag-terain is less than ZERO!!!!




OMNI-SIGNAL-STRENGTH DIRECTION FINDING REPORT:  APRS can localize jammers
by plotting the overlapping signal strength contours of all stations
hearing the signal.  This OMNI-DF format replaces the PHG format with DFS
to indicate DF Signal strength, and the transmitter power field is replaced
with the relative signal from 0 to 9.  The following beacon would
represent a weak signal heard on an antenna with 3 dB gain at 40 feet:



  @141923/3859.11N/07629.23WDFS2230/comments



  A signal of ZERO (0), is equally SIGNIFICANT beacuse APRS uses these
  0 signal reports to draw BLACK circles where the jammer is NOT!
  These BLACK circles are extremely valuable since you will get a lot
  more reports from stations that don't hear the jammer than from those
  that do.   This quickly eliminates a LOT of territory!





WEATHER REPORT:  APRS uses the underline symbol character for WX reports.
For these, the COURSE/SPEED field is used for the WIND and the remainder
of the comment line contains other weather items.  See WX.HTM



@DDHHMM/DDMM.hhN/DDDMM.hhW_CSE/SPDgXXXtXXXrXXXpXXXPXXXhXXbXXXXXdU2k
   r is in hundredths of an inch of rain in the LAST HOUR
   p is in hundredths of an inch of rain in the LAST 24 HOURS
   s is INCHES of snow in the last 24 hours
   b is in tenths of millibars
   h is percent humidity (00=100%)
   dU2k is Ultimeter 2000, /U5 is the 500 and /Dvs is Davis
        The "d" means it is running DOS




OBJECT POSITION:  OBJECT reports are identical to POSITs except that the
posit is preceeded with a fixed nine character object name and a *.



   OBJECT___*DDHHMM/DDMM.hhN/DDDMM.hhW$CSE/SPD/comments...

STATUS PACKET:  These packets are used to tell the world your current
mission or any other single line announcement.  Mobiles may indicate their
destination and ETA.  These packets are time stamped so the sender knows
when they were valid.



   >DDHHMM/comments



ALL OTHER PACKETS:  Any packet that does NOT meet any of the above formats
is assumed to be just a STATUS beacon and is placed on the LATEST list.



   CQ anyone out there?



MESSAGE:  Station to station messages use the following format, again
padding the addressee call with spaces to a total of nine characters
followed by a colon:



   W3XYZ____:one line message text......{3 (the {3 is the line counter)



MSG ACK:   An ACK is just a message with the letters ACK# where the # is
the message line number (following the { character at the end of the line).



   W3XYZ____:ack3



BULLETINS:   BULLETINs are simply messages to the call signs of BLN1, BLN2,
.. BLN#.  They will never be acked, but all APRS stations will capture
and sort them onto the special BULLETINS page.  Bulletins sent to BLN# will
decay to very long periods but bulletins sent to BLNx will decay down to
once every 20 minutes and stay at that rate.



DF REPORTS:  The DF report includes a NRQ field in addition to the
position, course and speed of the vehicle plus the bearing line.

    @DDHHMM.xxN/DDDMM.xxW\CSE/SPD/BRG/NRQ/DF report...



    NRQ indicates the Number of hits (for an N7LUE interface), the
    approximate Range and the Quality of the report. If N is 0, then
    it means nothing.  Values from 1 to 8 give an indication of the
    number of hits per period relative to the length of the time period.
    So 8 means 100% of all samples possible, got a hit.  The N is not
    processed, but is just another indicator from the automatic DF
    units.  By entering a 9 as the HIT indicator, you can indicate to
    other users that your report is manual.  The range limits the
    length of the line to the original maps scale of the sending
    station.  The range is 2^R so, for R=4 would be 16 miles.




DIGIPEATERS, NODES, BBS's AND ALL OTHER PACKET STATIONS:



APRS should be used as a generalized position displaying tool, EVERY TNC
that is permanently on the air, and that also transmits a periodic ID beacon,
should be reporting its position in that ID beacon!  This way, stations
monitoring can quickly see a geographical plot of the network.  If you want
to keep the exact location of your transmitter ambiguous, then use
the GRID-SQUARE format, and your position will be ambiguous to a few miles,
but stations can still see that you are on the air.  If you have special
formats for your BEACONS that contain variable information, then APRS is
perfect for grabbing that information and making it available to users...
If you have any unused aliases, set one to RELAY so others can find you.



QUERIES:  THere are two types of APRS Queries.  One is general to all
stations and the other is in a message format to a single station:



 ?APRS?                    Queries all stations (respond in 2 mins)
 ?APRS?LLLLLL,OOOOOO,RRRR  Queries a radius around a LAT/LONG point
                           If RRR is less than 8 then respond immediately
 ?WX?                      Queries all WX stations
 W3ABC____:?APRS?          Queries just W3ABC  (all of his data)
 W3ABC____:?APRSP          Queries for  W3ABC's Posit
 W3ABC____:?APRSS          Queries for  W3ABC's Status
 W3ABC____:?APRSM          Queries for  W3ABC's messages
 W3ABC____:?APRSO          Queries for  W3ABC's Objects
 W3ABC____:?APRSD          Queries for stations heard DIRECT by W3ABC
 W3ABC____:?APRSH W4XYZ    Queries to see if W3ABC has heard W4XYZ
                           W3ABC sends back a packet with W4XYZ as an OBJ
                           and sends back a message with the number of
                           packets heard per hour from him.



 W3ABC responds with his Posit, Status, Messages or Objects as appripriate.
 For the APRSD he responds with a single MESSAGE back to the query
 station as follows:   Directs= N3ABC W4XYZ AB3GH N5QSO ...



 In the cse of the ?APRSH query, W3ABC sends back the POSIT of W4XYZ as
 an OBJECT and sends back a single line message as follows:
                       Hrd:  14  15  4  .  10  6  7  .

 Which are his Heard statistics per hour for the last 18 hours.