The above is an ACARS AM signal in the time domain. The 16 byte preamble with all 128 bits set to one which generates a 2400 Hz tone for 0.05 seconds is clearly visible at the start of the packet. And there is almost enough detail to visually detect the two individual tones, even though at 48KSPS there is only at most 20 samples per tone.
ACARS VHF Frequencies (MHz) | Location |
129.125 | USA and Canada Additional |
130.025 | USA and Canada Secondary |
130.425 | USA Additional |
130.450 | USA and Canada Additional |
131.125 | USA Additional |
131.450 | Japan Primary |
131.450 | NZ ARINC Channel |
131.475 | Air Canada Company Channel |
131.525 | European Secondary Channel |
131.550 | World Primary |
131.725 | Europe Primary |
131.825 | Lufthansa Company Channel |
131.825 | Air France Company Channel |
131.850 | New European Channel |
136.700 | USA Additional |
136.750 | USA Additional |
136.750 | New European Channel |
136.800 | USA Additional |
136.850 | SITA North America |
136.900 | European and USA Secondary |
136.925 | ARINC European Channel |
Spectral occupancy: ~5kHz AM modulation
The data is transmitted as fast frequency shift keying (FFSK) using two tones, 1200Hz and 2400 Hz. The presence of 1200 Hz indicates a bit toggle from the previous state, the presence of 2400 Hz indicates that the bit is the same.
The code used is 7 bit ASCII 7 + 1 even parity bit.
(In even parity, the parity bit is 1 if the number of 1s in the binary string is odd, thereby making the number of 1s in the full binary string even. In odd parity, the parity bit is 1 if the number of 1s in the binary string is even, thereby making the number of 1s in the full binary string odd.)
So to transmit the letter Y (with an even parity bit) this would be 01011001
Using the two above information, the following would be the transmission of the letter Y using the above FFSK and coding.
0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | |
1200 Hz | - | on | on | on | - | on | - | on |
2400 Hz | on | - | - | - | on | - | on | - |
ACARS information is sent in (one or more) packet frames.
Each message frame consists of at least 50, and up to a maximum of 272 characters or bytes. Each character uses a 7 bit ACSII code with an additional eighth parity bit. This results in a total message transmission duration of between 0.17 and 0.91 seconds.
Message Frame Format
size(bytes) | Description | |
Preamble | 16 | All bits set to 1, to help AGC, and warm up TX/RX hardware 0xFF |
Bit sync | 2 | Characters "+" and "*" to synchronise bits 0x2B, 0x2A |
SYNC | 2 | Character "SYN" is sent to synchronise bytes 0x16, 0x16 |
Start of heading | 1 | Character "SOH" is sent 0x01 |
Mode | 1 | System interface selection (Ref: ARINC Characteristic 597-4) |
Address | 7 | Aircraft registration/identification number |
Acknowledgement |
1 | One Character is sent ACK (0x06) or NAK (0x15) |
Label | 2 | Type of message (message routine and message type) |
Block | 1 | Message block identifier number |
STX | 1 | STX (0x02), or if no text ETX (0x03) and jump down to BCS |
Flight Number | 6 | Airline flight number |
Message Text | 0<->220 | Printable characters only |
Suffix | 1 | ETX (0x03)or ETB (0x17) |
BCS | 2 | Block Check Sequence, Polynomial code for the detection of errors |
BCS Suffix | 1 | ETB (0x17) or DEL (0x7F) |
A few ACARS EXAMPLES (with the Pre-key, BCS and ETB removed)
+*<SYN><SYN><SOH>2..GXONE<NAK>_<DEL>7<STX>M56AES0001<ETX>
+*<SYN><SYN><SOH>X.5Y-KQX<NAK>Q06<STX>S57AKQ01-*<ETX>
+*<SYN><SYN><SOH>2.VH-OGE<NAK> 80<STX>4026QF0039/MEL.<CR><LF>MVA<CR><LF>QF39/13.VHOGE.MEL<CR><LF>AD0829/0840 EA1129 AKL<ETX>
+*<SYN><SYN><SOH>2.VH-OGE<NAK> H1<STX>D029QF0039#1BBTKO<CR><LF>0840 13JAN04 MEL AKL P207 P165 00480 276 145727 04<CR><LF>L 1022 1035 872 8975 1197 61 095 132 05H 2000<CR><LF>R 1025 1043 858 8964 1199 68 098 127 09B 200<CR><LF>1078 1023 096 032P430<CR><LF>1079 1025 093<ETX>
+*<SYN><SYN><SOH>2.VH-OGE<NAK> 86<STX>5208QF0039/AKL.<CR><LF>ARI<CR><LF>AKL ETAB 11:40<CR><LF>WH/CH 01 UN/MNR 02<CR><LF>GIDAY<ETX>
+*<SYN><SYN><SOH>2.VH-OGE<NAK> H1<STX>D063QF0034#1FBFCP<CR><LF>2107 14JAN04 AKL MEL P010 M272 24972 759 129461 09<CR><LF>R 0235<CR><LF>NO 087 098 011 000 000 000 000 000 <CR><LF>PC 085 013 000 000 000 000 000 000 <ETX>
+*<SYN><SYN><SOH>2.VH-OGE<ACK> _ <STX>1243QF0033<ETX>
This information can be better presented by trimming out the fat and displaying something like this:
ACARS Mode: 2
Identification: ..GXONE
Acknowledgement: NAK
Message Routine: 7B
Block number: 0x37
Message: One of the toilets in coach is flooded.
A few example ACARS Modes (codes vary from country to country)
Country | Code | Ground Station |
Worldwide | 2 | to free Groundstations |
UK | [ | East Midlands |
UK | R | Manchester |
Ireland | D | Dublin |
Ireland | O | Cork |
Ireland | S | Shannon |
Belgium | R | Brussels |
Canada | R | Ottawa |
Australia | A | Adelaide |
ACARS Message Types
00 | Emergency Situation Report |
51 | Ground GMT report uplink |
52 | Ground UTC report uplink |
54 | Voice Go-ahead |
57 | Alternative Aircrew Initiated position |
5D | ATIS Report |
5P | Temporary Suspension |
5R | Aircrew Initiated position report |
5U | Weather Request |
5Y | Aircrew Revision to previous |
5Z | Airline Designated |
7A | Aircrew Initiated Engine Data/Takeoff |
7B | Aircrew Entered Miscellaneous Message |
80-89 | Airline Defined Message |
A0 | ATS Facility Notification |
A1 | Oceanic Clearance |
A2 | Unassigned |
A3 | Departure Clearance |
A4 | Flight Systems Message |
A5 | Unassigned |
A6 | Request ADS Reports |
A7 | Free text from ATC |
A8 | Deliver Departure Slot |
A9 | ATIS Report |
AA | ATC Communications |
AB | Terminal Weather Information for Pilots |
AC | Pushback Clearance uplink |
AD | Expected Taxi Clearance |
AE | Unassigned |
AF | CPC Command Response |
B0 | ATS Facility Notification |
B1 | Request Oceanic Clearance |
B2 | Oceanic Clearance Readback |
B3 | Request Departure Clearance |
B4 | Departure Clearance Readback |
B5 | Waypoint position report |
B6 | Provide ADS Report |
B7 | Free text to ATC |
B8 | Request Departure slot |
B9 | Request ATIS Report |
BA | ATC Communication |
BB | Terminal Weather Information for Pilots |
BC | Pushback Clearance Request |
BD | Expected Taxi Clearance Request |
BE | CPC Log-on/Log-off Request |
BF | CPC WILCO |
BG | Unassigned |
C0-C9 | Cockpit Printer Message |
CA | Cockpit Printer Message |
CB | Printer Busy |
CC | Printer in local or test mode |
CD | Printer out of paper |
CE | Printer buffer Overrun |
CF | Printer Initialization before completion |
EI | Internet Email Message |
F3 | Dedicated transceiver advisory |
H1 | General Message |
H2 | Meteorological Report |
H3 | Icing Report |
HF | HFDL Message |
HX | Undelivered Uplink report |
M2 | User Defined Message |
Q0 | Link Test |
Q1 | Departure Report |
Q2 | Estimated Time of Arrival Report |
Q3 | Clock Update Advisory |
Q4 | Voice Circuit Busy (Not Supported) |
Q5 | Unable to deliver uplink message |
Q6 | Voice to Data Changeover advisory |
Q7 | Delay Message |
QA | OUT Fuel Report |
QB | OFF Report |
QC | ON Report |
QD | IN / Fuel Report |
QE | OUT / Fuel/Destination Report |
QF | OFF Destination Report |
QG | OUT / Return IN Report |
QH | OUT Report |
QK | Landing Report |
QL | Arrival Report |
QM | Arrival Information Report |
QN | Diversion Report |
QP | OUT Report |
OFF Report | |
QR | ON Report |
QS | IN Report |
QT | OUT / Return IN Report |
QX | Intercept / Unable to Process |
RA | Command/Response |
RB | Command/Response |
REG | Registration |
S1 | VHF Satellite Report |
S2 | VHF Performance Report |
S3 | LRU Configuration Report |
SA | Media Advisory |
SQ | Squitter Report |
UP | Message Acknowledgement |
:; | Aircraft Transceiver Auto-Tune |
_j | Reserved |
_<DEL> | General Response (Demand Mode) |
7-bit ASCII (American Standard Code for Information Interchange)
(BIN) | (DEC) | (HEX) | (OCT) | Symbol (SYM) | Description |
0000000 | 000 | 00 | 000 | NUL | NULL |
0000001 | 001 | 01 | 001 | SOH | Start of Header |
0000010 | 002 | 02 | 002 | STX | Start of Text |
0000011 | 003 | 03 | 003 | EXT | End of Text |
0000100 | 004 | 04 | 004 | EOT | End of Transmission |
0000101 | 005 | 05 | 005 | ENQ | Enquiry |
0000110 | 006 | 06 | 006 | ACK | Acknowledge |
0000111 | 007 | 07 | 007 | BEL | Bell |
0001000 | 008 | 08 | 010 | BS | Backspace |
0001001 | 009 | 09 | 011 | HT (TAB) | Horizontal Tab |
0001010 | 010 | 0A | 012 | NL (LF) | New Line (Line Feed) |
0001011 | 011 | 0B | 013 | VT | Vertical Tab |
0001100 | 012 | 0C | 014 | NP (FF) | New Page (Form Feed) |
0001101 | 013 | 0D | 015 | CR | Carriage Return |
0001110 | 014 | 0E | 016 | SO | Shift Out |
0001111 | 015 | 0F | 017 | SI | Shift In |
0010000 | 016 | 10 | 020 | DLE | Data Link Escape |
0010001 | 017 | 11 | 021 | DC1 | Device Control 1 (XON) |
0010010 | 018 | 12 | 022 | DC2 | Device Control 2 |
0010011 | 019 | 13 | 023 | DC3 | Device Control 3 (XOFF) |
0010100 | 020 | 14 | 024 | DC4 | Device Control 4 |
0010101 | 021 | 15 | 025 | NAK | Negative Acknowledge |
0010110 | 022 | 16 | 026 | SYN | Synchronous Idle |
0010111 | 023 | 17 | 027 | ETB | End of Transmission Block |
0011000 | 024 | 18 | 030 | CAN | Cancel |
0011001 | 025 | 19 | 031 | EM | End of Medium |
0011010 | 026 | 1A | 032 | SUB | Substitute |
0011011 | 027 | 1B | 033 | ESC | Escape |
0011100 | 028 | 1C | 034 | FS | File Separator |
0011101 | 029 | 1D | 035 | GS | Group Separator |
0011110 | 030 | 1E | 036 | RS | Record Separator |
0011111 | 031 | 1F | 037 | US | Unit Separator |
0100000 | 032 | 20 | 040 | SP | Space |
0100001 | 033 | 21 | 041 | ! | Exclamation mark |
0100010 | 034 | 22 | 042 | " | Quotation mark |
0100011 | 035 | 23 | 043 | # | Number sign |
0100100 | 036 | 24 | 044 | $ | Dollar sign |
0100101 | 037 | 25 | 045 | % | Percentage sign |
0100110 | 038 | 26 | 046 | & | Ampersand |
0100111 | 039 | 27 | 047 | ' | Apostrophe |
0101000 | 040 | 28 | 050 | ( | Opening parenthesis |
0101001 | 041 | 29 | 051 | ) | Closing parenthesis |
0101010 | 042 | 2A | 052 | * | Asterisk |
0101011 | 043 | 2B | 053 | + | Plus sign |
0101100 | 044 | 2C | 054 | , | comma |
0101101 | 045 | 2D | 055 | - | Hyphen (minus) |
0101110 | 046 | 2E | 056 | . | Full Stop |
0101111 | 047 | 2F | 057 | / | Slash |
0110000 | 048 | 30 | 060 | 0 | Zero |
0110001 | 049 | 31 | 061 | 1 | One |
0110010 | 050 | 32 | 062 | 2 | Two |
0110011 | 051 | 33 | 063 | 3 | Three |
0110100 | 052 | 34 | 064 | 4 | Four |
0110101 | 053 | 35 | 065 | 5 | Five |
0110110 | 054 | 36 | 066 | 6 | Six |
0110111 | 055 | 37 | 067 | 7 | Seven |
0111000 | 056 | 38 | 070 | 8 | Eight |
0111001 | 057 | 39 | 071 | 9 | Nine |
0111010 | 058 | 3A | 072 | : | Colon |
0111011 | 059 | 3B | 073 | ; | Semicolon |
0111100 | 060 | 3C | 074 | < | Less than sign |
0111101 | 061 | 3D | 075 | = | Equal sign |
0111110 | 062 | 3E | 076 | > | Greater than sign |
0111111 | 063 | 3F | 077 | ? | Question Mark |
1000000 | 064 | 40 | 100 | @ | At sign |
1000001 | 065 | 41 | 101 | A | |
1000010 | 066 | 42 | 102 | B | |
1000011 | 067 | 43 | 103 | C | |
1000100 | 068 | 44 | 104 | D | |
1000101 | 069 | 45 | 105 | E | |
1000110 | 070 | 46 | 106 | F | |
1000111 | 071 | 47 | 107 | G | |
1001000 | 072 | 48 | 110 | H | |
1001001 | 073 | 49 | 111 | I | |
1001010 | 074 | 4A | 112 | J | |
1001011 | 075 | 4B | 113 | K | |
1001100 | 076 | 4C | 114 | L | |
1001101 | 077 | 4D | 115 | M | |
1001110 | 078 | 4E | 116 | N | |
1001111 | 079 | 4F | 117 | O | |
1010000 | 080 | 50 | 120 | P | |
1010001 | 081 | 51 | 121 | Q | |
1010010 | 082 | 52 | 122 | R | |
1010011 | 083 | 53 | 123 | S | |
1010100 | 084 | 54 | 124 | T | |
1010101 | 085 | 55 | 125 | U | |
1010110 | 086 | 56 | 126 | V | |
1010111 | 087 | 57 | 127 | W | |
1011000 | 088 | 58 | 130 | X | |
1011001 | 089 | 59 | 131 | Y | |
1011010 | 090 | 5A | 132 | Z | |
1011011 | 091 | 5B | 133 | [ | Open square bracket |
1011100 | 092 | 5C | 134 | \ | Backslash |
1011101 | 093 | 5D | 135 | ] | Close square bracket |
1011110 | 094 | 5E | 136 | ^ | Caret |
1011111 | 095 | 5F | 137 | _ | Underscore |
1100000 | 096 | 60 | 140 | ` | Grave accent |
1100001 | 097 | 61 | 141 | a | |
1100010 | 098 | 62 | 142 | b | |
1100011 | 099 | 63 | 143 | c | |
1100100 | 100 | 64 | 144 | d | |
1100101 | 101 | 65 | 145 | e | |
1100110 | 102 | 66 | 146 | f | |
1100111 | 103 | 67 | 147 | g | |
1101000 | 104 | 68 | 150 | h | |
1101001 | 105 | 69 | 151 | i | |
1101010 | 106 | 6A | 152 | j | |
1101011 | 107 | 6B | 153 | k | |
1101100 | 108 | 6C | 154 | l | |
1101101 | 109 | 6D | 155 | m | |
1101110 | 110 | 6E | 156 | n | |
1101111 | 111 | 6F | 157 | o | |
1110000 | 112 | 70 | 160 | p | |
1110001 | 113 | 71 | 161 | q | |
1110010 | 114 | 72 | 162 | r | |
1110011 | 115 | 73 | 163 | s | |
1110100 | 116 | 74 | 164 | t | |
1110101 | 117 | 75 | 165 | u | |
1110110 | 118 | 76 | 166 | v | |
1110111 | 119 | 77 | 167 | w | |
1111000 | 120 | 78 | 170 | x | |
1111001 | 121 | 79 | 171 | y | |
1111010 | 122 | 7A | 172 | z | |
1111011 | 123 | 7B | 173 | { | Open Curly Bracket |
1111100 | 124 | 7C | 174 | | | Vertical Bar |
1111101 | 125 | 7D | 175 | } | Close Curly Bracket |
1111110 | 126 | 7E | 176 | ~ | Tilde |
1111111 | 127 | 7F | 177 | DEL | Delete Character |
(ref: http://www.pervisell.com/ham/raftmode.htm#I76 )
(ref: http://www.tapr.org/aprsdoc/ACARS.TXT )
(ref: https://github.com/antoinet/gr-acars2 )
(ref: http://www.acarsd.org/docu.html )
(ref: https://books.google.com/books?id=sS3pAQAAQBAJ )
(ref: http://www.sigidwiki.com/wiki/ACARS )
(ref: https://en.wikipedia.org/wiki/Aircraft_Communications_Addressing_and_Reporting_System )