[aprssig] APRS message numbers

Lynn W. Deffenbaugh (Mr) ldeffenb at homeside.to
Sat Nov 21 21:48:56 EST 2009

Andrew Rich wrote:
> Can someone please explain to me what is the relationship between APRS 
> message numbers and payload ?
> What can the APRS message number go up to ?
> Is it two digits 0 padded ?
> Can you send "TEST{34" and "TEST{45"

Pull a copy of APRS101.PDF and read chapter 14.  Once you understand the 
"message number" or "ack" from there, check out 
http://www.aprs.org/aprs11/replyacks.txt to confuse yourself even more.

> What does the system / mobiles do with it ?

First, there is no "system" to APRS, just a bunch of stations and 
computers that happen to speak a shared protocol.  There is no "central 
server" either.  APRS-IS is simply a pipe that carries APRS-formatted 
traffic further than RF can.

Basically a message can end in an open curly { followed by from 1 to 5 
alphanumeric characters.  The receiver is expected to take the 
characters after the { and send them back to the sender in another 
message whose only text is ackXXXXX where XXXXX are the characters after 
the { in the original message.

> What happens if I send "TEST TWO{34" is that considered a new message ?

Every message is considered a "new" message.  Receiving stations 
(according to the spec) are expected to send back an ack for EVERY 
message received, even duplicates.

> Does the system rely on the fact that the message will either get 
> delievered or die off before the same message number is re-used ?

The sending station doesn't rely on anything in particular.  Many 
stations will keep retransmitting a message until a corresponding ack is 
received or a retry counter expires.  The actual value of the characters 
following the { are up to the sending station.  If the sending station 
wants to re-use them, it can.  No station outside of the sending and 
receiving station is supposed to care.

If you are generating new message traffic, you become the sending 
station and should put your own ack code on it (if you want an ack).  If 
you are spoofing that the message came from some other station 
(considered bad practice on APRS), then you should NOT include an ack 
code as it will go back to that station that won't have any clue what to 
do with it.

Given this, you might begin to see why my design called for the message 
buffering server (not any existing thing within APRS RF or -IS) to do 
its own messaging to/from the sender and receiver and not just blindly 
and automatically buffer the message and deliver it later without 

Consider station A sending a message to station B suggesting that they 
meet for lunch.  Station B isn't on the air and doesn't get the message, 
so station A lunches alone.  Three days later, station B goes on the air 
and is "discovered" so the buffered message is delivered just before 
lunch.  Station B thinks it is new and goes to the suggested watering 
hole only to wait hours and finally leave disgruntled that Station A 
stood him/her up.  Not a good thing.

IMHO, any message buffer/re-delivery service needs to get the sender's 
permission before buffering a message and also needs to inform the 
eventual recipient that this message has been delayed.  And you can't 
muck within the message body as it may already be at the maximum allowed 

Complicated, isn't it?

Lynn (D) - KJ4ERJ

More information about the aprssig mailing list