Troubleshooting GPS on DBSRX

Short Version:
Please help me troubleshoot why I cannot acquire GPS with my USRP+DBSRX,
but I can using KD7LMO’s sample data recorded with USRP+DBSRX.

Long Version:

Hi,

I wrote a GPS acquisition routine which operates inside a GR block fed
by the USRP or gr.file_source. The acquisition routine is a variation
of the weak signal approach presented in “Fundamentals of Global
Positioning System Receivers a Software Approach”.

My acquisition routine works great when applying GR’s file_source on the
KD7LMO USRP-recorded GPS samples. However, I cannot acquire using a
USRP source_c. Please share any tips you have. Here are some things I
tried:

  1. Antenna/environment
    Assuming GPS was simply not visible from my window, used the Leadtek
    9546EVK (http://tinyurl.com/yqx3nv) with the same GPS antenna I used on
    the USRP. The Leadtek was able to acquire and track GPS with C/N0 > 40.
    I have tried using this antenna on the USRP with and without a 30dB
    low noise amplifier.

  2. Birdies
    When commanded to tune to GPS L1 (1.57542GHz), the DBSRX front end tunes
    to a slightly higher freq (r=8,n=3151,Fs=4e6) and compensates with a
    software DDC. Witht these values of r and n, a birdie can be seen at
    L1+1MHz in USRP’s FFT and in an HP spectrum analyzer hooked to a GPS
    antenna near the USRP. I eliminated it with different values of r and n
    (r=2, n=788) and a slightly higher DDC. I accomplished this by adding a
    hack at line 289 of db_dbs_rx.py that works when Fs=4e6:
    # Avoid birdie when LO is set close to L1
    if freq==1575420000:
    best_r = 2
    best_n = 788

  3. Signal generator
    Thinking I was improperly tuning the USRP, I connected a signal
    generator to it and verified that L1 was being brought to baseband.
    However I was frightened to see some artifacts on the USRP FFT that do
    not appear on the HP spectrum analyzer. They appear out of the noise
    for strong input signals (-75dBm).

  4. Enclosure
    I do not have an enclosure for my USRP. This could be a problem.

  5. Others
    KD7LMO managed to record a beautiful signal (40+ C/N0) and I don’t think
    he did anything fancy except use an amplifier. I wonder if i am doing
    something boneheaded e.g. setting the gain to zero.

Q: Should I be worried about the birdie I saw?
Q: Does my hack do what I think it does?
Q: Should I be worried about these artifacts I see?
Q: What does set_gain() do on the USRP with a DBSRX board? What should
I set it to?

Thanks for your help and ideas. I am a c++ guy new to this antenna
stuff.

Thanks,

Chris

However, I cannot acquire using a USRP source_c. Please share any
tips you have.

Are you sure the antenna is getting power? (Are you using an
active patch antenna?) You would need to short J101 on the
dbs_rx to complete the 5V bias tee.

Incidentally, with the 5V in place, the board cannot survive
shorts at the antenna SMA connector—a small inductor acts
as a fuse and gets toasted. Replacing it results in good operation
again, though.

  1. Signal generator
    Thinking I was improperly tuning the USRP, I connected a signal
    generator to it and verified that L1 was being brought to baseband.
    However I was frightened to see some artifacts on the USRP FFT that do
    not appear on the HP spectrum analyzer. They appear out of the noise
    for strong input signals (-75dBm).

I also see some pretty strong spurs, usually at multiples of 4 MHz,
but this hasn’t hurt signal quality too much.

Q: Does my hack do what I think it does?

It sounds okay, but you could also try just giving a frequency of
1575.6, which will result in the same R and N.

Q: What does set_gain() do on the USRP with a DBSRX board? What
should I set it to?

I’ve been using a gain of 92, which gives a signal strong
enough so that sending only the most-significant 8 bits
over USB still results in a good signal. You might try
several different gain values; if you’re not setting the gain
at all, that’s probably a problem.

Have you tried the usrp_rx_cfile.py application to dump a file
similar to KD7LMO’s? For example,

./usrp_rx_cfile.py -g 92 -R a -d 8 -f 1.57542G -N 100M -s -8 >gps.usrp

Since you’ve successfully acquired satellites with the KD7LMO
files, this may not be an issue, but it might be good to specify
a large Doppler search range for the acquisition step (say ± 50 kHz),
consistent with the 50ppm absolute accuracy of the USRP’s LO.

Cheers,
Peter M.