Wednesday 27 July 2016

ACARS (Aircraft Communications Addressing and Reporting System)

ACARS is one of the RF protocol used by planes, it was first deployed in 1978. ACARS is a 2400 bps packet-like system. It is a Telex format used for the transmission of short, simple messages between aircraft and ground. The protocol is also used to provide temperature data to weather satellites (e.g. NOAA).

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
QQ 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
Ok some texe goes here

(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 )