Planes but not feeding

My settings in etc/rc.local are those:

sudo /home/pi/airspy/airspy_adsb -c 127.0.0.1:30104:BEAST -g 20 -p -f 1 -r &

Because I have the add-on version of piaware, the config file is not working, so I had to edit manually the /etc/default/dump1090-fa :

 #RECEIVER_OPTIONS="--device-index 0 --gain -10 --ppm 0 --net-bo-port 30005"
RECEIVER_OPTIONS="--net-only --fix"
DECODER_OPTIONS="--max-range 420"
NET_OPTIONS="--net --oversample --phase-enhance --net-heartbeat 60 --net-ro-size 1000 --net-ro-interval 1 --net-ri-port 0 --net-ro-port 30002 --net-sbs-port 30003 --net-bi-port 30004,30104 --net-bo-port 30005"
JSON_OPTIONS="--json-location-accuracy 2"

And BTW, the latest valid options for airspy_adsb are those:

pi@pi_3:~/airspy $ ./airspy_adsb -h
airspy_adsb v1.37
Options:
 -s <serial_number>         Device serial number
 -t <timeout>               Aircraft timeout in seconds
 -g <rf_gain>               RF gain: 0..21
 -f <bits>                  Forward Error Correction (FEC) bits
 -c <host>:<port>[:format]  Add a Push Client
 -l <port>[:format]         Add a Server
 -m <mlat_freq>             MLAT frequency in MHz: 12 or 20
 -x                         Enable DX mode
 -r                         Reduced IF bandwidth
 -b                         Enable Bias-Tee
 -p                         Enable Bit Packing
 -v                         Verbose mode
 -h                         Display this help screen
Available output formats:
 * AVR        - Raw AVR format
 * AVR-STRICT - Raw AVR format with only CRC valid frames
 * ASAVR      - Raw Airspy AVR format
 * Beast      - Raw Beast Binary format

Why would you use that?
Isn’t that as well as bit packing only meant for lacking USB bandwidth?

IMO the bandwidth of the ADSB messages is fairly low, 50kHz.
For comparation, the “normal” bandwidth for FM is 100kHz. UAT signals have 1.3MHz. Normally the bandwidth of the SDR dongle is equal or slightly lower than the sampling rate (because there are two signals I and Q, Nyquist limit is respected).

Reducing the IF band diminishes the out of band noise, without cutting the actual payload of the signals, allowing for weaker signals to be detected.

Now, how is actually implemented… I don’t really know. Might be just a placebo.

The output MLAT for BEAST protocol is always 12 MHz, regardless of the internal detection sample rate.

1 Like

The RSSI in the BEAST output tries to emulate BEAST behavior and “sensitivity”. The result is that some very weak frames can still be decoded with the Airspy but will have RSSI = 0.

-x is unrelated to oversampling. It simply tells the decoder to trust more frames that are likely to be good.

1 Like

Weak frames will show -49.5 dB or so.
However this makes sense for the plethora of signals around 0dB that I see and that don’t seem to overload the airspy mini receiver.

I meant “0” in the BEAST output, not what is displayed in the plotting software in “dBFS”. The RSSI in BEAST is defined as an integer between 0 and 255. With 0 being the weakest and 255 being the strongest. Internally, we estimate the average SNR of the frame and use a 16bit integer to represent it. The data is available our “extended” AS-AVR protocol.
In any case, don’t rely on the RSSI to estimate how good a signal is. The only thing that really matters in modern radio is SNR.

The preamp is more likely to overload before the Mini. Just make sure you have enough headroom by using an antenna that naturally attenuates out-of-band signals. I use a resonant Active Diapason antenna in my main test site, and it always gave good results. https://shop.jetvision.de/Active-Diapason-Antenna

1 Like

Hm, how do I show those integer values? What is the best algorighm for finding the optimal gain?

My method was fairly simple, I checked the mesages per second in /dump1090-fa/ website and found it to be highest using gain of 21.

RSSI is still useful to check if you set the gain too high for example, is it not?

The 0 dB displayed in the webinterface translate to a integer of 255.

Basically to get from the signal level x supplied as integer in the BEAST protocol to RSSI in dB, the following calculation is done.

10* log10((x/255)*(x/255))

For example:
x=255 → 0dB
x=180 → -3dB
x=128 → -6dB

Anyway that’s just some internals.

Well if you see an RSSI of 0dB (signal level of 255 in BEAST) that means the airspy is running near saturation.

What sonic observed was that the airspy seems to be able to receive signals “stronger” than 255 just fine :slight_smile:

1 Like

Exactly. I don’t know if is because of internal representation on more bits or why. I was scared to run the airspy mini with the gain up, because I saw lots of 0dB signals, and I was trying to stay at least -3dB lower.
But now I am at gain 21 and I still decode lots of signals, even if some far away airplanes show -0.9dB!

I have been running an airspy with full gain on a hab/nevis amp with no issues. I do have a cavity filter on teh outside as there is so much RF crap in my area.

This is my airspy feeder

The recent stats improvement is due to me changing it from an attic antenna to a chimney mounted antenna. The radarcape was using the chimney mounted antenna but stopped working (I have to get it fixed).

Not quite true. It simply means the signal is at the saturation level of a typical emulated BEAST receiver. The actual dynamic range is much higher.

1 Like

Well it would make more sense to actually scale the actual dynamic range onto the 0-255 range.

How would the signal level be useful otherwise?

Or maybe i’m missing something :slight_smile:

This would break the compatibility with other software (for example PlanePlotter).

Is PlanePlotter relying on an absolute signal level? That doesn’t make much sense anyway as you can always change receiver gain.

I’m curious how would it break planeplotter?
Maybe you could include a command line switch so it’s actually a useful display in the dump1090 based web interfaces people are using :slight_smile:

PP uses the signal levels to do fancy things. They have to match the regular BEAST receiver.
That said, I can add another switch in the command line to enable full scale “RSSI” or, better yet, the SNR.

While i know that the SNR is interesting, if you run double stage amps like the rtl-sdr blog LNA it is nice to know where you are in the dynamic range of the airspy.

With single stage LNAs with aroung 17dB of gain you probably just can’t oversaturate the airspy :slight_smile:
(In regards to ADS-B signals)

@burgdorfer
Pretty likely 21 is the best gain setting as you seemingly need more than 30dB of amplification before oversaturation of the airspy becomes a problem.
(I’m just gonna assume you use the uputronics amplifier? You wrote something about a filter but that’s not what i was asking.)

I’m still not sure how PP is gonna do fancy things with a signal level that is clipped to maximum if you even remotely use the dynamic range of the airspy.

You have to ask Bev of COAA for the details. AFAIK, it is used for distributed RSSI calibration so different systems can have consistent display. The RSSI is also used to enhance the MLAT calculation by giving less weights to weak signals. The prerequisite was that the linear full scale should match the ADC used in the BEAST (was that a 8bit MAX1192?)
Airspies give 12bit with an oversampling factor of 6 or 10 depending on the -m setting. You end up with a much larger numerical range that doesn’t fit in a single byte integer.
Before mapping this RSSI, Bev remarked that the RSSI reports “do not seem to vary with height and distance from [his] receiver as [he] would expect”. In fact, most reports were squeezed in a small region of the 0 … 255 range.

Thanks for the explanation that makes sense :slight_smile:
I guess planeplotter is using the airspy as part of a kit then? That of course make sense because you have a common baseline.

So does the -m setting actually change the decoding?

What settings/flags do you run on your setup? :slight_smile: