Over the last couple of months, I developed a software-defined GPS receiver. Unfortunately, it's not very sensitive, and can only detect very strong satellite signals. For the RF front-end, I am using a cheap active GPS antenna and an AirSpy SDR, as in Figure 1.

After doing some research, I tried inserting a second LNA between the active antenna and the SDR, as in Figure 2. However, it did not make much of a difference. If anything, it just reduced the sensitivity even further. This is not entirely surprising since, with the first approach, the signal was already pretty large after being digitized (i.e. its span was close to -1...1).

Finally, I am considering adding a second band-pass filter after the external LNA, as in Figure 3; I've seen this approach in commercial GPS front-ends, but I don't really understand why it helps -- after the first filter, the signal should contain very little power outside of the band-pass frequency. I'm sure I'm missing something -- what is the purpose of the second filter? I'd appreciate some example calculation on how/why it helps increase SNR.

A few extra notes:

  • I am confident the Active GPS Antenna is not the problem because, when connected to my off-the-shelf GPS receiver, it's able to receive very weak signals.

  • I am also confident that my GPS software is not the problem. In fact, I am only running the acquisition part of the receiver, which only detects GPS signals but does not attempt to track them. I've verified that it works correctly with these sample RF signals. In addition, I tried running my own signals through their acquisition pipeline, which barely detected anything.

  • These are the components used:

    • Generic GPS Antenna
    • For the first approach (Figure 1), I just connected the active antenna to the AirSpy, using the built-in bias-tee.
    • For the second approach (Figure 2), I used a wide-band noelec LNA (powered by the AirSpy's bias-tee) and an extra external generic bias-tee to power the active GPS antenna.
    • For the third approach (Figure 3), I used a single pre-filtered LNA, externally powered, which also supplies the bias power to the GPS antenna.

Thank you!

RF Circuit Diagram

Also, I measured the power over 1525-1650MHz, with various settings for the SDR gain. You can clearly see that LNA noise over the noise floor of the SDR.

RF Power

  • \$\begingroup\$ Your SDR may be suffering from a poor local-oscillator chain - if so, adding signal gain won't help sensitivity. \$\endgroup\$
    – glen_geek
    Commented Nov 7, 2020 at 22:59
  • \$\begingroup\$ Thanks for taking the time to look at this @glen_geek. I'm fairly new to SDR, and I don't really understand what poor local-oscillator means. Would you mind explaining this a bit further? \$\endgroup\$ Commented Nov 7, 2020 at 23:08
  • \$\begingroup\$ does your system insert the bias voltage that your active antenna needs? \$\endgroup\$ Commented Nov 7, 2020 at 23:09
  • 1
    \$\begingroup\$ Well, then this breaks down to: "how good is your GPS receiver, really?": Have you tried benchmarking it against GNSS-SDR on e.g. their example recordings? \$\endgroup\$ Commented Nov 8, 2020 at 0:05
  • 1
    \$\begingroup\$ @MikeP; this is a great point. I am running my AirSpy in "linear gain mode", which tries to keep its internal LNA's gain low to avoid non-linear distortion. I played around with the various gain knobs, and, in general, it looks like increasing gain across the board (LNA, mixer, and VGA gains) slightly improves sensitivity, so I suspect I'm not hitting non-linearities. \$\endgroup\$ Commented Nov 8, 2020 at 6:50

2 Answers 2


I've connected my RTL-SDR Blog stick to a GPS antenna, and when the LNA bias is on, I see a modest increase in the noise, over the band 1565-1585 MHz. (I used some kind of scanning software, the native bandwidth of the SDR stick is not enough for this experiment.

If you can see the LNA output noise with the SDR, and the antenna in front of the LNA is working, then you have plenty of gain. If the noise floor rise is more than 3 dB, then you are well into diminishing returns.

GPS signals are below the noise for a terrestrial wide beam antenna like the patch, before correlation. (at least, the legacy L1/L2 are). So as long as you are seeing ground noise and amplifier noise, rather than noise generated later in the signal chain, there's no need for more gain.

The digital level you're seeing on the SDR at present doesn't mean anything - it is possible that it's all added within the SDR, burying the external signal well below the internal noise.

Do this simple bias off / bias on test with your SDR first.

If it shows a nice bump in the noise floor, then it's possible that your SDR is letting you down in other ways.

  • \$\begingroup\$ Thank for suggesting this. I spent a while measuring the power getting to the SDR with a variety of gains. As you predicted, beyond ~3dB above the noise floor, adding more gain does not significantly increase performance. Unfortunately, I am still unable to detect weak signals; I can only see a single satellite while my handheld GPS (with the same antenna) tracks >8. In the measured spectrum, I noticed a couple of spikes spaced 20MHz aparts. Perhaps there is some LO leakage? Can you take a look? [shorturl.at/suEKN](link) -- I am not sure if this is something to be worried about. \$\endgroup\$ Commented Nov 11, 2020 at 4:57
  • \$\begingroup\$ Nice work! It looks like there's plenty of external gain, the filtered LNA noise is clearly visible. (do paste a graph into your question). You should probably choose a fairly low gain on the airspy. Is your conversion to 1 bit done right? Could there be an LO/DC issue with the SDR tuned right on 1575.25? The spikes aren't good and might dominate in the signal when you have just 1 bit, maybe you need to filter them in 8bit land, then convert to 1bit? Have you read all of gnss-sdr.org for clues? \$\endgroup\$
    – tomnexus
    Commented Nov 11, 2020 at 7:13
  • \$\begingroup\$ Looking at your graphs again: 1) the external LNA does seem to overpower some of those spurs within your sampling band, does that help? 2) Can you repeat the wide scan but with slightly different tuning settings, to see if the spurs move or not. \$\endgroup\$
    – tomnexus
    Commented Nov 11, 2020 at 12:39
  • \$\begingroup\$ Thanks! I tried a bunch of possible gains, but they all result in a single satellite being detected. I am not only doing the correlation on the 1-bit signal -- I am also correlating the PRN codes on full 16-bit signal, which still detects just a single satellite. At this point, I'm starting to think that perhaps I need a less noisy SDR. What do you think? Also, the spurs remain on exactly the same frequencies even when using different IFs on the SDR; this rules out spurs, doesn't it? They also appear with just a 50-ohm terminator on the SDR. \$\endgroup\$ Commented Nov 12, 2020 at 4:10

You really need to do a link budget analysis of your signal chain. Start with what signal/voltage (or power) level you need at the input to your SDR to guarantee proper operation. Then you need to go back to your antenna and figure out, or get from the data sheet, the expected output from the active antenna, probably in dBm. Then you need to calculate how much additional gain (if any) you need to achieve the required power level into the SDR, taking into account all the loses in the path (cables, connectors, filers, etc). This can usually be done with a spreadsheet model of your signal chain.

Like others have alluded to, just blindly throwing more amplifiers in the path could be making things worse.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.