Ero sivun ”APRS-AX.25.en” versioiden välillä

Radioamatööriwikistä
Siirry navigaatioon Siirry hakuun
>Oh2mqk
(More notes about HDLC generation)
>Oh2mqk
p (About modulation details on AFSK as used by APRS.)
Rivi 4: Rivi 4:


Most important differences:
Most important differences:
* Three topmost bits on Source and Destination address fields SSID bytes are never validated.  Practically any bit values can be used, but recommended version is to use 011 or 111 for both fields.
* Three topmost bits on Source and Destination address fields SSID bytes are never validated.  Practically any bit values can be used, but recommended version is to use 011 or 111 for both fields.
* VIA address fields (digipeater fields) can be up to 8, AX.25 v2.2 says that there can be up to two.
* VIA address fields (digipeater fields) can be up to 8, AX.25 v2.2 says that there can be up to two.
* The topmost bit on SSID bytes of VIA address fields is "Has been digipeated", and the two reserved ones should be "11", but again nobody validates those two reserved bits!
* The topmost bit on SSID bytes of VIA address fields is "Has been digipeated", and the two reserved ones should be "11", but again nobody validates those two reserved bits!
After the AX.25 address fields, used control byte is always 0x03, and used PID byte is 0xF0.




Rivi 16: Rivi 17:
* NRZI datastream produces AFSK tones per Bell-202, 1200 Hz (for bit 1) / 2200 Hz (for bit 0)
* NRZI datastream produces AFSK tones per Bell-202, 1200 Hz (for bit 1) / 2200 Hz (for bit 0)
** Some receivers accept also V.23 tones (1300 Hz / 2100 Hz), but that is not very common.
** Some receivers accept also V.23 tones (1300 Hz / 2100 Hz), but that is not very common.
 
There is no well known and recognized standard on what deviation signal should be produced by these tones, and when one listens on audio, this is apparent with varying tone volume when different systems are sending packets.  On FM this means the signal deviations vary, which then appears at varying signal volumes and only observing S/Nb0 is telling if the signal is really from too far away, and too weak to be properly detected by the FM detector.
 
Converting HDLC to NRZI (and back) can be done with this circuitry, or equivalent software:
:[[Image:Packet-radio-hdlc-to-nrzi-conv.png|600px]]




For preamble before first HDLC flag, there should be at least 16 zero bits, which produce alternating tone pattern, which then quickens bit synchrony detection.
For preamble before first HDLC flag, there should be at least 16 zero bits, which produce alternating tone pattern, which then quickens bit synchrony detection.
If more than one data packet is sent, the entire time after first data packet's ending flag until next packet's start flag shall be filled with flags, '''not''' zero bits, nor anything else!


About HDLC and CRC-CCITT (16 bits):
About HDLC and CRC-CCITT (16 bits):
* HDLC is bit synchronous transmission of data, where payload has never more than 5 consecutive high (1) bits.
* HDLC is bit synchronous transmission of data, where payload has never more than 5 consecutive high (1) bits.
* Bytes in HDLC payload are sent low bit first.
* When payload has more than 5 sequential 1 bits, the bit-stuffing algorithm inserts a zero bit after 5 consecutive one bits. Receiver must remove these inserted zero bits.
* When payload has more than 5 sequential 1 bits, the bit-stuffing algorithm inserts a zero bit after 5 consecutive one bits. Receiver must remove these inserted zero bits.
* FLAG sequences in HDLC separate payload frames, and fill also idle time in between data carrying frames.  The sequence is:  0111,1110.  If more than one data frame is sent in single transmission, those frames can be separated by anything from one to several flags.  Single flag separation is called "back-to-back".
* FLAG sequences in HDLC separate payload frames, and fill also idle time in between data carrying frames.  The sequence is:  0111,1110.  If more than one data frame is sent in single transmission, those frames can be separated by anything from one to several flags.  Single flag separation is called "back-to-back".
* Bytes in HDLC payload are sent low bit first.
* If more than one data packet is sent, the entire time after first data packet's ending flag until next packet's start flag shall be filled with flags, '''not''' zero bits, nor anything else!
* HDLC specification says that data is followed by 16 bits of CRC-16 sent out high bit first.  Calculating this with reciprocal polynome permits sending it low bit first, where that may be necessary for extremely memory space sensitive assembly coding.
* HDLC specification says that data is followed by 16 bits of CRC-16 sent out high bit first.  Calculating this with reciprocal polynome permits sending it low bit first, where that may be necessary for extremely memory space sensitive assembly coding.
** Scott A Miller has example codes of this for OpenTracker use at his web: http://n1vg.net/packet/index.php
** Scott A Miller has example codes of this for OpenTracker use at his web: http://n1vg.net/packet/index.php
Converting HDLC to NRZI (and back) can be done with this circuitry, or equivalent software:
:[[Image:Packet-radio-hdlc-to-nrzi-conv.png|600px]]


[[Luokka:APRS]]
[[Luokka:APRS]]

Versio 2. lokakuuta 2009 kello 21.11

Finnish version is at APRS-AX.25 page

APRS uses variation of AX.25-link-layer protocol, which leaves several of AX.25 protocol details ignored.

Most important differences:

  • Three topmost bits on Source and Destination address fields SSID bytes are never validated. Practically any bit values can be used, but recommended version is to use 011 or 111 for both fields.
  • VIA address fields (digipeater fields) can be up to 8, AX.25 v2.2 says that there can be up to two.
  • The topmost bit on SSID bytes of VIA address fields is "Has been digipeated", and the two reserved ones should be "11", but again nobody validates those two reserved bits!

After the AX.25 address fields, used control byte is always 0x03, and used PID byte is 0xF0.


Primary modulation method:

  • NBFM radio on frequency which depends on the continent of operation. 144.390 MHz on USA, 144.800 MHz in Europe, etc.
  • FM carries two audio modem tones at 1200 baud bit-rate. Method is known as AFSK.
  • Original datastream is at first run thru HDLC encoding, then NRZI encoding, which inverts outgoing bit every time there is zero bit in the original data-stream.
  • NRZI datastream produces AFSK tones per Bell-202, 1200 Hz (for bit 1) / 2200 Hz (for bit 0)
    • Some receivers accept also V.23 tones (1300 Hz / 2100 Hz), but that is not very common.

There is no well known and recognized standard on what deviation signal should be produced by these tones, and when one listens on audio, this is apparent with varying tone volume when different systems are sending packets. On FM this means the signal deviations vary, which then appears at varying signal volumes and only observing S/Nb0 is telling if the signal is really from too far away, and too weak to be properly detected by the FM detector.


For preamble before first HDLC flag, there should be at least 16 zero bits, which produce alternating tone pattern, which then quickens bit synchrony detection.

About HDLC and CRC-CCITT (16 bits):

  • HDLC is bit synchronous transmission of data, where payload has never more than 5 consecutive high (1) bits.
  • Bytes in HDLC payload are sent low bit first.
  • When payload has more than 5 sequential 1 bits, the bit-stuffing algorithm inserts a zero bit after 5 consecutive one bits. Receiver must remove these inserted zero bits.
  • FLAG sequences in HDLC separate payload frames, and fill also idle time in between data carrying frames. The sequence is: 0111,1110. If more than one data frame is sent in single transmission, those frames can be separated by anything from one to several flags. Single flag separation is called "back-to-back".
  • If more than one data packet is sent, the entire time after first data packet's ending flag until next packet's start flag shall be filled with flags, not zero bits, nor anything else!
  • HDLC specification says that data is followed by 16 bits of CRC-16 sent out high bit first. Calculating this with reciprocal polynome permits sending it low bit first, where that may be necessary for extremely memory space sensitive assembly coding.


Converting HDLC to NRZI (and back) can be done with this circuitry, or equivalent software:

Packet-radio-hdlc-to-nrzi-conv.png