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:
-
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. -
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 -
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). -
Enclosure
I do not have an enclosure for my USRP. This could be a problem. -
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