ADSB Capture with a Raspberry Pi 4 – AirSpy mini and home assistant
Get portainer running
Go to your primary environment
Go to stacks and add a stack
Use the web editor and let’s add our service
https://github.com/sdr-enthusiasts/airspy_adsb
The main change I had to do was to change the volumes to work with Home Assistant Operating System
volumes: - /mnt/data/supervisor/homeassistant/docker_storage/ultrafeeder/globe_history:/var/globe_history - /mnt/data/supervisor/homeassistant/docker_storage/ultrafeeder/graphs1090:/var/lib/collectd - /proc/diskstats:/proc/diskstats:ro
services: airspy_adsb: image: ghcr.io/sdr-enthusiasts/airspy_adsb:latest tty: true container_name: airspy_adsb hostname: airspy_adsb restart: always device_cgroup_rules: - 'c 189:* rwm' environment: - AIRSPY_ADSB_VERBOSE=true - AIRSPY_ADSB_TIMEOUT=90 - AIRSPY_ADSB_FEC_BITS=1 - AIRSPY_ADSB_WHITELIST_THRESHOLD=5 - AIRSPY_ADSB_PREAMBLE_FILTER_NONCRC=8 - AIRSPY_ADSB_CPUTIME_TARGET=60 - AIRSPY_ADSB_PREAMBLE_FILTER_MAX=20 - AIRSPY_ADSB_MLAT_FREQ=12 - AIRSPY_ADSB_RF_GAIN=auto - AIRSPY_ADSB_STATS=true volumes: - /dev:/dev:ro tmpfs: - /run:exec,size=256M - /tmp:size=128M - /var/log:size=32M ultrafeeder: image: ghcr.io/sdr-enthusiasts/docker-adsb-ultrafeeder # Note - if you want to enable telegraf for use with InfluxDB/Prometheus and Grafana, # use the following image instead: # image: ghcr.io/sdr-enthusiasts/docker-adsb-ultrafeeder:telegraf tty: true container_name: ultrafeeder hostname: ultrafeeder restart: unless-stopped device_cgroup_rules: - "c 189:* rwm" ports: - 8080:80 # to expose the web interface # - 9273-9274:9273-9274 # to expose the statistics interface to Prometheus environment: # -------------------------------------------------- # general parameters: - LOGLEVEL=error - TZ=${FEEDER_TZ} # -------------------------------------------------- # SDR related parameters: ### Set readsb to net-only mode, since we're getting SDR data via BEAST from airspy_adsb - READSB_NET_ONLY=true # - READSB_DEVICE_TYPE=rtlsdr # - READSB_RTLSDR_DEVICE=${ADSB_SDR_SERIAL} # - READSB_RTLSDR_PPM=${ADSB_SDR_PPM} # # -------------------------------------------------- # readsb/decoder parameters: - READSB_LAT=${FEEDER_LAT} - READSB_LON=${FEEDER_LONG} - READSB_ALT=${FEEDER_ALT_M}m ### Disable readsb gain, since airspy_adsb is handling that # - READSB_GAIN=${ADSB_SDR_GAIN} - READSB_RX_LOCATION_ACCURACY=2 - READSB_STATS_RANGE=true # # -------------------------------------------------- # Sources and Aggregator connections: # Notes - remove the ones you are not using / feeding ### - "adsb,airspy_adsb,30005,beast_in;" is how ultrafeeder gets the BEAST feed out of airspy_adsb # - remove "adsb,dump978,30978,uat_in;" if you don't have dump978 and a UAT dongle connected to your station # - !!! make sure that each line ends with a semicolon ";", with the exception of the last line which shouldn't have a ";" !!! - ULTRAFEEDER_CONFIG= adsb,airspy_adsb,30005,beast_in; #adsb,dump978,30978,uat_in; #adsb,feed.adsb.fi,30004,beast_reduce_plus_out; #adsb,in.adsb.lol,30004,beast_reduce_plus_out; #adsb,feed.airplanes.live,30004,beast_reduce_plus_out; #adsb,feed.planespotters.net,30004,beast_reduce_plus_out; #adsb,feed.theairtraffic.com,30004,beast_reduce_plus_out; #adsb,data.avdelphi.com,24999,beast_reduce_plus_out; #adsb,skyfeed.hpradar.com,30004,beast_reduce_plus_out; #adsb,feed.radarplane.com,30001,beast_reduce_plus_out; #adsb,dati.flyitalyadsb.com,4905,beast_reduce_plus_out; #mlat,feed.adsb.fi,31090,39000; #mlat,in.adsb.lol,31090,39001; #mlat,feed.airplanes.live,31090,39002; #mlat,mlat.planespotters.net,31090,39003; #mlat,feed.theairtraffic.com,31090,39004; #mlat,skyfeed.hpradar.com,31090,39005; #mlat,feed.radarplane.com,31090,39006; #mlat,dati.flyitalyadsb.com,30100,39007; #mlathub,piaware,30105,beast_in; #mlathub,rbfeeder,30105,beast_in; #mlathub,radarvirtuel,30105,beast_in; #mlathub,planewatch,30105,beast_in # If you really want to feed ADSBExchange, you can do so by adding this above: # adsb,feed1.adsbexchange.com,30004,beast_reduce_plus_out,uuid=${ADSBX_UUID}; # mlat,feed.adsbexchange.com,31090,39008,uuid=${ADSBX_UUID} # # -------------------------------------------------- - UUID=${MULTIFEEDER_UUID} - MLAT_USER=${FEEDER_NAME} # # -------------------------------------------------- # TAR1090 (Map Web Page) parameters: - UPDATE_TAR1090=true - TAR1090_DEFAULTCENTERLAT=${FEEDER_LAT} - TAR1090_DEFAULTCENTERLON=${FEEDER_LONG} - TAR1090_MESSAGERATEINTITLE=true - TAR1090_PAGETITLE=${FEEDER_NAME} - TAR1090_PLANECOUNTINTITLE=true - TAR1090_ENABLE_AC_DB=true - TAR1090_FLIGHTAWARELINKS=true - HEYWHATSTHAT_PANORAMA_ID=${FEEDER_HEYWHATSTHAT_ID} - HEYWHATSTHAT_ALTS=${FEEDER_HEYWHATSTHAT_ALTS} - TAR1090_SITESHOW=true - TAR1090_RANGE_OUTLINE_COLORED_BY_ALTITUDE=true - TAR1090_RANGE_OUTLINE_WIDTH=2.0 - TAR1090_RANGERINGSDISTANCES=50,100,150,200 - TAR1090_RANGERINGSCOLORS='#1A237E','#0D47A1','#42A5F5','#64B5F6' - TAR1090_USEROUTEAPI=true # # -------------------------------------------------- # GRAPHS1090 (Decoder and System Status Web Page) parameters: # The two 978 related parameters should only be included if you are running dump978 for UAT reception (USA only) - GRAPHS1090_DARKMODE=true # - ENABLE_978=yes # - URL_978=http://dump978/skyaware978 ### Enable Airspy graphs and grab the data via http://airspy_adsb/stats.json - ENABLE_AIRSPY=true - URL_AIRSPY=http://airspy_adsb # # -------------------------------------------------- # Prometheus and InfluxDB connection parameters: # (See above for the correct image tag you must use to enable this) # - INFLUXDBV2_URL=${INFLUX_URL} # - INFLUXDBV2_TOKEN=${INFLUX_TOKEN} # - INFLUXDBV2_BUCKET=${INFLUX_BUCKET} # - PROMETHEUS_ENABLE=true volumes: - /mnt/data/supervisor/homeassistant/docker_storage/ultrafeeder/globe_history:/var/globe_history - /mnt/data/supervisor/homeassistant/docker_storage/ultrafeeder/graphs1090:/var/lib/collectd - /proc/diskstats:/proc/diskstats:ro ### Don't map the host /dev into the container since the SDR(s) are handled in airspy_adsb / dump978 # - /dev:/dev:ro tmpfs: - /run:exec,size=256M - /tmp:size=128M - /var/log:size=32M
Adjust your env files accordingly, and check out the ultrafeeder documentation https://github.com/sdr-enthusiasts/docker-adsb-ultrafeeder
FEEDER_TZ=Europe/Paris FEEDER_LAT= FEEDER_LONG= FEEDER_ALT_M= MULTIFEEDER_UUID= FEEDER_NAME= FEEDER_HEYWHATSTHAT_ID= FEEDER_HEYWHATSTHAT_ALTS=
you can check the logs and see if your airspy is picked up
The port exposed should be 8080, so when you head over to the IP, you should start seeing your results