[aprssig] Setting of the C bit in the AX.25

John Langner WB2OSZ wb2osz at comcast.net
Sat Oct 24 14:08:13 EDT 2015

Short answer:

For the source and destination, set the MSB of the SSID byte to 1.  It is
not used for APRS and can be ignored on receive.

For the digipeater addresses, the MSB is set to 0 initially and gets changed
as the packet gets retransmitted by digipeaters.

The LSB of the SSID byte indicates the end of the address part of the frame.

More details:

This is copied from the comments in

 An APRS UI frame starts with 2-10 addressses (14-70 octets):

 * Destination Address
 * Source Address
 * 0-8 Digipeater Addresses  (Could there ever be more as a result of
                                digipeaters inserting their own call
                                and decrementing the remaining count in
                                WIDEn-n, TRACEn-n, etc.?
                                NO.  The limit is 8 when transmitting AX.25
over the radio
                                However, communication with an IGate server
could have
                                a longer VIA path but that is only in text
form, not 
                                in an AX.25 frame.

 Each address is composed of:

 * 6 upper case letters or digits, blank padded.
        These are shifted left one bit, leaving the LSB always 0.
 * a 7th octet containing the SSID and flags.
        The LSB is always 0 except for the last octet of the address field.

 The final octet of the Destination has the form:

        C R R SSID 0, where,

                C = command/response = 1
                R R = Reserved = 1 1
                SSID = substation ID
                0 = zero

 The final octet of the Source has the form:

        C R R SSID 0, where,

                C = command/response = 1
                R R = Reserved = 1 1
                SSID = substation ID
                0 = zero (or 1 if no repeaters)

 The final octet of each repeater has the form:

        H R R SSID 0, where,

                H = has-been-repeated = 0 initially.
                        Set to 1 after this address has been used.
                R R = Reserved = 1 1
                SSID = substation ID
                0 = zero (or 1 if last repeater in list)

        A digipeater would repeat this frame if it finds its address
        with the "H" bit set to 0 and all earlier repeater addresses
        have the "H" bit set to 1.
        The "H" bit would be set to 1 in the repeated frame.

 In standard monitoring format, an asterisk is displayed after the last
digipeater with
 the "H" bit set.  No asterisk means the source is being heard directly.

 Example, if we can hear all stations involved,

        SRC>DST,RPT1,RPT2,RPT3:         -- we heard SRC
        SRC>DST,RPT1*,RPT2,RPT3:        -- we heard RPT1
        SRC>DST,RPT1,RPT2*,RPT3:        -- we heard RPT2
        SRC>DST,RPT1,RPT2,RPT3*:        -- we heard RPT3

 Next we have:

 * One byte Control Field       - APRS uses 3 for UI frame
                                   The more general AX.25 frame can have

 * One byte Protocol ID                 - APRS uses 0xf0 for no layer 3

 Finally the Information Field of 1-256 bytes.

 And, of course, the 2 byte CRC.

More information about the aprssig mailing list