Giter Club home page Giter Club logo

gitbook-adsb-guide's Introduction

ADS-B Reception, Decoding & Sharing with Docker

Automatic Dependent Surveillance-Broadcast (ADS-B) is a safety and surveillance technology in which an aircraft determines its position via satellite navigation and periodically broadcasts it, enabling it to be tracked.

These ADS-B data can be received by nerds enthusiasts using Software Defined Radio (SDR), and shared with aggregators, which collect, combine, and redistribute flight information for fun and profit.

Fun and Non-Profit Aggregators

For-Profit Aggregators

Objective

This guide will walk you through the process to deploy and configure Docker containers to allow reception and decoding of ADS-B data, as well as submission to various flight tracking services, both open and commercial, and the visualisation of this data.

This document is best viewed on GitBook. If you're reading it elsewhere, we humbly suggest going here: https://sdr-enthusiasts.gitbook.io/ads-b/

This document is intended to be "living". Please feel free to fork the GitHub repository, contribute and submit pull requests! We value your input!

This guide is made available under CC BY-NC 4.0.

gitbook-adsb-guide's People

Contributors

aca30 avatar claussen avatar dependabot[bot] avatar dirkhh avatar dziban303 avatar easternpa avatar eiddor avatar fredclausen avatar goofball222 avatar jcloudm avatar joelishness avatar kx1t avatar lpgeek avatar marcelstoer avatar mikenye avatar nfacha avatar ottergoose avatar paulbadcock avatar phaeton avatar qtang avatar rikgale avatar rk295 avatar sdomoszlai13 avatar sportsbadger avatar t288msd avatar tjcoffey avatar wandering-andy avatar waxysteelworm avatar wiedehopf avatar yipyup avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gitbook-adsb-guide's Issues

Wingbits Support

Hi - New to the community, new to ADSB data - absolutely love what you've all put together here!

I'd love to see support for wingbits in this easy to setup and configure docker way!

Thanks

influxdbv2 telegraf error (not included?)

Hi there,

I submitted PR #152 with some doc fixes for the variable names for the InfluxDB v2 configuration. I'm setting the .env with an INFLUXDBV2TOKEN environment variable for the token for this client and have the following in my docker-compose for the ultrafeeder service:

      - INFLUXDBV2_URL='http://influxdb.local:8086/'
      - INFLUXDBV2_BUCKET=adsb
      - INFLUXDBV2_ORG=foo
      - INFLUXDBV2_TOKEN=${INFLUXDBV2TOKEN}

I believe the configuration is correct, but I don't see any data in Influxdb's data explorer. I do see this from the ultrafeeder container, however:

/opt/adsb$ docker logs ultrafeeder| grep telegraf
s6-rc: info: service telegraf: starting
s6-rc: info: service telegraf successfully started
[2024-08-05 19:25:04.101][telegraf] WARNING: InfluxDB/Prometheus parameters are set but Telegraf not included in this container

Did I do something wrong? If so, what? :-) The image I'm pulling is

image: ghcr.io/sdr-enthusiasts/docker-adsb-ultrafeeder

per the guidance in the doc.

Thanks,
Christian

Step 0 for Setting Up Host System

For those of us who are merely casual geeks, who might know enough to SSH into a server, navigate directory structure, and edit text files, some additional guidance in the guide in the "Setting Up Host System" section would be most appreciated; for example, is there a recommended install method / version of Linux to install on my extant Pi?

Many of us are coming from a background of getting started by installing a mostly setup image from FlightAware, ADSBx, etc., so some additional hand-holding to get to the point where you're instructing us to enter command lines in the terminal would be appreciated - even if it's just a note saying "Raspberry Pi Users, follow the instructions here to get a suitable basic Linux installation set up and connected to your network."

... heck, I'm even willing to edit the doc and send in a pull request to add it! I'll crosspost on Discord and see what the suggested workflow is.

"Suggested hardware" list

I'd be happy with a "suggested hardware" list, with a link (non-sponsored) to the hardware in question, and perhaps a list of users in the discord that use that hardware, in case newcomers have questions. Thoughts?

Originally posted by @mikenye in #75 (comment)

Disable TZ environment for fr24 container

Hi,

I got an unhealthy fr24 container due to the fact that the date command runs in the configured timezone and fr24 is logging in UTC. Therefore the heath script will give unhealthy at the max 5 min data timeout. For me, I had a 2 hour difference between UTC and my own timezone.

By removing the docker compose environment - TZ=${FEEDER_TZ} it all works correctly. So on this page, it should be removed: https://sdr-enthusiasts.gitbook.io/ads-b/feeder-containers/feeding-flightradar24

As far I can judge, you should not set the timezone for the fr24 container (anymore).

Flyovr.io

Can you add flyovr.io to the list of for profit aggregators?

Issue with Prometheus config edit

Hi,

After following the instructions at https://sdr-enthusiasts.gitbook.io/ads-b/useful-extras/alternative-graphing-with-prometheus-grafana in section Deploying, my Prometheus container was starting then immediately stopping citing an error in the config file. The 'docker exec -it' command listed produces a prometheus.yml file that ends like this:

scrape_configs:

The job name is added as a label job=<job_name> to any timeseries scraped from this config.

  • job_name: "prometheus"

    metrics_path defaults to '/metrics'

    scheme defaults to 'http'.

    static_configs:

    • targets: ["localhost:9090"]
  • job_name: 'ultrafeeder'
    static_configs:

  • targets: ['ultrafeeder:9273']

I don't know if it's the spacing or the quote marks (and now I have it working I don't want to break it again just to check ;) ) but when I changed it to match the existing format like this:

scrape_configs:

The job name is added as a label job=<job_name> to any timeseries scraped from this config.

  • job_name: "prometheus"

    metrics_path defaults to '/metrics'

    scheme defaults to 'http'.

    static_configs:

    • targets: ["localhost:9090"]
  • job_name: "ultrafeeder"
    static_configs:

    • targets: ["ultrafeeder:9273"]

.. it worked.

Issues (n.2) on new raspbian Linux version 5.10.17

Hello,

followed the guide some months ago on a RPi 3b+ with earlier version of raspbian with no problems.

Trying in a new installation and I got the following error when I tried to run "docker-compose version":

docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied.

Fixed with:

sudo groupadd docker
sudo usermod -aG docker ${USER}

from:
https://www.digitalocean.com/community/questions/how-to-fix-docker-got-permission-denied-while-trying-to-connect-to-the-docker-daemon-socket

Wandering if it was the correct way.

InfluxDB Config Error and Fix

After setting up the InfluxDB container, it wasn't starting. The error was:

"Error: failed to parse "1y": duration must be week(w), day(d), hour(h), min(m), sec(s), millisec(ms), microsec(us), or nanosec(ns)"

Changing the docker-compose.yml file in the environment section to

DOCKER_INFLUXDB_INIT_RETENTION=52w

Then doing

docker rm influx, then docker volume rm adsb_influxdb_data and docker volume rm adsb_influxdb_config

Resolved the problem.

Perhaps someone can replicate and confirm?

sleep: cannot read realtime clock: Operation not permitted

Hello again,

after months of uninterrupted operation I am getting this error since 10 hours ago:

readsb | sleep: cannot read realtime clock: Operation not permitted

No changes have been made to the system up to that point.

Tried updating docker, docker-compose and upgrading containers with no luck.

Any thoughts?

Please add something about disk space requirements

I've looked through everything, and I can't find anything about space requirements. I just got a new Raspberry Pi to upgrade my existing feeder, and it came with a MicroSD card that has much lower capacity than the one on the system it's replacing. Maybe it's enough, maybe not—not easy to tell, since I have a complicated mix of different software running on different systems. Please add some information about disk space requirements.

Issues on new raspbian Linux version 5.10.17

Hello,

followed the guide some months ago on a RPi 3b+ with earlier version of raspbian with no problems.

Trying in a new installation and I get the following error:

readsb | [collectd] 2021/08/20 00:06:36 [2021-08-20 00:06:37] plugin_load: plugin "logfile" successfully loaded.
readsb | [collectd] 2021/08/20 00:06:36 [error] nanosleep failed: Operation not permitted
readsb | sleep: cannot read realtime clock: Operation not permitted
readsb | sleep: cannot read realtime clock: Operation not permitted
readsb | sleep: cannot read realtime clock: Operation not permitted

the same for tar1090

autogain troubleshooting instructions don't seem to be accurate

Excerpt from deploy-ultrafeeder-container.md:

To do this, please do the following. You may have to try different values instead of the value of 34 suggested here:

Set the READSB_AUTOGAIN_INITIAL_GAIN variable in the ultrafeeder section of your docker-compose file:

environment:
  - READSB_AUTOGAIN_INITIAL_GAIN=34

This does not seem to have any affect, triggering autogain does not respect this setting.
I tried READSB_AUTOGAIN_INITIAL_GAIN=20, but it did not start at 20 as expected:
image

Additionally, searching the ultrafeeder repo yields no results for "READSB_AUTOGAIN_INITIAL_GAIN" or "INITIAL_GAIN".

Does this environment variable really exist?

Add rtlsdr-airband

Awesome guide, thanks @mikenye!

Quick feature request (I may look at putting together a PR for this if I get some spare time soon) would be to add rtlsdr-airband and feed to either Broadcastify or LiveATC. Config would be a bit more complex than the super simple process you have for the adsb services - you would probably have to just point users at the documentation and let them figure it out locally since it would vary so much, but would be good to lean on the overall stack you've got in this guide.

There's a dockerfile here that could be used: https://gitlab.com/flying-icarus/docker-images/-/tree/master/rtlsdr-airband

Default setting for PPM

In the section titled Identify your ADS-B dongle's optimal PPM, it says:

This step is considered optional and mostly legacy/unnecessary at this point, as modern SDRs have TXCO and are likely to be accurate enough for ADS-B reception.

Which implies that this is possibly unnecessary.

However, in the section where we're setting up the .env file, the description for ADSB_SDR_PPM doesn't have any information about what to do if you decide to skip this step:

  • ADSB_SDR_PPM is set to your desired dongle PPM setting. Enter the number from the PPM estimation step earlier on this page.

Is there a default value I should use? Should I omit it from the .env file? More information about what to do here would be welcome :) I do see that in the example, it's set to 1, but that doesn't really indicate if that's a reasonable value to use if you didn't run the command.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.