Updated: Jun 6
I wrote in a previous article about setting up a lightweight, non-intrusive listening station while travelling and staying in Airbnbs. Having done that, I needed some projects to work on.
ACARS is a VHF protocol operating around 131 MHz, and it's used to send short messages between aircraft and the ground. I've played with this before.
ADS-B is different. It operates at much higher UHF frequencies - 1.090 GHz for commercial, and 978 MHz for general aviation. This I hadn't played with before, so it sounded like a fun challenge.
(As before, it's not my intention to go into great technical detail on how to install or operate these systems. My aim is just to give an insight into the fun that can be had on a budget, while travelling, using - literally - sellotape, string and Blue Peter technology 😀)
In the spirit of spending as little money as possible (see previous article), I wanted to get going with what I had, or things I could easily construct from everyday materials. The NESDR comes with a 120mm UHF whip antenna, so the first thing I did was give that a go. I mounted it on an upside-down kitchen pot and put it out on the terrace, using a 15m RG58 coax extension cable.
Results were pretty disappointing. I did receive some signals, but only from very close by - out to about 20 miles or so, and only in certain directions. There were a lot of line of sight blockages from trees and buildings, including a large bougainvillea in front of the flat.
Time for Plan B.
I had a simple straight antenna which came with a generic SDR I had, which fit the same thread as the NESDR mount.
I snipped this down to 69mm to make a quarter-wave ground plane, and stuck it on the pan.
I also found a spot a bit higher up - still with LOS problems but with some clear horizons in certain directions:
This was a definite improvement!
Let's have a look at the software I used to do the decoding.
ADS-B Decoding Software
In order to decode ADS-B, you need a piece of software to analyse the data bursts sent from the aircraft, extract the information contained, and turn it into something useful. The best app I could find for this was dump1090. It's free.
dump1090 (like a lot of Linux radio software) doesn't require you to tune the radio to the right frequency using CubicSDR or an alternative. Instead, as long as you have the right drivers installed for your SDR, it will connect directly to the radio, tune it to 1.090GHz and start processing messages from commercial aircraft.
(Note that there's a version of ADS-B for general aviation which operates at 978MHz. I haven't tried decoding this yet - I've tuned a few times but seen no traffic. It may not be in general operation around Mexico yet.)
There are plenty of options when you run it , including specifying network settings that let it send messages to other programs (as we'll see in a minute). Here's my startup settings:
$ ./dump1090 --interactive --net --enable-agc --gain -10 --device NESDRSmart01 --phase-enhance --lat 20.xxx --lon -103.xxx --oversample --dcfilter --modeac --net-bind-address 127.0.0.1 --write-json /run/dump1090 --write-json-every 1 --fix --fix
The --interactive option is useful. This keeps the program visible in the shell window displaying the currently-detected flights (a bit like 'top'):
ADS-B is being gradually extended with the idea that it can eventually replace, or at least augment, primary radar.
As aviation moves slowly, not all aircraft are fitted with the latest transponders, and not all will show all the information.
For instance, it's common for aircraft not to broadcast their GPS coordinates.
OK: so I'm eavesdropping on the commercial flights into, out of and passing through the airspace of Mexico's second city.
What can I do with this data? Let's see how to visualise it.
Displaying ADS-B Data - Virtual Radar Server
As ever, there are various options for displaying the ADS-B data on a form that makes sense to humans, rather than machines. And as ever, they are of varying quality and suitability for my setup.
Plane Plotter is pretty popular, and has a free trial. But it's another old Windows program which can be shoehorned onto Linux. I got it to install, but I couldn't get it to work properly.
Virtual Radar Server is also popular. It's another Windows program, but one that is easy to install and get running under Linux. There's plenty documentation on the author's site and elsewhere.
Here's what it looks like:
The map is centred on my location in Guadalajara. The concentric circles are range markers: the inner is 25 miles, then 50 and so on.
The shaded polar diagram records the extreme distances received by aircraft on each bearing - this is how you build up a picture of your reception pattern, over time, and can check whether new antennas are an improvement or not!
Over on the right hand lower panel is a list of all the aircraft dump1090 is sending to VRS. VRS looks up the unique identifier for each aircraft and populates its database with information such as airframe type, flight number, silhouette and carrier flag, and sometimes route information for the major operators.
If you click on the entry the top right panel shows all the available info on the flight:
This varies depending on what's available online and how up-to-date the information is. (You can also manually edit the VRS database to add some of this information, and there are scripts which can assist).
In the very centre of the map you can just see two aircraft - let's zoom in a bit:
The top one is the one I detailed above. It's an AeroMexico 737 (apparently heading to Mexico City). The colour of the track indicates altitude: red is cruising altitude, yellows and greens are low level. You can watch it change as the plane descends or climbs.
Under each aircraft is the tail number, heading and altitude. You can edit what's displayed here.
The second aircraft is a VivaAerobus A320 on its way to Tijuana.
I had a lot of fun playing with VRS over a number of days.
The J-Pole Antenna Upgrade
So far so good, but I was a little disappointed with the range I was getting. I'm in a built-up area and can't get the antenna anything like as high as I'd like to.
At 1 GHz+, ADS-B is line of sight. True, that line of sight can run for hundreds of miles from planes at cruising altitude; but if you have a tree, or a big building blocking you, you're going to hear zip in that direction.
In my case I was getting the occasional signal from 60-70 miles away, but I thought I could do better.
Enter the J-pole antenna. I'd messed about with these in my Ham days on 2m. I'd never tried building one at the gigahertz range. But sure enough, they work - I found a guide to building an ADS-B J-pole here.
After about 30 minutes' work with my multitool, tape and coax, and the sacrifice of the inevitable coat-hanger, I came up with this.
I made careful measurements of the various bend/attachment points. The J-pole does give some modest gain, but that wasn't going to help a lot in the same position as the previous monopole.
I needed to get it higher.
This is where the Blue Peter (or Heath Robinson) background comes in.
If you're staying in an Airbnb, you're restricted to everyday materials, temporary assemblies and you certainly can't go bolting antenna masts to the roof!
You need some kind of solid base - the cooking pan would do well enough to that.
An empty bottle of Chilean red would get another 18 inches or so.
Above that we can tape together some of the strong cardboard cores from the sacrificed coat hangers.
Luckily the J-pole only weighs a few grams, so can easily be mounted at the top.
It's probably easiest to show you.
I'll warn you - it's not pretty:
That gave me a good 2m advantage over the previous antenna, and hopefully a little bit of gain.
There was an immediate improvement. I was pulling in from much further out - mainly at altitude, as there wasn't much I could do about the local scenery at lower angles to the horizon. In the right direction, I was pulling in aircraft from just over 170 miles - a huge improvement:
The experiment was enough to show that yes, with a better antenna, I could probably get further out still. But my limiting factor at this location is local line of sight obstructions.
I didn't see the point in continuing to play with antennas; I carefully took the J-pole down before the elements did the job for me 😀
Connecting to ADSB Exchange
Everyone's heard of FlightRadar. It's a freemium service that tracks and displays flights from all over the world in real time. News reports carry images after plane crashes.
But FlightRadar is commercial. It's there to make money. Along with Plane Finder, FlightAware and similar sites, they make money out of selling access to the data, or by advertising enthusiast-oriented products.
They also selectively decide which flights and what information to display. If you have a need - for legitimate or shady purposes - for your aircraft not to appear, FlightRadar will happily remove it for you.
There's one site - and only one - which is entirely community driven and which refuses to perform any filtering on flights. That site is ADS-B Exchange. Hundreds of enthusiasts around the world, using a setup just like the one I describe here, send a copy of their data to ADS-Bx where it's displayed on a map just like the big boys.
And there's one particular application for a service like this that I love.
There are politicians and leaders in certain regimes, which may be considered... less than proud beacons of human rights. Some are under embargo or sanctions.
When they do get out and about, it's usually under a veil of secrecy.
Dictator Alert partners with ADSBx to track people like this on their way round the world. By knowing which aircraft are registered where, it's possible to publish alerts whenever they're wheels-up. Dictator Alert also works with Organised Crime and Corruption Reporting Project.
So if you want to do your bit for humanity, as well as run a home control tower system, why not hook your feed up to these guys? :)
Honorable Mention: modesdeco2
I should also mention an program called modesdeco2. It tries to combine some of the key features of both dump1090 and VRS: decode incoming signals, translate them to useful information, and display them as a list of on a map. Useful, right?
Yes. But. The first problem is the map. VRS offers Google Maps if you have an API key, and other suppliers if you don't. Since Google stopped giving away free API keys for its Maps back end a few years back, few people pay for one. So the map looks a bit... well, see for yourself:
Modesdeco2 has some really nice stats and charts, too. Here's a couple of examples of overall statistics for messages received, and for a breakdown of messages by distance:
This is great debugging information for your site. Messing around with antennas? Run things for 24 hours and compare to the last one. Use the polar map to see where you have obstructions, and see if you can move to avoid them. And it's all in real time!
The problem - for me - is there's no historical database. Once you close the app, the data is gone. Zip. You can screenshot your range map and compare it, but you can't do it in data. And for me that's a showstopper.
Luckily it does feed VRS just as happily as dump1090. So while you're doing your 24 hour survey, you can still watch the planes take off and land in your favourite viewing application :)
Summary And Thoughts
I'd never explored ADS-B before this week or so. Doing so has opened my eyes to the changes in aviation since I last played with radio.
It's also given me great fun messing around like a kid with cardboard, insulating tape and bits of wire. I'm pretty impressed with the quality of results I've been able to get for essentially nothing more than the sunk cost of the radio.
Highly recommended and not especially technical!
Next stop: We're aiming higher.
A lot higher.
If you enjoyed this article, I'd love you to share it! You can use the buttons below 👍🏻