RTL-SDR vs. FUNcube

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


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…

More about LNA + filter

After the conclusions reached with the filters a couple of weeks ago I designed a little LNA+filter device:

I finally managed to test it, although the set-up is not ideal. I have an rPi4 with an FCD and an rtl-sdr.com v4 dongle. In front of the rtl-sdr I have the LNA+filter, and then the yagi antenna is attached to a splitter which feeds the FCD on one side and the LNA-filter-rtl-sdr on the other.

The test tag is placed some 50ft in the back of the antenna a bit off-axis and come in at around 10-15dB SNR where I first placed it. I used a little plastic bottle with a sponge and water for a total of 30g to simulate a bird body and taped the tag to that. The bottle fell over at 8:52pm causing no more reception. I placed it in a slightly different spot just before 9pm where the reception seems to be a bit more marginal. Here are the charts with the rtl-sdr in green on port 3 and the FCD in blue on port 2:

The most important chart is the tag detections one. Before the change of location both receivers produced identical results. Since the change of location only the rtl-sdr has been producing tag detections.

The most informative chart is the SNR one. The SNR reported by the rtl-sdr is consistently higher than the FCD and the reason the FCD no longer produces tag detections is because the SNR barely makes it above 6dB every now and then.

This is just one test set-up and I need to also test each of the two receivers attached directly to the antenna without splitter to ensure I’m not seeing artifacts of the test set-up. But so far it’s consistent with everything I’ve seen. Earlier in the day I had the tag in a more remote location about 2000ft (~600m) away but it’s been very foggy here all day long and the tag couldn’t be received. When I went to pick it up, holding it up the two receivers did detect it and the rtl-sdr also showed a higher SNR. So far the signs are positive…

There’s still a lot of work to do. I need to tune the components in the circuit, the whole thing has to go into a shielded box, and it would be good to have an N-type connector option to attach the filter directly to the antenna. Then others will have to test the set-up to ensure it works in real life and not just for my set-up. But maybe we can make the rtl-sdrs better than FCDs?

E4000 tuners (RTL-SDR)

I just tested an E4000-based RTL-SDR (older Nooelec NESDR SMArtee XTR) and find the performance similar to an rtl-sdr.com v4 SDR. Similar in that it appears to produce comparable SNR results. Some notes:

  • the valid tuner gain settings are: -1.0, 1.5, 4.0, 6.5, 9.0, 11.5, 14.0, 16.5, 19.0, 21.5, 24.0, 29.0, 34.0, 42.0, one of these numbers needs to go into /etc/sensorgnome/acquisitions.json as tuner_gain for rtlsdr
  • I used the following IF gains in that same file:
{ "name": "if_gain1",  "schedule": { "type": "Constant", "value": 6 } },                                  
{ "name": "if_gain2",  "schedule": { "type": "Constant", "value": 9 } },
{ "name": "if_gain3",  "schedule": { "type": "Constant", "value": 6 } },
{ "name": "if_gain4",  "schedule": { "type": "Constant", "value": 0 } },
{ "name": "if_gain5",  "schedule": { "type": "Constant", "value": 3 } },
{ "name": "if_gain6",  "schedule": { "type": "Constant", "value": 3 } },

this comes from the sensitivity table at hz.tools | Overview of the E4000 RTL SDR Tuner's IF stage where 30dB gain was measured for this setting (even though 6+9+6+3+3=27).

  • The SNR appears to be better with a gain setting that places the background noise around -35dB than around -45dB

More tests are needed to ascertain whether the various RTL-SDRs show the same or different performance. Sounds like a thread on the various types of rtl-sdrs is called for…

Have you tried the Nooelec one here:


It seems to pickup my tags, but I haven’t done much other testing yet.



Does anyone have experience with this dongle that can be used in place of the FunCube?


It’s a fraction of the price of FunCube, and comes same day or next day for me here in Canada. I have one on a SensorGnome (Raspberry Pi4) that I am testing with now. It seems to work for my tags on 166 in an office setting with a few versions of small antennae, but I haven’t used it in the field yet. However, it seems to get quite hot.

Wondering if anyone else has experience testing it.


Derek Morningstar, M.Sc., PWS
(226) GOT-BATS

1 Like

[I merged Derek’s other thread in here, hence the two msgs from the same author]

I haven’t tested this specific model but the Nooelec rtl-sdrs seem to be of decent quality, so I don’t expect you to have issues. In terms of comparison to FCDs, well, that’s what this thread is about… This Nooelec model should be very close to the rtl-sdr.com v3.

The rtl-sdrs do get relatively warm so that’s not unusual. It’s perhaps worth it to measure USB power consumption given that the USB bus is limited to 1.2A. I would measure the rPi power consumption with one rtl-sdr and then again with two and see what the difference is.

If the LNA+SAW filter tests work out you may want to plan to get one eventually…