Mode S and ADS-B Recorder for Android


In this project, we developed an Andoird App for recording ADS-B in mobile or remote scenarios. Recording ADS-B messages in such scenarios is challenging as most existing receivers often need a dedicated power source, have a large form factor and also need a more complex setup with a network interface.

The basic setup for using this App looks like this:

The GNS 5890 receiver has the size of an USB stick. It is powered over the USB port and has a low power consumption < 0.5W. The receiver can be connected via an OTG cable to most Android smart phones and tablets. This device therefore is a good candidate if you want to do ADS-B measurements in (very) remote places.

You have the following settings:

The main emphasis is on recording Mode S/ADS-B messages for further analyis. Along with the raw messages, meta data such as timestamps and the GPS position is stored. The App also displays some live statistics such as number of visible planes and received message per plane:

Example scenarios are:

  • Mobile setups
  • Inside an airplane
  • On a car

or on a mountain:


As part of this project, we developed a USB CDC ACM driver for using the USB device in Android. The data received by the dongle is processed, the CRC will be checked, the ICAO extracted and the current time stamp attached. The data gets then inserted into an SQLite database. By benchmarking the App, we found that the application is able to continuously process more than 5000 messages per second (depending on the phone's hardware).

The resulting file contains the following tables: flights, flight_state, messages, position. The entries in table flight_state are created periodically and describe the data received for each flight. For more details, open the database file and have a look at the database schema (e.g. with the query "SELECT sql FROM sqlite_master"). The relations between the tables are as depicted in the following image:



Markus Gräb (This email address is being protected from spambots. You need JavaScript enabled to view it.)
Matthias Schäfer (This email address is being protected from spambots. You need JavaScript enabled to view it.)