A simple ADS-B Decoder |
I managed to make this ADS-B decoder development freely available for all but it costs me a lot of personal time and resources.
So if you like it and use it, please consider a donation. Even the smallest amount is welcome as it will help me acquire new tools and equipements.
Thanks David, Nigel, Alexandros for the donation, Guenter for the PCB and Bev (COAA) for the PP licence.
VFO modifications & IF ouput | VFO modifications | ||
All DFs: | AA (Aircraft address) |
DF00: | AC (Altitude) |
DF04: | AC (Altitude) |
DF05: | ID (Identity) |
DF16: | AC (Altitude) |
DF17: | ME (Messages 0-22,28) |
DF18: | ME (Messages 0,2,3) (partly in V2.x) |
DF20: | AC (Altitude) |
DF21: | ID (Identity) |
CTRL-S | XOFF - Transmit OFF for frame data only, not for query responses |
CTRL-Q | XON - Transmit ON |
R | Software reset |
? | Software version |
o | Options status |
S | Clear statistics |
s | Display statistics |
C | Clear cache table |
c | Display cache table |
P | Enter Lat/Lon position values (2x8 hexadecimal characters) |
p | Display Lat/Lon position values |
T | Enter I2C sequence (V2.x only) |
t | Display I2C sequence (V2.x only) |
E | Clear ICAO code |
e | Enter ICAO code (6 alphanum characters) |
I | Display ICAO code |
i | Display ICAO code |
A | Clear Alarm on ICAO code |
a | Set Alarm on ICAO code |
F | Clear filter on ICAO code |
f | Set filter in ICAO code |
X | Clear extended mode |
x | Set extended mode |
W | Always send raw |
w | No raw data in extended mode with 112bits only frames option selected |
L | Always send raw Lat/Lon position |
l | Send decoded Lat/Lon position |
0 | Select PicADSB native output format |
1 | Select PicADSB native output format with not verified CRC frames announced as good |
2 | Select minimal raw data format with optional CRC verification |
3 | Select AVR compatible raw data format without any other control |
4 | Select Tagged Raw data format for MLAT without any other control |
RAW | Raw Frame data, 14 or 28 hexadecimal bytes, optional ('w'/'W' commands) | |
LVL | Receiver signal level, 0 to 255, decimal value | |
TYP | Frame DF type, 0 to 31, decimal value | |
ADR | ICAO aircraft identification, 6 hexadecimal characters, from all DF | |
CLS | Call sign or spaces, 8 characters, DF17[1-4] | |
CAT | Aircraft category, 1 character, DF17[1-4] | |
CPR | CPR flag, empty or 1 character | |
LAT | Latitude , raw data or decoded ('l'/'L' commands), empty or decimal value, DF17[9-18], DF17[20-22] | |
LON | Longitude, raw data or decoded ('l'/'L' commands), empty or decimal value, DF17[9-18], DF17[20-22] | |
ALT | Altitude, in feet, empty, decimal value or letter '@' for landed, DF17[9-18], D17[20-22], DF0, DF4, DF16, DF20 | |
IDT | Identification, empty or 4096 Code, decimal value, from DF5, DF21 | |
VRT | Vertical rate, empty or signed decimal value, from DF17.19 | |
ESV | EW velocity, empty or signed decimal value, minus=W, from DF17.19 | |
NSV | NS velocity, empty or signed decimal value, minus=S, from DF17.19 | |
MAG | Magnetic heading, empty or decimal value, from DF17.19 | |
AIR | Air speed, empty or decimal value, from DF17.19 |
* | Frame integrity cannot/was not verified | |
+ | Frame integrity was verified good | |
- | Frame integrity was verified bad |
The following other prefixes are used to flag replies to queries |
| | Reply to p position query |LAT,LON<CR><LF> | |
< | Alarm on ICAO monitor code <ICAO<CR><LF> | |
! | Alarm on '7500', '7600', '7700' or '7777' 4096 code (TYPE='S') or MODE-S (TYPE='M') !ICAO,TYPE,CODE<CR><LF> | |
= | Reply to ? identification query |ADSB V.v (C)x.xxxxx<CR><LF> | |
^ | Reply to c print cache query ^Num,ICAO,4096,Trust,Count,Bail<CR><LF> | |
# | Reply to s statistics query #FrmErr,RecErr,CrcErr,LngFrm,DrpFrm,Time<CR><LF> | |
$ | Reply to o options list query | |
> | Reply to i ICAO monitor code query |
The receiver prototype |
DL4MEA decoder PCB prototype |
Signal sent to the PIC |
Output on serial link (Extended Long) | Output on serial link (Extended Short) |
Test application (click for video) | Gateway application (click for video) |