I installed wiedehopf’s autogain script and it adjusted my gain downwards twice in a row. It wasn’t obvious that there was much change other than the decrease in number of peak strength signals, so I decided to do a little digging to see if I could get some more solid data.
I added the graph showing the ADS-B message rate per aircraft when I first set up the collectd service as a way to see how well the receiver is discriminating overlapping signals, since ADS-B doesn’t use any collision prevention and aircraft just talk over each other without checking if the frequency is clear. (AIS used on ships actually uses a self-organising time division to prevent cross talk, but transmits at a lower rate).
It’s quite hard to compare the receiver performance independent of time, since the collectd graphs only allow the creating of time-series graphs. That’s nice for showing trends, but if you want to see performance under similar circumstances it’s quite hard to evaluate.
Fortunately, rrdtool allows the extraction of data for a specified time range and that can be used for analysis elsewhere.
I extracted a period of the last full 24 hours using the newly set gain (38.6), and a complete period of 24 hours using the previous gain (42.1). The commands used for this were:
rrdtool fetch /var/lib/collectd/rrd/localhost/dump1090-localhost/dump1090_aircraft-recent.rrd AVERAGE -e 12am 27/06/2019 -s end-1day > aircraft.txt
rrdtool fetch /var/lib/collectd/rrd/localhost/dump1090-localhost/dump1090_messages-local_accepted.rrd AVERAGE -e 12am 27/06/2019 -s end-1day > messages.txt
Run these twice, adjusting the dates and file names to get the 2 data series.
I imported this data to excel and plotted it, adding polynomial trend lines:
The new gain setting of 38.6 appears to show a clear improvement in messages received per aircraft over the previous setting of 42.1.
One observation is that there are fewer data points from the previous setting, due to how the rrd data is stored - it loses resolution for older data, being one data point for every 3 minutes rather than for every minute. No actual data is lost however, since the figure is an average of the past 3 minutes. In this application the difference isn’t big enough to matter.
This also shows the major limitation in performance of the RTL dongles - as the number of aircraft increases, the ability of the decoder to discriminate crosstalking aircraft is reduced, falling off sharply over 200 aircraft. I would expect a receiver with higher dynamic range and better sample rate such as an airspy to do much better here.
It would be really good to be able to automate production of a graph like this - I don’t really have the programming skills to do it, but it doesn’t look like it would be too difficult for someone who knew what they were doing.
Edit:- actually it looks like it’s easier to process this output than I first thought, so I’ll have a go at knocking something up.