ADS-B Decoding Guide Documentation
Release 0.2
Junzi Sun
July 08, 2016
Contents
1 Table of Content
.
.
.
.
.
.
.
.
.
.
.
1.1
Introduction .
1.1.1
1.1.2
1.1.3
.
.
ADS-B .
.
ADS-B message types
ADS-B Checksum .
.
.
1.2 Aircraft Identification .
.
1.3 Airborne Positions .
.
.
.
.
.
.
.
.
.
.
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4 Airborne Velocity .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
First, “odd” or “even” message? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CPR parameters and functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Latitude/Longitude calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Altitude Calculation .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
The final position .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Decoding message subtype 1 or 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Decoding message subtype 3 or 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.1
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
1.5.2
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tips on ADS-B .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.1
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.2
1.6.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.4 More than just ADS-B data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7 What’s next? .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8 Mode S Enhanced Surveillance (EHS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
The message structure
The CPR positions
.
.
Aircraft Identification .
.
.
NIC and Rc .
.
NAC and HFOM .
.
1.5 NIC / NAC .
1.4.1
1.4.2
1.6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Documents, code, and data
3 Contact
4 About us
5 References
3
3
3
4
4
4
5
6
6
7
9
10
10
10
12
13
14
15
15
15
15
15
16
16
16
17
19
21
23
i
ii
ADS-B Decoding Guide Documentation, Release 0.2
This is a small research project conducted by Junzi Sun at TuDelft. While we were trying to work with ADS-B data col-
lected from our receiver, we notice that there are very few documents available which can explain the ADS-B data com-
prehensively. So, we created this guide, along with a decoder written in python (https://github.com/junzis/pyModeS).
Have Fun!
Contents
1
ADS-B Decoding Guide Documentation, Release 0.2
2
Contents
CHAPTER 1
Table of Content
The main focus of the guide is on reading different types of messages, understanding the information in the message,
and decoding/computing aircraft status.
1.1 Introduction
1.1.1 ADS-B
ADS-B is short for Automatic Dependent Surveillance–Broadcast. it is a satellite based survillance system. Aircraft
position, velocity, together with identification are transmitted through Mode-S Extended Squitter (1090 MHz).
Majority of the aircraft nowadays are broadcasting ADS-B messages constantly. There are many ways you can set
up you own receiver and antenna to start tapping into those signals (DVB-T usb stick, ModeSBeast, Raspberry Pi,
RadarScape, etc).
An ADS-B message is 112 bits long, following is an example:
BIN format:
10001101010010000100000011010110001000000010110011000011
01110001110000110010110011100000010101110110000010011000
HEX format:
8D4840D6202CC371C32CE0576098
This table lists the key bits of a message:
Name
Downlink Format
Message Subtype
ICAO aircraft address
Data frame
Parity check
Bit from Bit to
1
6
9
33
89
Abbr.
DF
CA
ICAO24
DATA
PC
5
8
32
88
112
The type of the message can be identified by checking its Downlink Format (DF), bit 1 to 5. For ADS-B message, we
need: DF = 17 (in decimal), or 10001 (in binary),
Within the data frame, another import value is the Type Code. it tells what is inside of the data frame, it is located
from bit 33 to 37 (5 bits)
Bit from Bit to
33
37
Abbr.
TC
Name
Type Code
3
ADS-B Decoding Guide Documentation, Release 0.2
1.1.2 ADS-B message types
By looking at the DF and TC we can quickly understand what kind of information is contained in the data frame. The
relations are listed as following:
DF
17
17
17
17
17
17
17
17
17
17
17
17
Content
Aircraft identification
Surface position
Airborne position (Baro Alt)
Airborne velocities
TC
1 to 4
5 to 8
9 to 18
19
20 to 22 Airborne position (GNSS Height)
23
24
25 to 27 Reserved
28
29
30
31
Extended squitter AC status
Target state and status (V.2)
Reserved
Aircraft Operation status
Test message
Surface system status
Note that within different type of the messages, the configurations of the bits in data frame are different. In next
chapter, those will be explained in detail.
1.1.3 ADS-B Checksum
ADS-B uses cyclic redundancy check to validate the correctness of received message. The parity check bits are the
last 6 bytes (bit 89 to 112)
1.2 Aircraft Identification
An aircraft identification message has DF: 17, and TC: 1 to 4.
For example:
8D4840D6202CC371C32CE0576098
The structure of the message is:
| ICAO24 |
|
|
|----|--------|----------------|--------|
| 8D | 4840D6 | 202CC371C32CE0 | 576098 |
DATA
|
| CA
|
| DF
|-------|-----|--------------------------|-------|-----|--------------------------------------------------|--------------------------|
| 10001 | 101 | 010010000100000011010110 | 00100 | 000 | 001011001100001101110001110000110010110011100000 | 010101110110000010011000 |
| ICAO24 ADDRESS
| Data
| TC
Note that TC is inside of the DATA frame. DF and TC can be easily calculated:
DF: 10001 -> 17
TC: 0010 -> 4
Those two values confirm that the message is good for decoding aircraft identification.
Next, we are decoding the data frame containing the aircraft callsign (identification). In order to get the callsign, a
look-up table is needed for mapping index numbers to letters:
4
Chapter 1. Table of Content