ADSB.im logo

ADSB.im

Simple to use ADSB Feeder Images
(not just) for common Single Board Computers

Connecting other community projects to an adsb.im feeder
An advanced guide

Introduction

This guide covers an area that is outside of an adsb.im feeders's intended use and is of more advanced scope. This is for someone that is already using an adsb.im feeder and wants to get data off their adsb.im feeder instance into other docker containers and community projects.

This also allows you to push data into tar1090/readsb that you wouldn't want to feed for example the great acars2pos project. This will require another pc (running linux) or SBC (small single board computer) as although possible this guide won't be going through modifying an adsb.im feeder to add additional docker containers to the existing Raspberry Pi. Keeping them separated avoids resource constraints on your main adsb instance, port conflicts, messing up your feeder etc.

tar1090/readsb setup

Here's a brief description of some of the projects you might want to setup.

  • Acars2pos - Parses location data from various types of acars messages and feeds them to a readsb instance. (Do not feed these to feeders, the data is usually out of date, and while its cool for personal purposes feeders don't want the data!).
  • PlaneFence - Allows you to see what planes fly over your house (planefence) and see interesting planes that your antenna receives (planealert)
  • Prometheus/Grafana/Influx - stores all your data from readsb into a database for alterative dashboards to the ones provided by tar1090.

Step 1: Create docker compose file for tar1090/readsb

We will be using wiedehopf's readsb port containerized inside of docker. More info here. All steps below will be on your second pc/SBC not your adsb.im feeder.

Install docker compose if you don't have it already installed. Lots of guides online, we won't go through the steps here.

Create an adsbprojects.yml file using nano in terminal or your favorite gui text editor to copy and paste the example below as a starting point. Make sure to set your Timezone, latitude and longitude, and antenna height (readsb_alt) in the docker compose yml. Also set the IP address of your adsb.im feeder.

Place the file in /home/username_here/Documents or wherever you would like to store it.


    services:
      tar1090:
        image: ghcr.io/sdr-enthusiasts/docker-tar1090:latest
        tty: true
        container_name: tar1090
        restart: unless-stopped
        environment:
          - TZ=${FEEDER_TZ}
          - LAT=${FEEDER_LAT}
          - LONG=${FEEDER_LON}
          - READSB_ALT=${FEEDER_ALTM}
          - READSB_NET_ENABLE=true
          - READSB_NET_ONLY=true
          - READSB_NET_CONNECTOR=${ADSB_IM_IP},30005,beast_in;${ADSB_IM_IP},31005,beast_in
          - READSB_NET_SBS_OUTPUT_PORT=30003
          - READSB_EXTRA_ARGS=--net-beast-reduce-interval 2 --net-sbs-reduce
          - READSB_MAX_RANGE=500
          - READSB_FORWARD_MLAT_SBS=true
          - READSB_RX_LOCATION_ACCURACY=2
          - READSB_NET_SBS_INPUT_PORT=32006
          - READSB_STATS_RANGE=true
          - TAR1090_ENABLE_AC_DB=true
          - TAR1090_ENABLE_ACTUALRANGE=true
        volumes:
          - /opt/adsb-extra/tar1090/globe_history:/var/globe_history
          - /opt/adsb-extra/tar1090/timelapse1090:/var/timelapse1090
          - /opt/adsb-extra/tar1090/graphs1090:/var/lib/collectd
          - /proc/diskstats:/proc/diskstats:ro
          # - /run/airspy_adsb:/run/airspy_adsb
        ports:
          - 8078:80
          - 30003:30003
        tmpfs:
          - /run:exec,size=64M
          - /var/log
    volumes:
      readsbpb_rrd:
      readsbpb_autogain:
    

We'll briefly go through the options we have configured beyond normal tar1090 setup and why. Feel free to remove the ones for the projects you don't use.

  1. READSB_NET_CONNECTOR - This configures your connection from the adsb.im feeder into tar1090. In this example we are using beast in ports to connect to both ADS-B and MLAT feeds. This also includes the default output from mlathub running on the adsb.im feeder.
  2. READSB_NET_ENABLE - Turns on networking for tar1090.
  3. READSB_EXTRA_ARGS - Reduces amount of traffic retrieved fom each plane from the adsb.im feeder for beast to every 2 seconds. Also reduces sbs traffic output which I am using for planefence. You can adjust as needed.
  4. READSB_NET_ONLY - Turns off looking for sdr's. Since the SDRs are connected to our adsb.im feeder we don't want tar1090 searching for them or grabbing other sdr's that might be in use on the system.
  5. READSB_MAX_RANGE - I set this for acars2pos. You might use a different value depending on how far away planes you are receiving are via ADS-B or acars2pos.
  6. READSB_FORWARD_MLAT_SBS - I use this switch to forward MLAT data to planefence. You can turn this off if you don't use planefence.
  7. READSB_NET_SBS_OUTPUT_PORT - This sets the port we expose to planefence. Notice that we also have port 30003 exposed in the ports section of our config. You can remove this if you aren't using planefence.
  8. READSB_NET_SBS_INPUT_PORT - This pulls locations from acars2pos into tar1090.
Step 2: Run cd /home/username_here/Documents (or wherever you placed the yml) to move your terminal to the folder. Then run docker-compose -f adsbprojects.yml up -d from the folder where the adsbprojects.yml is located.
Step 3: Profit! - if all went well it should start up successfully. If not read through the errors and check your yml file for typos. Then go to the ip address with port 8078 of your tar1090 machine for example like this 192.168.1.25:8078 to bring up tar1090 and you should see your map just like on an adsb.im feeder.