libasterix SDK

ASTERIX decoding and encoding library


libasterix is a library for decoding and encoding data in Eurocontrol ASTERIX format.

libasterix support the following categories:

  • CAT001
  • CAT002
  • CAT004
  • CAT008
  • CAT010
  • CAT019
  • CAT020
  • CAT021
  • CAT023
  • CAT034
  • CAT048
  • CAT062
  • CAT065
  • CAT240

libasterix is implemented by pure C99 code, and relies only on standard C library, which means it can be easily ported to almost any platform.

libasterix is tested with the following compiler and platform:

  • MSVC 2017 on Windows 10 on x86_64
  • MSVC 2015 on Windows 7/8.1/10 on x86/x86_64
  • CLANG 3.2 on Mac OS X 10.8 on x86_64
  • GCC 4.8.2 on CentOS 7.0 on x86_64
  • GCC 4.6.3 on Debian 7.0 on Raspberry Pi


The ASTERIX format defines different category for different type of surveillance.

libasterix supports all commonly used ASTERIX categories, and different versions of some category. It will continue expand its capability to support more categories in future.

The supported categories and versions are:

Category Title Version Decoding Encoding
CAT001 Monoradar Target Reports 1.0 YES YES
CAT002 Monoradar Service Messages 1.0 YES YES
CAT004 Safety Net Messages 1.10 YES NO
CAT008 Transmission of Monoradar Derived Weather Information 1.0 YES NO
CAT010 Transmission of Monosensor Surface Movement Data 1.1 YES NO
CAT019 Multilateration System Status Messages 1.2 YES NO
CAT020 MLT Messages 1.7, 1.8 YES NO
CAT021 ADS-B Messages 0.23, 0.26, 2.1, 2.4 YES YES
CAT023 CNS/ATM Ground Station and Service Status Reports 1.2 YES NO
CAT034 Transmission of Monoradar Service Messages 1.27 YES YES
CAT048 Transmission of Monoradar Target Reports 1.15 YES YES
CAT062 SDPS Track Messages 1.16 YES NO
CAT065 SDPS Service Status Messages 1.2 YES NO
CAT240 Radar Video Transmission 1.3 YES NO

Note 1: Most categories are backward compatible, which means if the version of your data is lower or equal to the version listed in the table above, it can be correctly decoded. CAT021 is one exception of this backward compatibility.

Note 2: Encoding support for other all categories is under active development.

User Application Profile

The ASTERIX standard defines all possible data items, but the existence and order of these data items are defined by User Application Profile (UAP).

libasterix supports all standard UAP, and some widely used proprietary UAPs defined by major ATC vendors.

The supported UAPs are:

  • Standard UAP
  • Proprietary UAP of Raytheon radar
  • Proprietary UAP of Leonardo (former Selex or Alenia) radar
  • proprietary UAP of Thales ADS-B

Further more, libasterix has a feature to automatically detect and select proper UAP.

User can also implement his own UAP, to extend decoding and encoding capability of libasterix.

Comm-B Data Selector

libasterix is capable to decode Comm-B Data Selector (BDS) data embeded in some data items. It is useful as some important data (e.g. FMS selected altitude) is not defined by ASTERIX and the only way to retrieve it is from BDS.

The supported BDS are:

  • BDS 1,0 - Data Link Capability Report
  • BDS 2,0 - Aircraft Identification
  • BDS 3,0 - TCAS/ACAS Active Resolution Advisory
  • BDS 4,0 - Selected Vertical Intention
  • BDS 5,0 - Track and Turn Report
  • BDS 6,0 - Heading and Speed Report