APRS v1 Page 3

From whuckaba
Jump to: navigation, search

Back to APRS

Originally 11/8/03, Updated on 12/7/03
NOTE: This port from my website is more purely for historical purposes only. The AX.25 frame displayed here is a non-compressed / non-MIC-E frame. Currently MIC-E seems to be a preferred message format, as it uses the address feild and the payload to convey lat, lon, speed, etc. I honestly am not sure how the accuracy compares, if there is any degredation.

Original Packet

The original AX25 Frame as received by APRS-IS Servers:

KC5QYO-14>APT310,WIDE3-2,qAo,KC5EVE-12:!2938.21N/09514.01Wk360/000/A=000036/All I want is APRS-IS

Broken Into chunks:

KC5QYO-14>APT310,WIDE3-2,qAo,KC5EVE-12:!2938.21N/09514.01Wk360/000/A=000036/All I want is APRS-IS

Sending Unit

KC5QYO-14>APT310,WIDE3-2,qAo,KC5EVE-12:!2938.21N/09514.01Wk360/000/A=000036/All I want is APRS-IS


Sending Unit. Typically "AMATEUR CALL"-"SSID". Sometimes is aliased. SSID's are used to help identify the type of sending unit. If it has no SSID, most likely it is not a mobile station. SSIDs also can simply refer to one of a series (like the AI5TX repeater network). SSID can also refer to the ICON or SYMBOL displayed. Note, the two following symbol systems override this one. Here are the accepted SSIDs:

  • -1 ambulance
  • -2 bus
  • -3 fire truck
  • -4 bike
  • -5 yacht
  • -6 helicopter
  • -7 small aircraft
  • -8 ship (power boat)
  • -9 car
  • -10 motorcycle
  • -11 balloon
  • -12 jeep
  • -13 recreational vehile
  • -14 truck
  • -15 van

PORT NOTE: As of 2010, the SSID number has really been depreciated. Most people still use -9, however the descriptor charectors (seen below even in this) are still used, however there has been a change to that implentation as well, as the standard has evolved. Hopefully I will touch on that in my updated tracker.

Destination and Tracking

KC5QYO-14>APT310,WIDE3-2,qAo,KC5EVE-12:!2938.21N/09514.01Wk360/000/A=000036/All I want is APRS-IS

(POST Edited 2010) This whole item is an address feild, however it has been somewhat changed to fit the needs of APRS. The first item can be the system that send the message, what type of object the thing is, or a MIC-E lattitude/status/long+100 indicators.

Sending Device

The first thing in this particular string is an identifier for what sent the packet. For this example, APT310 means TinyTrak Version 3(.10?). Here are some of the rest:

  • AP40 Packets injected from AO-40 SATGATE stations
  • APA A-Filter, Alinco, etc
  • APAFxx AFilter.
  • APAXxx AFilterX.
  • APAHxx AHub
  • APB Rabbit TCPIP microprocessors
  • APC Windows CE, etc
  • APCYxx Cybiko applications
  • APD APRSd, etc
  • APDTxx APRStouch Tone (DTMF)
  • APE avail
  • APF APFxxx Firenet
  • APG Gates, etc
  • APH HamHud, etc
  • API Icom, etc
  • APICQx for ICQ
  • APJ JavaAPRS,JeAPRS,etc
  • APJAxx JavAPRS
  • APK Kenwood, etc
  • APK0xx THD7's
  • APK1xx D700's
  • APL Liunx applications
  • APM MacAPRS, etc
  • APN Network nodes, digis, etc
  • APN3xx Kantronics KPC-3 rom versions
  • APN9xx Kantronics KPC-9612 Roms
  • APNAxx WB6ZSU's APRServe
  • APNMxx MJF TNC roms
  • APNPxx Paccom TNC roms
  • APNUxx UIdigi
  • APO APRSpoint
  • APP pocketAPRS, etc
  • APQ APQxxx Earthquake data
  • APR APR8xx APRSdos,etc
  • APRDxx APRSdata, APRSdr
  • APRKxx APRStk
  • APRS Generic, (obsolete. Digis should use APNxxx instead)
  • APRXxx APRSmax
  • APRTLM used my MIM's and Mic-lites, etc
  • APRSTx APRStt (Touch tone)
  • APS APRS+SA, etc
  • APT TinyTrack
  • APTTxx Tiny Track
  • APT2xx Tiny Track II
  • APT3XX Tiny Track3
  • APTAxx K4ATM's tiny track
  • APTWxx Byons WXTrac
  • APTV for ATV/APRN and SSTV applications
  • APU UIview, etc
  • APU1xx UIview 16 bit applications
  • APU2xx UIview 32 bit apps
  • APU3xx UIview terminal program
  • APV Voice over Internet applications
  • APVRxx is for IRLP
  • APVLxx is for I-LINK
  • APVExx is for ECHO link
  • APW WinAPRS, etc
  • APX Xaprs, Xastir, etc
  • APY etc, Yeasu, etc
  • APZ Experimental
  • APZ0xx Xastir (old versions. See APX)
  • APZPAD Smart Palm

Sending Type

Alternately these could represent what type of unit is sending the information (more typical in tactical, but also seems depreciated as of 2010.. either way the unit type will prevail from the paylod.

GPSBB - Police Car, Sheriif GPSBH - Small Aircraft GPSBK - Snow Mobile GPSBP - Dot GPSP# - Circle with a Number # (0-9) GPSA# - Circle with a Number # (0-9) GPSMT - Motorcycle GPSMU - Railroad Engine GPSMV - Car GPSPC - Canoe GPSNV# - Numbered Car (0-9) GPsPO - Ballon GPSRR - Recreational Vehicle GPSPS - Space Shuttle GPSPU - BUS GPSPV - ATV GPSPX - Helicopter GPSPY - Sailboat GPSLF - Fire Truck GPSLJ - Jeep GPSLK - Truck GPSLP - Lost Puppy (hm? Put a tracker on a dogs collar? How do we know its lost?) GPSSJ - steam Shovel GPSLS - Ship/Boat GPSLU - 18-Wheeler GPSLV - Van GPSSS# - Numbered Ship 0-9 GPSSU# - Numbered Truck 0-9 GPSSV# - Numbered Van 0-9 GPSLE - Horse GPSLB - Bicycle GPSLA - Ambulance GPSDV# - Numbered Aircraft GPSAS - Amateur Satellite GPSHV - Large Aircraft GPSHS - Jogger



Honestly I am not quite sure of how the latitude is compressed, however the latitude is compressed, a single charector status code ("on duty", "patrol", etc), and a modifier that tells the receiving unit that the longitude is "100+" (ie 100W 100E 110W 110E etc). And this is all in 6 letters.


Theoretically one could specify what stations to go through (which works on a base-station setup, where hops to APRS-IS is know). However the "benifit" of APRS over traditional packet is it is a "broadcast" style system where everyone can listen. (Edited 2010) A large number of the original designators like "relay" and "wide" have become depreciated, as newer specifications of AX.25 for reduction in looping packets has increased. Currently (2010) the only recommended usages are WIDE1-1, and WIDEn-N. WIDE1-1 is left for backwards compatability only. WIDEn-N is a repeating command, where 'n' is the number of requested hops, and 'N' is the number remaining. IE in an original send, this may be "WIDE2-2". The first system that receives it, will deprciate it to "WIDE2-1". The next system will depreciate it to "WIDE2*", and it will not be repeated again.

The original (back in 2003) WIDEn-N also had a TRACEn-N. TRACEn-N has been depreciated, and now most WIDEn-N will leave the trails in the address feild so network optimization and coordiation effrots can be done. These are not in the originally sent packet, but as it moves about the network.

Trace Section

KC5QYO-14>APT310,WIDE3-2,qAo,KC5EVE-12:!2938.21N/09514.01Wk360/000/A=000036/All I want is APRS-IS

Again AX.25 plays fun tricks with the old packet system and most systems leave a trail of where the packet has been in the header to allow network optimization. This is NOT included in the original packet as sent, but added as it moves about the system.

So a more common packet today (2010) would look like:

N5VHO-11>RY1W1R,W5RRR-1*,WIDE2-1,qAR,WC5WM-15:`zOk |_>/]"3{}

Here you will see the packet went through "W5RRR-1" (the star is just part of AX.25 so that W5RRR-1 doesn't hear that from another digipeter and think it is for itself). (As a side note the RY1W1R is the MIC-E latitude/status/100-indicator).

The other thing that gets added is when the packet is pulled from radio and injected into APRS-IS (internet service).

Server Generated checks: (in 2003, I believe some have changed in 2010).

  • qAC - Packet was received from the client directly via a verified connection (FROMCALL=login). The callSSID following the qAC is the login of the client.
  • qAX - Packet was received from the client directly via a unverified connection (FROMCALL=login). The callSSID following the qAX is the login of the client. This construct is in addition to the TCPIP*/TCPXX* construct currently in place.
  • qAU - Packet was received from the client directly via a UDP connection. The callSSID following the qAU is the login of the server.
  • qAo - (letter O) Packet was received via a client-only port, the FROMCALL does not match the login, and the packet contains either a ,I or qAR construct where the indicated IGate matches the login.
  • qAO - (letter O) Packet was received via a client-only port and the FROMCALL does not match the login.
  • qAS - Packet was received from another server or generated by this server. The latter case would be for a beacon generated by the server. Due to the virtual nature of APRS-IS, use of beacon packets by servers is strongly discouraged. The callSSID following the qAS is the login or IP address of the first identifiable server (see algorithm).
  • qAr - Packet was received indirectly (via an intermediate server) from an IGate using the ,I construct. The callSSID following the qAr it the callSSID of the IGate.
  • qAR - Packet was received directly (via a verified connection) from an IGate using the ,I construct. The callSSID following the qAR it the callSSID of the IGate.

Client Generated:

  • qAR - Packet is placed on APRS-IS by an IGate from RF. The callSSID following the qAR it the callSSID of the IGate.
  • qAZ - Packet is generated by the server/client/IGate and should not be propagated. The callSSID following the qAZ is the callSSID of the server/client/IGate. This is normally used for connection messages such as messages to USERLIST.
  • qAI - Trace packet. This packet tells each server to add login identification to the packet. This packet starts with the callSSID of the originating station following the qAI. See algorithm for more details.

And after this "q" value will the actual RF->internet gateway it traveled through. In the case of my packet, KC5EVE-12, in the case of the second example (N5VHO-11's packet), WC5WM-15.


KC5QYO-14>APT310,WIDE3-2,qAo,KC5EVE-12:!2938.21N/09514.01Wk360/000/A=000036/All I want is APRS-IS

It depends on if it is MIC-E, repeat of the NMEA code, or some other variation.
The following is for what TINY TRAK outputs. (using the ! protocol definintion). This is valid for non-compressed output that uses the APRS ! protocol.

As of 2010, it should be noted that the creator of APRS wants people to remember that APRS is not just for "tracking" or "one-way" traffic. It was made very popular for that purpose (and still is one of the most widely used aspects). But it can also be used for sending messages, reporting conditions, etc. The first letter of the payload typically indicates what the payload is for.

!Position without timestamp (or 2000 WX Station)
#Peet Bros U-II Weather Station
%Agrelo DFJr/Microfinder
'Old Mic-E / Current TM-D700
*Peet Bros U-II Weather Station
<Station Capabilities
=Position without timestamp (with APRS messaging)
@Position with timestamp and messanging
Ttelemetry data
,Invalid Data, or Test Data
.Space Weather
/Position with Time Stamp
`Current Mice-E (not TM-D700)
}3rd Party Traffic

Uncompressed Simple APRS Location String

(This is what I used in 2003).

Lat and Lon

KC5QYO-14>APT310,WIDE3-2,qAo,KC5EVE-12:!2938.21N/09514.01Wk360/000/A=000036/All I want is APRS-IS

2938.21N 09514.01W, LAT/LON in DDMM.MMd/DDDMM.MMd format. 29 degrees 38.21 minutes North, 095 degrees 14.01 minutes West


KC5QYO-14>APT310,WIDE3-2,qAo,KC5EVE-12:!2938.21N/09514.01Wk360/000/A=000036/All I want is APRS-IS

This is part of the preferred manner of putting an icon to the packet for marking on a map.

The First of the two specifies if it is the primary / or secondary \ set. The secondary set marker may be replaced with a number 0 through 9 with can be overlay-ed on top of the normal symbol. Useful in certain storm chasing and events.

The second character is the actual icon. (I have omitted the table from the original webpage due to wiki encoding issues.

Course Direction

KC5QYO-14>APT310,WIDE3-2,qAo,KC5EVE-12:!2938.21N/09514.01Wk360/000/A=000036/All I want is APRS-IS

Course 360 (North), Speed 0 (stationary); the xxx/xxx is recognized by APRS as a course / speed (For mobile stations) or as direction / speed for wind in weather stations.


KC5QYO-14>APT310,WIDE3-2,qAo,KC5EVE-12:!2938.21N/09514.01Wk360/000/A=000036/All I want is APRS-IS

This is the APRS definition for altitude ... I believe it is in feet... but i can't find definitive data.


KC5QYO-14>APT310,WIDE3-2,qAo,KC5EVE-12:!2938.21N/09514.01Wk360/000/A=000036/All I want is APRS-IS

Free-form beacon text, up to maximum packet length (which for TT3 was limited by the processor.

First Test Run


First Trip around the block. Unfortantly the transmitter's battery died, and I didn't realize it wasnt on vehicle power for a long strech (610 to 10 to 8)

Here are the raw packets from APRS-IS

KC5QYO-14>APT310,WIDE3-3,qAO,KC5QYO:!2938.22N/09514.00Wk360/000/A=000068/All I want is APRS-IS
KC5QYO-14>APT310,WIDE3-3,qAO,KC5QYO:!2938.09N/09514.06Wk268/025/A=000052/All I want is APRS-IS
KC5QYO-14>APT310,WIDE3-2,qAo,K5MBH-3:!2940.72N/09516.23Wk320/001/A=000062/All I want is APRS-IS
KC5QYO-14>APT310,WIDE3-2,qAo,K5MBH-3:!2942.26N/09516.51Wk049/052/A=000072/All I want is APRS-IS
KC5QYO-14>APT310,WIDE3-2,qAo,K5MBH-3:!2939.87N/09509.35Wk178/057/A=000062/All I want is APRS-IS
KC5QYO-14>APT310,WIDE3-2,qAo,K5MBH-3:!2938.06N/09509.98Wk223/060/A=000078/All I want is APRS-IS
KC5QYO-14>APT310,WIDE3-2,qAo,K5MBH-3:!2936.77N/09511.81Wk232/063/A=000059/All I want is APRS-IS
KC5QYO-14>APT310,WIDE3-3,qAO,KC5QYO:!2938.09N/09514.04Wk355/000/A=000042/All I want is APRS-IS
KC5QYO-14>APT310,WIDE3-3,qAO,KC5QYO:!2938.22N/09514.00Wk267/000/A=000062/All I want is APRS-IS

The interesting thing to note is some are from my own RF-to-Internet gateway (the make-shift version using my HT, AGW-Packet Engine, and computer) and some are from K5MBH's RF-to-Internet gateway. That station is located near free-port. Since those packets have WIDE3-2, it was relayed once to get there. I am still trying to determine if I want to put up a dedicated computer for RF-to-Internet gateway. There are a number of packets that never made it to the internet (like while on I45 stuck in traffic on that circuit). If I put up a slightly better antenna (actually my scanner hears packets full quieting and the HT doesnt (which I find sad). That will require slight modification of the scanner, but it is do-able.