With the recently surfaced issues around FCDs I’ve been spending time looking into the comparison of FCDs and RTL-SDRs. This (long) post is a summary of what I know so far based on my experimentation.
The short summary (again, my experience):
- in short to medium distance detections the RTL-SDRs are more reliable than the FCDs and capture more pulses/tag transmissions
- at the far end of the distance range the FCDs outperform the RTL-SDRs due to better signal-to-noise ratio
Background
Tags transmit bursts of 4 radio pulses, each pulse is 2.5ms long and the pulses are spaced in the range of 10-100ms apart. Bursts are repeated at fixed intervals of a few seconds. The spacing of the pulses in a burst as well as the interval between the bursts encode the tag ID.
Receivers record a ~20kHz band around the radio frequency used by the tags (e.g. 166.38Mhz in the Americas) and run “vamp-alsa-host” “pulse-finder” software to detect pulses. This is what gets recorded in files later sent to Motus where other software (“tag finder”) analyzes pulse spacing to determine whether the pulses came from a tag.
The pulse finder software is identical for rtl-sdr and FCD and they are configured to capture the same RF information. However, in the default configuration (acquisition.txt
or acquisition.json
file) there is a difference, which is that for rtl-sdrs the pulse finder looks for radio pulses that rise at least 10dB above the noise floor while for FCDs the threshold is 6dB. There is no information for why there is this difference and so far my tests have not shown a rationale for it.
A peculiarity of how the software chain works is that the pulse finder outputs signal and noise figures when it detects pulses. There is no simple way to obtain a noise measurement without there being a pulse.
Existing tests
Adam Smith compared the performance of RTL-SDRs and FCDs in 2020. The results are captured in a github issue https://github.com/MotusDev/Motus-TO-DO/issues/625
which is not publicly accessible, Adam, would you be up for reposting here or having me repost here?
If I may paraphrase his conclusions, they were that the FCDs outperformed the RTL-SDRs based on observing the signal-to-noise figures reported.
Some gotchas
- for RTL-SDRs that use an Elonics E4000 tuner the acquisitions.txt file has to be modified to set the gain to a value that the tuner supports, otherwise the gain is too low (and there are additional gain settings for that tuner that improve performance noticeably)
- the signal and noise figures reported by tag finder are not on an absolute scale and depend on the (multiple) gain settings so cannot be compared between different devices, however, signal-to-noise ratios can be compared
- the minimal pulse threshold in the acquisitions.txt file needs to be set to the same value for FCDs vs. RTL-SDRs to compare them unless there is a good reason to use different settings
- comparing SNR figures is interesting, however at the end of the day the only real measure is how many tag transmissions a specific set-up captured
Initial tests
The test set-up consists of a Raspberry Pi4 with one FCD and one rtl-sdr.com v4 dongle (I also tried a v3 and have not seen a significant difference so far). Both are connected via a mini-circuits ZX10-2-12-S+ splitter to the same antenna. I used a small “rubber duck” antenna for some tests and one of the station mounted Yagis for others. A Lotek test tag is used to produce pulses, its burst interval is 25.1 seconds.
I am finding that in general if the signal strength is sufficient for the RTL-SDR to pick it up, i.e., the SNR is above 6dB, then the RTL-SDR is more reliable.
For example, in blue FCD, in green rtl-sdr.com v3 from ~1:30pm to 12am; rtl-sdr.com v4 after 12am.
The RTL-SDRs both detect more tag transmissions than the FCD. The FCD picked up more pulses than the RTL-SDRs, but evidently fewer were aggregated into tags detections.
As expected the SNR seen by the FCD was higher than that seen by the RTL-SDRs. The SNR reported by the rtl-sdr v4 seems to be a tad better than the v3’s but this may be related to the fact that I tweaked the gain on the V4. (This particular test also had a filter in the chain, but I’ve seen the same type of scenario in other tests without.)
The SNR of the FCD is not always higher than the RTL-SDR. For example:
For these charts the receivers were on the station Yagi and the tag was on my deck ~50m away, off axis from the antenna. The SNR of the RTL-SDR (green) was significantly higher than that of the FCD (blue) until I moved the tag 2m over at which point the FCD’s SNR improved and its reported noise dropped a lot. I have no explanation.
Filters and LNA
Aside from the lower SNR one hypothesis is that due to the additional filtering in FCDs they have better immunity against out-of-band noise than the RTL-SDRs. I have been experimenting with filters (SAW filters specifically) to see whether additional filtering can help the RTL-SDR.
The problem with a filter is that it adds noise. Anything added to the RF input adds noise. Since SNR is a handicap of the RTL-SDRs vs. FCDs adding a filter will make the RTL-SDR perform worse unless it really blocks some strong interference that is harming the RTL-SDR. I can confirm the worse performance experimentally as I see the SNR drop when I insert the filter. So far I have not been able to produce noise that affects performance and that gets filtered out by the filter. I’m finding all this very difficult to test with any reliability.
My conclusion from the filter test is that the only sensible combination is an LNA+filter device, i.e. a low-noise amplifier plus filter. The theory is that the LNA has a lower noise figure than the RTL-SDR input, that it amplifies the signal and noise such that the filter loss and RTL-SDR input noise are compensated for. (The details are captured in Friis formula for calculating noise in a multi-stage amplifier.) In theory, this could produce a combo that is better in almost all situations. In addition, for set-ups with long antenna lines it can compensate for those too. I’m trying to test this.
To be continued…