RTL-SDR and ADS-B

I was searching Internet about FLARM and other possibilites to track small aircrafts, and how to use it in airplane models 🙂
Of course, I found another interesting thing which reminded me that USB DVB-T tuner with well known Realtek RTL2832U could be used as ADS-B receiver.
In short, ADS-B is some kind of beacon transmited by most larger aircrafts. Protocol is well described, so everyone who could receive such signals could also decode it and do something with it. Most known site using these data is flightradar24.com.

Simple ADS-B receiver application (rtl_adsb) is already included in rtlsdr library, but it outputs to console only received packets with at most brief protocol decoding. Because my old tuner with FC0013 can’t receive 1090MHz, so during testing new one I forgot to check this.

dump1090 by antirez

But today I found quite impressive software to receive and visualize data: dump1090 (https://github.com/antirez/dump1090) and I had to check it:-)

It compiled flawlessly with just a ‘make’.
Running it without any options gives similar results to ‘rtl_adsb -V’, so nothing special here 🙂

$ ./dump1090
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001 (currently selected)
Found Rafael Micro R820T tuner
Max available gain is: 49.60
Setting gain to: 49.60
Exact sample rate is: 2000000.052982 Hz
Gain reported by device: 49.60
*8d471f4e9941f28fa8948de31fa4;
CRC: 000000 (ok)
DF 17: ADS-B message.
  Capability     : 5 (Level 2+3+4 (DF0,4,5,11,20,21,24,code7 - is airborne))
  ICAO Address   : 471f4e
  Extended Squitter  Type: 19
  Extended Squitter  Sub : 1
  Extended Squitter  Name: Airborne Velocity
    EW status         : Valid
    EW velocity       : 497
    NS status         : Valid
    NS velocity       : -124
    Vertical status   : Valid
    Vertical rate src : 0
    Vertical rate     : -2304

*5d471f4e76710a;
CRC: 00002c (ok)
DF 11: All Call Reply.
  Capability  : 5 (Level 2+3+4 (DF0,4,5,11,20,21,24,code7 - is airborne))
  ICAO Address: 471f4e
  IID         : SI-28

*200014121f6bd2;
CRC: 471f4e (ok)
DF 4: Surveillance, Altitude Reply.
  Flight Status  : Normal, Airborne
  DR             : 0
  UM             : 0
  Altitude       : 31050 feet
  ICAO Address   : 471f4e

But it’s getting more interesting while adding options. First one is –interactive which gives human readable summary with data gathered sorted by aircraft.
Looks much better:
dump1090 with --interactive

Next interesting option is –net that enables few networking features. Most impressive is webserver with map and planes on it, moving real time!
web interface of dump1090

Interesting thing is that I receive this using only stock small antenna located near window. Tuner is able to receive without any special antenna signals from planes up to 250km from me – that’s amazing.

dump1090 by MalcolmRobb

And this is not the end! There is a fork of dump1090 made by MalcolmRobb with significant improvements.
On console in interactive mode there are additional information, for example Squawk (transponder) number and heading, displayed information is also more clear:

dump1090 --interactive by fork by MalcolmRobb

Web interface is also improved. Aircrafts now looks like planes, not like arrows/triangles, browser keeps history of positions, so a trail could be draw for each flight. There is also Openstreetmap support additionally to Google Maps used earlier.
web interface of fork of dump1090 by MalcolmRobb

web interface of fork of dump1090 by MalcolmRobb

There are also other improvements. For both versions of dump1090 I use also –agressive switch. On normal PC it’s not so intensive as author warns, so it could be added without hesitation because it really improves reception and doesn’t eat cpu.

One missing thing for me – submiting data to flightradar24 site. But don’t mind me – it’s more a wish than complaining. dump1090 is really good piece of software!

This entry was posted in Electronics, Linux and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.