How to Build an ADS-B Flight Tracker with Raspberry Pi

I Built My Own Flight Tracker with a Raspberry Pi

If you click our links and make a purchase, we may earn an affiliate commission. Learn more

I’m a big fan of Flightradar24. Whenever I hear a plane with an unusual noise, or notice one flying lower than usual, I often open the map to see what it is and where it’s going. After years of doing that, I became curious about how these sites collect all this data and whether a Raspberry Pi could help with it.

An ADS-B flight tracker is a small receiver that listens to the position data broadcast by nearby aircraft. With a Raspberry Pi, an SDR USB dongle, and the right software, this data can be decoded, displayed on a local map, and shared with online flight-tracking services.

In this article, I’ll show you the setup I used, what worked at home, and how to send the data to FlightAware or Flightradar24 so you can unlock their premium features.

If you’re new to Raspberry Pi or Linux, I’ve got something that can help you right away!
Download my free Linux commands cheat sheet – it’s a quick reference guide with all the essential commands you’ll need to get things done on your Raspberry Pi. Click here to get it for free!

What is ADS-B and How Does It Work?

Before building the receiver, it helps to understand what we are actually doing.

ADS-B stands for Automatic Dependent Surveillance-Broadcast. It’s a system used by aircraft to broadcast information about themselves, including their position, altitude, speed, direction, and identification.

The idea is pretty simple: the aircraft knows where it is, mostly thanks to GPS and other onboard navigation systems. It then broadcasts this information regularly, so ground stations, other aircraft, and flight-tracking services can receive it.

Most aircraft using ADS-B transmit on 1090 MHz. That’s the interesting part for us: these messages are broadcast over the air, and they are not encrypted. So with a small antenna and an SDR USB dongle connected to a Raspberry Pi, we can listen to the same signals.

The raw messages are not readable as-is. They are encoded in a specific format, so the Raspberry Pi needs software to decode them.

This is where tools like Dump1090 come in. Dump1090 listens to the 1090 MHz frequency, decodes ADS-B messages, and turns messages into useful data we can display on a map.

Something not working as expected?
You can get answers from real experts in minutes.
Get help with your setup

You don’t need to understand every detail of the ADS-B packet format to follow this tutorial. I find the protocol interesting, and it’s worth reading about if you’re curious, but the open-source tools do most of the hard work for us.

Once the messages are decoded, you can use them locally to see nearby aircraft on your own map.

You can also share the data with services like Flightradar24 or FlightAware. That’s how these sites improve their coverage: thousands of people around the world run small receivers like this and send them live aircraft data.

That’s also one of the reasons I wanted to try this project. I already use Flightradar24 regularly, so building a receiver was a good way to understand where the data comes from and contribute a little bit to the network.

There is also a practical bonus: some services offer premium features when you feed them data. For example, FlightAware can upgrade your account when you share data through PiAware. It’s not required for the project, but it’s a nice extra if you already use these tools.

Hardware Needed for an ADS-B Setup

An ADS-B receiver can look a bit intimidating when you first see all the components involved, but the setup is actually pretty simple if you use the right USB dongle.

At a high level, the signal chain looks like this:

Let’s quickly go through what each part does:

  • The antenna receives the ADS-B signals broadcast by nearby aircraft.
    For best results, it should be tuned for 1090 MHz, the frequency used by most ADS-B messages. You can technically try with another small antenna, but performance will usually be poor. A dedicated ADS-B antenna is a much better choice.
  • The band-pass filter removes signals outside the 1090 MHz range.
    This matters because the radio spectrum is noisy, especially in cities or near strong transmitters. Without a filter, the receiver may pick up too much unwanted noise.
  • The low-noise amplifier boosts the signal before it reaches the receiver.
    ADS-B signals can be weak, especially when aircraft are far away, so amplification helps improve the range and reliability of the setup.
  • The SDR receiver converts the radio signal into digital data that the Raspberry Pi can process.
    SDR stands for Software-Defined Radio. Instead of using a dedicated hardware radio for one task, an SDR dongle lets software decide how to interpret the signal.
  • Finally, the Raspberry Pi runs the decoding software, such as Dump1090, and can forward the aircraft data to services like Flightradar24 or FlightAware.

The good news is that you don’t need to buy and connect all these parts separately.

For this project, I’m using the FlightAware Pro Stick Plus, which combines the filter, amplifier, and SDR receiver into one USB dongle. You plug it into the Raspberry Pi, connect an antenna, and install the software.

That’s why I recommend this option for a first setup. It avoids a lot of guesswork, and you don’t need to compare different filters, amplifiers, and SDR models before even starting the project.

Recommended next step
Master Raspberry Pi in 30 Days

If you want a clearer path than jumping from tutorial to tutorial, my book gives you a step-by-step roadmap to really understand your Raspberry Pi.

Check the book here

There is also a cheaper FlightAware Pro Stick, the orange version. The main difference is that it doesn’t include the built-in filter. It can work fine in a quiet radio environment, but the blue Pro Stick Plus is generally a safer choice if you live in a city or near other strong radio transmitters.

If you already have a compatible RTL-SDR dongle, you can use it too. It may not perform as well as the FlightAware models, especially without a proper filter or amplifier, but it’s good enough to test the project and see if you can receive aircraft nearby.

How to Install an ADS-B Receiver on Raspberry Pi

There are several ways to set up an ADS-B receiver on a Raspberry Pi.

You can start from any Linux distribution, install the SDR drivers manually, then add the tools needed to decode the aircraft data and send it to the services you want to use.

But for a first setup, the easiest option I found is to use the PiAware image provided by FlightAware. It’s a pre-built system with all the ADS-B tools already included, so you can get the receiver online much faster.

That’s the method I’ll use in this tutorial. We’ll start with PiAware, link it to a FlightAware account, and then add Flightradar24 later if you also want to feed data there.

Install PiAware on Your Raspberry Pi

If you use the PiAware image, the installation is pretty straightforward:

  • Download the latest image from the FlightAware website.
    Here is the file I used, but I recommend checking this page to get the latest version, as the image may be updated from time to time. The download comes as a ZIP file.
  • Extract it first, as Raspberry Pi Imager needs the .img file inside.
    Don’t flash the ZIP file directly, or the Raspberry Pi won’t boot.
  • Flash the .img file to your SD card with Raspberry Pi Imager.
    Check our tutorial here if you need some help, but it’s the same steps as usual with a custom image.
    Pick your Raspberry Pi model, choose “Use Custom” in the OS list, and select the img file you just extracted from the zip file.

    Select your SD card in the storage list, click Next and then Write to start the process.

After a few minutes, the SD card is ready. You can close Raspberry Pi Imager and move on to the first configuration step.

Configure the Network Before the First Boot

If you plan to use Ethernet with DHCP enabled, you can probably skip this step. The Raspberry Pi should automatically get an IP address on the first boot.

But if you want to use Wi-Fi, I recommend configuring it before inserting the SD card into the Raspberry Pi:

  • Once Raspberry Pi Imager has finished writing the SD card, open the boot partition on your computer. If you don’t see it, eject the SD card and plug it back in.
  • Find the file named “piaware-config.txt”.
  • Open it with any text editor and look for the Wi-Fi section:
    wireless-ssid MyWifiNetwork
    wireless-password s3cr3t99
  • Replace the example values with your own Wi-Fi name and password.
  • Save the file when you’re done.

Bonus tip: While you’re in the boot partition, you can also create an empty file named “ssh”, so SSH will be enabled automatically on first boot.

First Boot With PiAware

Safely eject the SD card from your computer, insert it into the Raspberry Pi, plug in the FlightAware USB stick, connect the antenna, and power everything on.

Give it a few minutes to boot. If the network configuration is correct, the Raspberry Pi should connect to your network automatically and get an IP address. You don’t need to log in yet.

Once it’s online, open a browser and go to:http://IP
Replace “IP” with the IP address of your Raspberry Pi.
In my case, it was http://192.168.222.11.

If you don’t know the address, check this article to learn how to quickly find the Raspberry Pi IP address.

You should see the PiAware status page. If everything is green, that’s a good sign.
Click “Go to SkyAware Map” to open the local map:

If the USB stick and antenna are working, the aircraft should start appearing on the map. This page only shows planes detected by your own receiver, so it’s a useful way to check how well your setup is doing.

For example, if you only see aircraft very close to your home, or mostly in one direction, the issue may be the antenna placement rather than the Raspberry Pi itself. Moving the antenna closer to a window, higher up, or away from walls can make a big difference.

That’s why I recommend testing the PiAware image first. Everything works directly out of the box.

My first try with Raspberry Pi OS didn’t go well, and I couldn’t figure out if the problem was the hardware, the antenna setup, the driver, or something else. This solution is much easier!

Link Your Feeder to Your Account

This step is optional, but it’s worth doing if you want to monitor your receiver from the FlightAware website.

Create a FlightAware account if you don’t already have one, then go back to the PiAware status page. You should see a link like “Claim this feeder to associate it with your FlightAware account”.

Click it and follow the instructions. The process is straightforward, and your receiver should quickly appear in your FlightAware account.

I don’t use FlightAware as my main flight-tracking website, as I prefer Flightradar24, but I still linked the feeder. It lets me see receiver statistics from their website and get notified if the device goes offline.

Another nice bonus is that FlightAware offers premium access to users who feed data to their network. It’s not required for this project, but if you already use FlightAware, it’s a good reason to claim the feeder.

Enable FlightRadar

My original goal with this project was to feed data to Flightradar24. I use their map all the time, so contributing data and getting access to their premium features was a nice bonus.

The good news is that you can keep PiAware running and add Flightradar24 on top of it. Once the Raspberry Pi is receiving aircraft with PiAware, the rest is mostly a software installation.

Just SSH to the Raspberry Pi and follow these instructions:

Also: The Raspberry Pi I'd actually buy today

  • To enable SSH, you can use raspi-config as usual (check this article), or create an empty “ssh” file in the boot partition from your computer if you use it headless.
  • Once SSH is enabled, use your favorite SSH client to connect to the Pi.
    The default user is “pi” and the password is “flightaware”.
  • As always, it’s probably a good idea to start with system updates, especially if you just installed it:
    sudo apt update
    sudo apt upgrade -y
  • Once done, just run the FlightRadar24 script to install everything:
    wget -qO- https://fr24.com/install.sh | sudo bash -s
  • Follow the instructions to link the device to your account.

    It will ask for your email address and a few setup questions. You can generally keep the default values if it’s your first install.
  • The script will explain this, but if you want the app to work and start automatically on boot, you’ll need to run these commands too to enable the service:
    sudo systemctl enable fr24feed
    sudo systemctl restart fr24feed
  • Your radar should now appear in your account (here), and the status should switch to “Online”.

Tip: Command lines can be a pain to memorize. I put the essential Linux commands on a printable cheat sheet so you don't have to keep googling them. You can grab the PDF here if you want to save some time.

A few hours later, you should get an email confirming your contributor subscription. FlightRadar24 also offers some nice statistics graphs to follow your progress and compare with other contributors.

There is no local web page for FlightRadar, but you can use this command to check if everything is working:
fr24feed-status

Once your receiver is online, leave it running for a few hours and check your statistics on Flightradar24 or FlightAware. It’s pretty satisfying to see your own Raspberry Pi feeding live aircraft data to the map.

If you try this project, I’d be curious to know what range you get and which antenna setup works best for you. And if something doesn’t work as expected, feel free to ask your questions in the RaspberryTips community.


🛠 This tutorial doesn't work anymore? Report the issue here, so that I can update it!

Still stuck after following this guide? Drop your question in the RaspberryTips Community — real Pi users answer fast. Post your question here.

Related Questions

Why Build Your Own ADS-B Flight Tracker?

Building your own ADS-B receiver is a good way to understand how sites like Flightradar24 and FlightAware get their data.

Instead of only watching planes on a map, you can receive the signals yourself and contribute data back to the network. It’s also a fun Raspberry Pi project because it combines hardware, radio signals, Linux, and real-time data.

The free premium features offered by some services are a nice bonus, but the best part is seeing aircraft appear on your own receiver and knowing where that data comes from.

What Range Can I Expect With an ADS-B Receiver?

A good ADS-B setup can sometimes detect aircraft several hundred kilometers away. With good antenna placement, 200 km (125 miles) or more is realistic, and optimized setups can sometimes go beyond 400 km (250 miles).

That said, don’t worry if your first test shows a much shorter range. With a small indoor antenna, the result depends a lot on where the antenna is placed and what is around it.

How Can I Improve the Reception Range?

ADS-B reception depends mostly on line of sight. The easiest improvement is to move the antenna higher and closer to a window.

If possible, placing it outside or in an attic will usually give better results than leaving it on a desk next to the Raspberry Pi. Try to keep it away from thick walls, metal objects, and other electronics. Nearby buildings, hills, trees, and RF noise can all reduce the range.

A better antenna can also help, especially one tuned for 1090 MHz. If you move the antenna far from the Raspberry Pi, use a good coaxial cable and keep it as short as practical, because long or poor-quality cables can weaken the signal before it reaches the receiver.

How Can I Debug an ADS-B Receiver That Detects No Aircraft?

Start with the basics: check that the antenna is connected, the USB dongle is plugged in, and the PiAware status page shows everything in green.

Then open the SkyAware map. If the receiver is running but no aircraft appear, try moving the antenna closer to a window, higher up, or to another side of the house. A bad antenna position is often enough to make the setup look broken.

You can also run lsusb on the Raspberry Pi to confirm that the SDR dongle is detected. If it doesn’t appear, check the USB port, dongle, power supply, or connection.

For deeper debugging, tools like GQRX can display the radio spectrum around 1090 MHz, but I’d only go there after checking the simple things first.

Is It Legal to Receive ADS-B Signals?

In many countries, receiving ADS-B signals is allowed because aircraft broadcast this information openly on 1090 MHz.

That’s why services like Flightradar24 and FlightAware can use data from thousands of home receivers.

However, radio laws vary by country, so check your local rules if you’re unsure. This project only receives signals; it doesn’t transmit anything. Transmitting on aviation or radio frequencies without permission is illegal and can cause serious problems.

Not getting the same result?

Even when you follow every step, small differences in OS version, hardware or config can change the outcome. Instead of wasting time guessing, get help from people who have already fixed the same kind of issue.

Ask your question now
🔒 No risk. Cancel anytime.
  • Get help on your exact issue
  • Access step-by-step videos for tricky setups
  • Browse the website without ads

Similar Posts

Leave a Reply

Community members only
Comments are reserved for RaspberryTips Community members. Join the community to ask questions, get help, and interact with other Raspberry Pi users.

Join the community  or  log in