Forum: GNU Radio Troubleshooting GPS on DBSRX

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Chris S. (Guest)
on 2007-04-04 13:24
(Received via mailing list)
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
Peter M. (Guest)
on 2007-04-04 20:34
(Received via mailing list)
> 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.

>
>
> 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).

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.
This topic is locked and can not be replied to.