ADS-B, an acronym for Automatic Dependent Surveillance-Broadcast is a technology that allows tracking aircrafts using high speed radio transmissions. I have never had much interest in this technology until recently. While I was fiddling with this mode with Ian, we discovered a very simple way of demodulating this digital mode using the cheap DVB-T/FM (rtlsdr) dongles. This diagram explains how it works:

Simple ADS-B Demodulator

The final application, ADSB# (read ADSB-Sharp) is released under the MIT license and looks a bit like this:


The executable can be downloaded here. The sources are also available here.
Henry Forte also wrote a nice documentation to get started. You can view it here.
Configure your plotting software to use in AVR format.
I’m working with Osmocom on a C port of this POC application. Check Keen’s git repository.
There’s also another version by Salvatore Sanfilippo that uses the same decoding method developed in the latest versions of adsb#. Have a look on it here. Very promising so far!
More on this later…


119 Responses to ADSB# – A simple and cheap ADS-B receiver using RTL-SDR

  1. ksmiller99 says:

    Where can I find information on the AVR format? I’d like to decode those packets for another application. Is there some information on how the ADSB# packets are mapped to AVR?


  2. coolrunner says:

    Hello there, I’m using adsb# with a RTL/820T Stick and it is working fine. The range is really great (nearly complete northern germany!). All is running stable when I use the program in my own network. Also using adsbhub on a separate machine is no problem. I can see all the planes on every PC in my network. So far so good. But when I want to share my data with the adsbhub on it is working for about 30 minutes. After that adsb# seems to hang. The planes disapear and come back after a few minutes periodicly. The program can’t be stopped with the Stop-Button – there is no reaction. I have to kill the process by task manager. Anyone else with this problem? Any idea?

    regards to all airspace observers

    • coolrunner says:

      I found a solution to avoid the freezing of adsb#. It seems to be a DNS resolving problem. Typing in the ip adress directly ( instead of using the Name let the program work stable. Since that I had no more problems. The program runs about 12 hours every day.

  3. f4gnw says:

    hello all
    is it possible to add a s-meter in sdrsharp ? it’s good for receivers sdr no ?
    best regards

  4. [...] to receive ADS-B signals in AVR format using your RTL-SDR while running Windows, be sure to head over to and check out ADSB#. It can be quite a bit of fun to track the Aircraft that may be flying over [...]

  5. [...] covered ADSB# in one of my earlier articles, even going so far as to take my E4000 dongle to the airport for a [...]

  6. [...] grace – it’s simplicity as pulse-position modulation lends itself to a simplified amplitude-sensing decoding scheme which could be very efficient. It certainly didn’t appear to involve exotic filters as per [...]

  7. jossi says:

    I have one request about the adsbhub. I use dump1090 on a raspi together with socat to forward Mode-S data to adsbhub. Additionally I use dump1090 with the binary beast ouput. This works very well as long as I do not activate the deocding and output of Mode-AC data which I want to handle on the beast-port. The data is also output on the “normal” AVR-port but it seems that the connection to the adsbhub is disconnected by the hub when it receives the first Mode-AC packet. Would it be possible that the adsbhub could handle these burst – just ignoring would be absolute sufficient.

    Best regards,

  8. [...] the ADSB# ADS-B decoding program as a plugin in SDRSharp. The main advantage to using this plugin is that you [...]

Leave a Reply