Hi,
I had read a good part of these threads (also a few other related threads but I ended up in here…) and I would like to make a couple of questions about stream1090 and interoperability, I am pretty new to these subjects and I am pretty much scratching the surface, but I think I can also give a bit from what I already have done here.
First off, I’d like to say that the ease it was to use stream1090 was absolutely fantastic and did what I wanted in a couple of tries and it is being shown to be utterly stable and quite reliable indeed, but, hence, questions.
My idea – out of my lack of knowledge, Im thinking after reading several threads – was to put up a couple of antenas at both sides of the house in rpis, and transmit what the dongles are collecting to a “central” server that would run the feeders.
So I build one that uses:
Bus 001 Device 002: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
Then stream1090 is collecting data and sending out.
Differently from the ideas above I built something slightly different, because I also like to see the small console dashboard from stream1090, therefore I run him in a screen method – first lets start him with this script:
#!/bin/bash
SESSION_NAME="adsb-stream"
STREAM_COMMAND='rtl_sdr -f 1090000000 -s 2400000 - | stream1090 | socat -u - TCP4:192.168.1.31:30001'
case "$1" in
start)
if screen -list | grep -q "$SESSION_NAME"; then
echo "Session $SESSION_NAME already running"
else
echo "Starting ADS-B stream in screen session: $SESSION_NAME"
screen -dmS "$SESSION_NAME" bash -c "$STREAM_COMMAND"
echo "Started. Use 'screen -r $SESSION_NAME' to view stats"
fi
;;
stop)
echo "Stopping ADS-B stream session"
screen -S "$SESSION_NAME" -X quit
;;
status)
if screen -list | grep -q "$SESSION_NAME"; then
echo "ADS-B stream is RUNNING in screen session: $SESSION_NAME"
echo "Use 'screen -r $SESSION_NAME' to view stats"
else
echo "ADS-B stream is NOT running"
fi
;;
restart)
$0 stop
sleep 2
$0 start
;;
view)
screen -r "$SESSION_NAME"
;;
*)
echo "Usage: $0 {start|stop|status|restart|view}"
exit 1
;;
esac
This will start a screen (could possibly be tmux as well) with stream inside:
There is a screen on:
1774870.adsb-stream (11/28/2025 11:24:09 PM) (Detached)
To access it you just run “screen -r adsb-stream” (or if no other screen exists just “screen -r”)
With that working fine, I added a service like:
[Unit]
Description=ADS-B Stream in Screen Session
After=network.target
Wants=network.target
[Service]
Type=forking
User=root
ExecStart=/install/adsb-screen-manager.sh start
ExecStop=/install/adsb-screen-manager.sh stop
ExecReload=/install/adsb-screen-manager.sh restart
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
As such he will start, stop, restart normally.
What I need then is to have on the server 192.168.1.31 (which is a VM Debian Trixie server running on proxmox) the dump10190-fa running , who will expose the port 30001 out, for such I just declared “RECEIVER=none” on its configuration and he automatically start in net-only mode.
Fine! stream1090 + socat will start sending data when it finds the port 30001 listening properly…. and voila, it just works!
Now… I did built the first one out of curiosity and because I had a RTL-SDR Blog V4 lingering around… Also with a BS telescopic antena, and he got some things..
Then I got a rpi4 with a proper antenna and the blue dongle from FlightAware:
Bus 001 Device 003: ID 0bda:2832 Realtek Semiconductor Corp. RTL2832U DVB-T
And I applied exactly the same idea from the first one, he is using stream1090 to stream data towards the same IP and on the same port.
I actually works, and he collects and display data from both, but then upon checking closely Im getting:
Nov 29 22:08:17 debian-apoc piaware[722]: mlat-client(405210): Warning: the timestamps provided by your receiver do
not seem to be self-consistent. This can happen if you feed data from multiple receivers to a single mlat-client, wh
ich is not supported; use a separate mlat-client for each receiver.
Which I bet that, while someone more experienced reading my thread had already on the back of their heads this information waiting to get out ahaha bingo!
Although MLAT seems to be working most of the time, from time to time the FA system seems confused.
From this same server I am running adsbexchange feeder and he is giving a slightly more cryptic but seemingly the same type of message, that reads:
Nov 29 22:14:53 debian-apoc adsbexchange-mlat[593316]: outlier detected with ts: 82242.930, last_ts: 173372.753, ts_elapsed: -91129.823, sys_elapsed: 0.000 (values in seconds)
Nov 29 22:14:59 debian-apoc adsbexchange-mlat[593316]: outlier detected with ts: 82249.082, last_ts: 173378.919, ts_elapsed: -91129.837, sys_elapsed: 0.402 (values in seconds)
Nov 29 22:15:04 debian-apoc adsbexchange-mlat[593316]: outlier detected with ts: 82254.351, last_ts: 173384.268, ts_elapsed: -91129.917, sys_elapsed: 0.503 (values in seconds)
Hence my question (which might be two within it self)
Either I should run two dump10190-fa, which probably in consequence two adsbexchange?
How do I would do that? As the only port I put up is the dump1090-fa (30001) how would I go to add a second one? would adbsexchange that runs in paralelel , seemingly reading data from dump1090-fa would deal with both instances of dump1090-fa at the same time?
I am pretty sure that I am doing other things that are probably wrong but I am pretty happy with the results so far ahaha anyway, sorry for the long reply.