CW RTTY SSTV PSK31 ACARS FAX SITOR App For the Mac
Please be sure to read Part 1 and Part 2, if you’re new to this series of articles.
All aircraft contain a piece of avionics technology called a transponder. This contains a receiver, and a transmitter. When the signal from ground radar is received, the transponder transmits a short burst on 1090 MHz, encoded with information.
There are several possible replies from an aircraft transponder:
- Mode A replies with a target ID code
- Mode B replies with the barometric altitude of the plane
- Mode S, also called the Extended Squitter, is the one we’re interested in.
Mode S, also called ADS-B allows a variety of types of data to be sent from the transponder, including:
- ICAO aircraft code (the tail number of the plane can be obtained from this)
- Flight Number
- Location (Longitude and Latitude)
There’s an online document called ADS-B for Dummies that goes through the various messages, and their format.
Since the RTL dongles can receive 1090 MHz at a wide bandwidth, it turns out to be possible to use them as low cost transponder decoders. Very low cost. You can pick them up for around $15 on eBay. Dedicated ADS-B receiver packages are more. Much more. As in hundreds of dollars.
There are quite a few packages out for the RTL dongles that decode ADS-B transmissions. For Windows, there’s ADSB#:
For linux and Mac OS X, there’s Dump1090
I compiled Dump1090 for Mac OS X, here is what the output looks like:
The columns across the screen:
- Hex – the ICAO code for the plane
- Flight – flight number
- Altitude – altitude in feet
- Speed – speed in mph
- Lat – latitude of position
- Lon – longitude of position
- Track – heading in degrees
- Messages – the number of messages from this plane that have been received
- Seen – how long ago (in seconds) since the last message from the plane, that is, how long since it has been last seen (or heard from)
I’ve since ported the Dump1090 code over to Cocoa on Mac OS X, resulting in Cocoa1090:
Cocoa1090 uses the ICAO hex code to derive the tail number (and aircraft model) from a database in a text file, which are also displayed.
A beta version of Cocoa1090 can be downloaded here: http://www.blackcatsystems.com/software/cocoa1090.html
Pingback: An SDR for $17 – The R820T USB RTL-SDR DVB-T Dongle – Part 2 | HFUnderpants.com
Your links to Parts 1 and 2 of the article dump me back here! So no Parts 1 and 2. I’m OK with Part 3 because I’ve got this far using other links, but other readers may well want the two previous parts.
Fixed, thanks for pointing that out. The site domain name changed, and that has messed up some of the links.
The “ADS-B for Dummies” link is also broken. I think if you look at it you’ll see the problem, though as I adjust by removing your domain that was prepended, the original URL just times out.
Thanks, Mike, I think the link is fixed now.
hey, the link to the ads-b for dummies is broken. not a problem for me, but, I do want to thank you for the awesome detailed information about making a ads-b receiver on the cheep and the software configuration to blast the bits to the mac. I’m working on a web based project (for a class) to create my own personal local flight tracker web sight with local ads-b data…
I’ll keep you posted on my progress…
I notice the majority of A/C picked up report 0,0 lat/long. I’m having the same issue…is this because too few aircraft are using the 1090 ES position reporting ADS-B mode or because I’m too far from a ground station to receive the combined signal?
I find that not many aircraft report position. Maybe 10% or less of them.
Pingback: ADS-B Sniffing with the Raspberry Pi and the NooElec 820T Dongle |
Just used that URL to get the ADS-B for Dummies PDF. URL in article still seems to be broken. HTH and thanks for the interesting articles.
Great article! I’ve just started playing with one of these dongles on the Mac. Do you have any information about tuning via the TCP port? Allegedly rtl_tcp supports adjusting frequency and gain by sending data to it.
It does, although it doesn’t seem to be very well documented. You need to send data in binary format. To set the frequency, you send command0x01 followed by 4 bytes (of a 32 bit integer) for the frequency in Hz. Sample rate is command 0x02.
Thanks Chris, perfect! I’ve also found this code sample: https://gist.github.com/simeonmiteff/3792676 which lists a couple of other commands. On to trying to figure out how to use the data!
Chris, mode C transmits the barometric altitude of the plane, not mode B.
Where did you grab the icao.txt from /How did you decode the ICAO hex ?
Where do you lookup the ICAO code? I know sites like airframes.org but they do not allow “bot” requests.