sdr-enthusiasts / docker-adsbexchange Goto Github PK
View Code? Open in Web Editor NEWFeeds ADS-B data into adsbexchange.com. Designed to work with mikenye/readsb-protobuf.
License: MIT License
Feeds ADS-B data into adsbexchange.com. Designed to work with mikenye/readsb-protobuf.
License: MIT License
Hello, first of all a big thanks for these create containers!
But as the title suggest, I've got an issue with the mlat-client. It constantly spams with "outlier detected". I've tried to tweak some configuration but with no luck so far.
Could you give some pointers on what could be wrong?
Piece out of my compose file:
adsbexchange:
image: ghcr.io/sdr-enthusiasts/docker-adsbexchange:latest
tty: true
container_name: adsbx
restart: always
networks:
- adsbnet
environment:
- BEASTHOST=readsb
- TZ=Europe/Brussels
- LAT=xxx
- LONG=xxx
- ALT=xxx
- SITENAME=aircrafts
- UUID=xxxxxxxxx
- PRIVATE_MLAT=true
tmpfs:
- /run:rw,nosuid,nodev,exec,relatime,size=64M,uid=1000,gid=1000```
Would it be possible to make MLAT privacy configurable? Maybe through an environment variable setting?
docker run \
-d \
--rm \
--name adsbx \
-e TZ="YOUR_TIMEZONE" \
-e BEASTHOST=beasthost \
-e TZ=Australia/Perth \
-e LAT=-33.33333 \
-e LONG=111.11111 \
-e ALT=50m \
-e SITENAME=My_Cool_ADSB_Receiver
-e UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
mikenye/adsbexchange
SITENAME and UUID should have backslash at end of lines.
This is my first time interacting on github. I'm sorry if I am not doing it right.
Container reports unhealthy despite active connection to adsbexchange
Reporting 278 failures over 10 days
adsbexchange-feed last updated: 1609819993, now: 1609819993.583016405, delta: .583016405. HEALTHY
total aircraft: 15. HEALTHY
no established beast connection to feed.adsbexchange.com:30004. UNHEALTHY
no established mlat connection to feed.adsbexchange.com:31090. UNHEALTHY
listening for beast connections on port 30005. HEALTHY
listening for mlat connections on port 30105. HEALTHY
adsbexchange-feed error deaths: 0. HEALTHY
adsbexchange-stats error deaths: 0. HEALTHY
healthcheck error deaths: 0. HEALTHY
mlat-client error deaths: 0. HEALTHY
ADSB Exchange thinks everything is going great despite "no established beast connection" in healthcheck above
Data incoming from: ####
Route: beast.front
Backend: beast.back
Connected: beast-ingress.01
Age: 23h53m
Data incoming from: ####
Route: mlat.front
Backend: mlat_back_1b
Connected: mlat1b
Age: 18h9m
Restarted the container, healthcheck started failing within 12 hours.
I haven't worked a lot with docker healthchecks so this might be my inexperience showing? Why does adsbx think my connection is steady for hours but docker thinks beat +/ mlat is down?
Hi -- this looks similar to #61
this message constantly repeats
[mlat-client] Connected to multilateration server at feed1.adsbexchange.com:31090, handshaking
[mlat-client] Lost connection to feed1.adsbexchange.com:31090
[mlat-client] Reconnecting in 7.2 seconds
[mlat-client] Connected to multilateration server at feed2.adsbexchange.com:64590, handshaking
[mlat-client] Lost connection to feed2.adsbexchange.com:64590
[mlat-client] Reconnecting in 7.3 seconds
[mlat-client] Connected to multilateration server at feed1.adsbexchange.com:31090, handshaking
[mlat-client] Lost connection to feed1.adsbexchange.com:31090
[mlat-client] Reconnecting in 8.4 seconds
The machine is an RPI with FA dongle. It's running docker images:
ghcr.io/sdr-enthusiasts/docker-readsb-protobuf:latest
A piaware image
ghcr.io/sdr-enthusiasts/docker-piaware:latest
And the adsbexchange image
ghcr.io/sdr-enthusiasts/docker-adsbexchange:latest
I do get MLAT connections from piaware logs:
[piaware] 2023/05/03 09:08:09 mlat-client(368): Aircraft: 15 of 27 Mode S, 35 of 52 ADS-B used
[piaware] 2023/05/03 09:23:09 mlat-client(368): Receiver status: connected
[piaware] 2023/05/03 09:23:09 mlat-client(368): Server status: synchronized with 498 nearby receivers
[piaware] 2023/05/03 09:23:09 mlat-client(368): Receiver: 717.3 msg/s received 116.0 msg/s processed (16%)
[piaware] 2023/05/03 09:23:09 mlat-client(368): Server: 0.1 kB/s from server 0.0kB/s TCP to server 1.3kB/s UDP to server
[piaware] 2023/05/03 09:23:09 mlat-client(368): Results: 58.7 positions/minute
[piaware] 2023/05/03 09:23:09 mlat-client(368): Aircraft: 10 of 24 Mode S, 37 of 51 ADS-B used
[piaware] 2023/05/03 09:38:09 mlat-client(368): Receiver status: connected
[piaware] 2023/05/03 09:38:09 mlat-client(368): Server status: synchronized with 455 nearby receivers
Do you have any ideas?
I am running the adsb-exchange container via "docker run", feeding all the environment variables that are referenced in the compose file. Every few minutes, I see following error:
Apr 18 23:19:23 wallaby run.sh[30718]: [healthcheck]
Apr 18 23:19:23 wallaby run.sh[30718]: Traceback (most recent call last):
Apr 18 23:19:23 wallaby run.sh[30718]: File "/scripts/health_from_adsbexchange.py", line 17, in <module>
Apr 18 23:19:23 wallaby run.sh[30718]: if stats_json['stats-uuid'].lower() == 'not found':
Apr 18 23:19:23 wallaby run.sh[30718]: KeyError: 'stats-uuid'
Apr 18 23:19:24 wallaby run.sh[30718]: [adsbexchange-feed] Statistics: Sun Apr 18 23:04:23 2021 CEST - Sun Apr 18 23:19:24 2021 CEST
ADSBExchange now seems to support 978Mhz feeding as well. Possible to add this as an enhancement request?
I'm interested in using a container like this to feed ADSB Exchange, but it looks like the dependency on s6 prevents running as non-root. Have you put any thought into what it would take to run as a normal user?
Hi everyone,
I am having trouble recently in reporting to ADSBExchange:
[mlat-client] Connected to multilateration server at feed.adsbexchange.com:31090, handshaking
[mlat-client] Lost connection to feed.adsbexchange.com:31090
[mlat-client] Reconnecting in 10.7 seconds
[mlat-client] Connected to multilateration server at feed.adsbexchange.com:64590, handshaking
[mlat-client] Lost connection to feed.adsbexchange.com:64590
[mlat-client] Reconnecting in 14.9 seconds
I am running the latest docker image on a raspberrypi4
Here is my docker compose:
adsbexchange:
image: mikenye/adsbexchange
tty: true
container_name: adsbx
restart: always
environment:
- BEASTHOST=readsb
- TZ="Europe/Brussels"
- LAT=y.yyyy
- LONG=x.xxxx
- ALT=21m
- SITENAME=receiver_name
- UUID=XXXXX-XXXXX-XXXXXX
tmpfs:
- /run:rw,nosuid,nodev,exec,relatime,size=64M,uid=1000,gid=1000
does anyone know how to diagnose this problem?
Thanks!
I'm running your containers so far successfully as a stack with readsb-protobuf, adsb-exchange and tar1090. The only thing that doesn't seem to work is MLAT. the status page shows me all green but my station doesn't seem to sync with any peers:
https://adsbx.org/sync/feeder.html?5A&ADSB_VLK
The console output doesn't seem to show any errors. Here's an example:
[adsbexchange-feed] 0 with bad message format or invalid CRC
[adsbexchange-feed] 0 with unrecognized ICAO address
[adsbexchange-feed] 0 accepted with correct CRC
[adsbexchange-feed] 0 accepted with 1-bit error repaired
[adsbexchange-feed] 0 total usable messages
[adsbexchange-feed] 0 surface position messages received
[adsbexchange-feed] 0 airborne position messages received
[adsbexchange-feed] 0 global CPR attempts with valid positions
[adsbexchange-feed] 0 global CPR attempts with bad data
[adsbexchange-feed] 0 global CPR attempts that failed the range check
[adsbexchange-feed] 0 global CPR attempts that failed the speed check
[adsbexchange-feed] 0 global CPR attempts with insufficient data
[adsbexchange-feed] 0 local CPR attempts with valid positions
[adsbexchange-feed] 0 aircraft-relative positions
[adsbexchange-feed] 0 receiver-relative positions
[adsbexchange-feed] 0 local CPR attempts that did not produce useful positions
[adsbexchange-feed] 0 local CPR attempts that failed the range check
[adsbexchange-feed] 0 local CPR attempts that failed the speed check
[adsbexchange-feed] 0 CPR messages that look like transponder failures filtered
[adsbexchange-feed] 0 non-ES altitude messages from ES-equipped aircraft ignored
[adsbexchange-feed] 0 unique aircraft tracks
[adsbexchange-feed] 0 aircraft tracks where only one message was seen
[adsbexchange-feed] CPU load: 0.1%
[adsbexchange-feed] 0 ms for demodulation
[adsbexchange-feed] 0 ms for reading from USB
[adsbexchange-feed] 1023 ms for network input and background tasks
[healthcheck]
[healthcheck] Feeder 'ADSB_VLK', UUID 'xxx':
[healthcheck] Online statistics at: https://www.adsbexchange.com/api/feeders/?feed=xxx
[healthcheck]
[healthcheck] Beast data feeding OK
[healthcheck] - Data Incoming From: xxx.xxx.xxx.xxx
[healthcheck] - Route:Port: beast.front
[healthcheck] - Backend: beast.back
[healthcheck] - Connected: beast-ingress.01
[healthcheck] - Age: 2h14m
[healthcheck]
[healthcheck] MLAT data feeding OK
[healthcheck] - Data Incoming From: xxx.xxx.xxx.xxx
[healthcheck] - Route:Port: mlat.front
[healthcheck] - Backend: mlat.back.5a
[healthcheck] - Connected: mlat5a
[healthcheck] - Age: 2h29m
[healthcheck]
[mlat-client] Receiver: connected 4.3 msg/s received 0.0 msg/s processed (0%)
[mlat-client] Server: ready 0.0 kB/s from server 0.0 kB/s to server
[mlat-client] Results: 0.0 positions/minute
[mlat-client] Aircraft: 0 of 0 Mode S, 0 of 0 ADS-B used
[adsbexchange-feed] Statistics: Sat Jun 19 15:27:25 2021 UTC - Sat Jun 19 15:42:26 2021 UTC
[adsbexchange-feed] Messages from network clients:
[adsbexchange-feed] 4277 Mode A/C messages received
[adsbexchange-feed] 124 Mode S messages received
[adsbexchange-feed] 0 with bad message format or invalid CRC
[adsbexchange-feed] 0 with unrecognized ICAO address
[adsbexchange-feed] 124 accepted with correct CRC
[adsbexchange-feed] 0 accepted with 1-bit error repaired
[adsbexchange-feed] 124 total usable messages
[adsbexchange-feed] 0 surface position messages received
[adsbexchange-feed] 12 airborne position messages received
[adsbexchange-feed] 7 global CPR attempts with valid positions
[adsbexchange-feed] 0 global CPR attempts with bad data
[adsbexchange-feed] 0 global CPR attempts that failed the range check
[adsbexchange-feed] 0 global CPR attempts that failed the speed check
[adsbexchange-feed] 0 global CPR attempts with insufficient data
[adsbexchange-feed] 2 local CPR attempts with valid positions
[adsbexchange-feed] 2 aircraft-relative positions
[adsbexchange-feed] 0 receiver-relative positions
[adsbexchange-feed] 3 local CPR attempts that did not produce useful positions
[adsbexchange-feed] 0 local CPR attempts that failed the range check
[adsbexchange-feed] 0 local CPR attempts that failed the speed check
[adsbexchange-feed] 0 CPR messages that look like transponder failures filtered
[adsbexchange-feed] 0 non-ES altitude messages from ES-equipped aircraft ignored
[adsbexchange-feed] 1 unique aircraft tracks
[adsbexchange-feed] 0 aircraft tracks where only one message was seen
[adsbexchange-feed] CPU load: 0.1%
[adsbexchange-feed] 0 ms for demodulation
[adsbexchange-feed] 0 ms for reading from USB
[adsbexchange-feed] 1077 ms for network input and background tasks
[healthcheck]
[healthcheck] Feeder 'ADSB_VLK', UUID 'xxx':
[healthcheck] Online statistics at: https://www.adsbexchange.com/api/feeders/?feed=xxx
[healthcheck]
[healthcheck] Beast data feeding OK
[healthcheck] - Data Incoming From: xxx.xxx.xxx.xxx
[healthcheck] - Route:Port: beast.front
[healthcheck] - Backend: beast.back
[healthcheck] - Connected: beast-ingress.01
[healthcheck] - Age: 2h29m
[healthcheck]
[healthcheck] MLAT data feeding OK
[healthcheck] - Data Incoming From: xxx.xxx.xxx.xxx
[healthcheck] - Route:Port: mlat.front
[healthcheck] - Backend: mlat.back.5a
[healthcheck] - Connected: mlat5a
[healthcheck] - Age: 2h44m
[healthcheck]
[mlat-client] Receiver: connected 4.9 msg/s received 0.0 msg/s processed (1%)
[mlat-client] Server: ready 0.0 kB/s from server 0.0 kB/s to server
[mlat-client] Results: 0.0 positions/minute
[mlat-client] Aircraft: 0 of 0 Mode S, 0 of 0 ADS-B used
I couldn't find any documentation for the mlat client or any debugging options. Could you please advise how to enable additional debugging output or where to start debugging?
Dockerfile
Compile the ADSBX feeder using READSB
git clone --depth 1 https://github.com/Mictronics/readsb.git
cd readsb
make RTLSDR=yes
/usr/bin/readsb --net --net-only --quiet
--net-beast-reduce-interval 1
--net-connector feed.adsbexchange.com,30005,beast_reduce_out
--net-connector localhost,30005,beast_in
--net-ro-interval 0.5 --net-ri-port 0 --net-ro-port 0
--net-sbs-port 0 --net-bi-port 0 --net-bo-port 0
m
or ft
suffix.I have the following error in the logs every 15 minutes:
Traceback (most recent call last): File "/scripts/health_from_adsbexchange.py", line 9, in <module> stats_json = json.loads(stats_raw.decode('utf-8')) File "/usr/lib/python3.9/json/__init__.py", line 346, in loads return _default_decoder.decode(s) File "/usr/lib/python3.9/json/decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python3.9/json/decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
The issue seems to be with the health check script. When accessing the web page: http://www.adsbexchange.com/myip/ I get the following page
Here is the source code of this code that apparently fail JSON decode (IP address and Feeder ID redacted)
page.txt
when running the latest_nohealthcheck tag I got this error message
[adsbexchange-stats] /usr/local/bin/json-status: line 299: vcgencmd: command not found
tag 20201113_nohealthcheck is working fine
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.