map.flightsthe story

Episode 5 of 24October 2026

Who’s flying over the garden

A drone hangs above the fields behind the house. You can’t hear it and can barely see it, but every second it says who it is, how high it is flying and where its pilot is standing. A small computer by the window hears it, and in the evening shows you the whole flight in 3D.

A 3D map of fields and woods with two drones in the air, each labelled with its serial number and height above terrain, a curtain of thin lines below each of them down to the ground, two pilots as magenta pins with a ring, a line from each pilot to their drone with the distance, and grey dots for drones heard earlier in the day
Right now on the station owner’s desk: two drones in the air on lines down to the ground, their pilots with a ring and a line to their drone, and in grey the drones heard earlier in the day. Sample data over a made-up station, no real traffic. Map data © OpenStreetMap contributors; terrain: Mapzen Terrain Tiles (SRTM, EU-DEM and others).

A drone introduces itself

An aircraft on the map has a transponder that says who it is and where it is flying. Drones, for a long time, had nothing of the kind. Since January 2024, though, the European Union has required a drone with a C1 to C3 class label to broadcast its own identity and position while it flies. It is called Remote ID, and in the United States a similar rule has been enforced since March of the same year.

It doesn’t go over any special network. The drone uses Bluetooth or Wi-Fi, the radios everyone carries in their pocket, and roughly once a second it says: this is my serial number, this is my operator’s registration number, here I am, this high, this fast, heading this way. And this is where the pilot is standing, or the spot I took off from.

A phone by the fence hears it, and so does a receiver on the roof. Just not from very far: Bluetooth is not a radio for tens of kilometres. Anyone who wants to see the drones over their village needs an antenna nearby.

A white quadcopter with a camera underneath hovering against a blue sky
A multicopter in the air. Photo: Wikimedia Commons, CC0, modified (cropped, the lettering on the body blurred).

There is more than one way to send it, though. The technical standard knows four: older Bluetooth 4, Bluetooth 5 with long range, Wi-Fi beacon and Wi-Fi NAN. The European standard doesn’t accept older Bluetooth as the only path, so a receiver that listens only to that one can miss a drone completely, even one flying right above it. That is why ours can listen on all four.

A small computer by the window

The receiver is a Raspberry Pi, a computer the size of a pack of cards. It has Bluetooth built in. Most drones in Europe, though, broadcast over Wi-Fi or long-range Bluetooth 5, so you add one USB Wi-Fi adapter; without it the station hears only Bluetooth, but it can start straight away and get the adapter later.

We wrote the receiver software ourselves, from the standard, and it installs with a single command. Straight after installing it tells you what your hardware can really do: which Bluetooth version you have, whether it manages long range, which bands the Wi-Fi adapter listens on. Most people don’t know that about their computer, and they don’t have to.

We also thought about things that have nothing to do with drones. The interface the computer uses to reach the internet is never switched over or retuned by the receiver, so nobody cuts off their own connection. If another drone program already runs on the same computer, ours doesn’t fight it for the radio, it listens alongside. And its own logs contain no serial number and no drone position, only counts and times.

A green Raspberry Pi 4 board from above, with USB, network and HDMI connectors
A Raspberry Pi 4, the core of a drone station. Photo: Wikimedia Commons, CC BY-SA 4.0, author on the file page, resized.

Whether the receiver is listening well is shown on the desk. Receiver health says in words whether the station is hearing drones right now, only listening, or has gone quiet. Silence by itself isn’t a fault, drones don’t fly all the time. So the desk compares today’s silence with how long the gaps between flights usually are during the week, and only when it is unusually long does it say the station has gone quiet. A station that is offline is shown separately, so it isn’t mixed up with nobody flying.

Next to it is the week in numbers: flights per day, the hours when people fly, and how many messages came in over which radio path each day. That is where you see whether the Wi-Fi adapter was worth it.

The week in numbers with flights, distinct drones, flight time and the busiest day, bars of flights per day, a chart of take-off hours, and beside it receiver health: hearing drones, the longest silence of the week, radio paths per day and the signal of drones heard right now
The week in numbers and receiver health on the desk. Sample data.

A desk only you can see

Whatever a station catches, only its owner sees on map.flights. Not other users, not visitors to the map. Nothing about drones goes public: no map, no serial number, no position. The owner sees all of it, because their own receiver decoded it, and only that: when another station hears the same drone, its record never flows into the owner’s view.

At the top is Right now, a 3D map of the drones the station has heard in the last two minutes. Each hangs at its height on thin lines down to the ground, so you see at once which spot it is over and how high. We draw the pilot as a pin with a ring around it, and a line with the measured distance runs between the pilot and the drone. Drones heard hours ago stay on the map as a dot on their last position, coloured by how long ago it was.

Below that are the day’s flights: how many, how many different drones, the highest and the longest flight, and a timeline on which every drone has a colour of its own. The Play the whole day button runs all of the day’s flights at once in one 3D scene, ten, sixty or three hundred times faster. The silence between flights is skipped, so a whole day over the station goes by in a few minutes, and when two drones flew at the same time, each flies off in its own colour.

The whole day played back at 9:37 in the morning: two drones in the air at once, one yellow over parallel survey strips and one orange circling, each with its pilot, earlier tracks of the day faded, and below the map a play button, speeds 10×, 60× and 300× and a timeline of the day with coloured flights
The whole day played back, half past nine in the morning: two drones at once, each in its own colour. Sample data over a made-up station. Map data © OpenStreetMap contributors; terrain: Mapzen Terrain Tiles (SRTM, EU-DEM and others).

From the serial number we can tell the manufacturer. We don’t guess the model from it: there is no public table with a clear licence that would say so, so next to a drone we only show what it broadcast about itself.

A station can also change hands. The new owner then sees only what it caught from the moment it became theirs; the previous owner’s flights stay hidden. And not every record is a real flight. One that no real drone could manage, its height jumping faster than any multicopter can climb, or circling round and round for longer than a battery lasts, is marked as implausible on the desk and doesn’t count towards the day’s records. Nothing gets deleted.

One flight, taken apart

Click a flight and it opens on a page of its own: the track in 3D with a curtain down to the ground, a player, and the moments of the flight. Take-off, the highest point, the fastest stretch, the spot farthest from the pilot and the end of the recording. Keys 1 to 5 fly the camera straight to them. A paused flight remembers the time in its address, so a saved link opens exactly that second next time.

Under the map is a barogram, the height above terrain over the whole flight, with a dashed line at 120 metres. That is the limit of the open category, the one most drones fly in. It is there for reference only: in another category, or over a tall obstacle, a drone may go higher, and the station can’t tell that from the broadcast. So on our desk the line doesn’t accuse anyone of anything.

A drone flight in 3D, a loop with a curtain of lines down to the ground and a line to the pilot 450 m away; below it a player, five flight moments with times and key numbers, a barogram with a dashed line at 120 m, and a strip of signal strength coloured by radio path
One flight taken apart: the track in 3D, the moments of the flight, the barogram with the 120 m line, and the signal over time. Sample data. Map data © OpenStreetMap contributors; terrain: Mapzen Terrain Tiles (SRTM, EU-DEM and others).

A drone reports more than one height, and none of them is the height above the ground beneath it. The GPS one is measured from a mathematical shape of the Earth, the barometric one shifts with the weather, and the last one the drone counts from the place it took off. Over a hill any of them can be tens of metres off. So we work out the height above terrain from our own elevation model of the landscape, and draw the reported one beside it as a thin line. We never mix them.

The track can also be shown as the dots of individual messages, coloured by height above terrain or by speed. They show where messages went missing, where the drone hovered in one place and where it sped up. And the camera can follow the drone, fly behind it, or look through the pilot’s eyes, up from where they stood towards the drone.

A survey flight in 3D drawn as dots, parallel strips at the same height in orange and the climb from the pilot in blue to green, with a curtain of lines down to the ground and a height scale from 0 to 120 m below
A survey flight as dots coloured by height above terrain. Sample data. Map data © OpenStreetMap contributors; terrain: Mapzen Terrain Tiles (SRTM, EU-DEM and others).

A whole day over your station goes by in a few minutes: the silence between flights is skipped, and drones that flew at the same time fly off each in its own colour.