usrp-users@lists.ettus.com

Discussion and technical support related to USRP, UHD, RFNoC

View all threads

Doppler shift correction

MB
Marco Bosco
Sat, Jan 25, 2014 11:22 AM

Hi all!

This is my first time writing in this mailing list. I am using an USRPN210 with an SBX daughterboard as a transceiver for a satellite ground station.
I am trying to understand how to face the Doppler shift correction. Is it better to implement a frequency estimator and set the USRP centre frequency at the centre frequency of the satellite (radio amateur UHF band) or changing the USRP centre frequency using the Doppler frequency correction calculated from a satellite orbiter tracking software?
I am for the first solution but I would like to have other opinions.

Thanks,

Marco

Hi all! This is my first time writing in this mailing list. I am using an USRPN210 with an SBX daughterboard as a transceiver for a satellite ground station. I am trying to understand how to face the Doppler shift correction. Is it better to implement a frequency estimator and set the USRP centre frequency at the centre frequency of the satellite (radio amateur UHF band) or changing the USRP centre frequency using the Doppler frequency correction calculated from a satellite orbiter tracking software? I am for the first solution but I would like to have other opinions. Thanks, Marco
SB
Simon Brown
Sat, Jan 25, 2014 9:17 PM

Macro,

IMO the best way to track a satellite with any SDR is to apply the Doppler
correction to the NCO, I do this with ~ 10 updates / second when the
satellite is going overhead and the received beacon usually stays with 2Hz.

If you keep adjusting the center frequency you have to wait for changes to
take affect etc. If you use the NCO the change is immediate.

Simon Brown (G4ELI/HB9DRV)
http://v2.sdr-radio.com

From: USRP-users [mailto:usrp-users-bounces@lists.ettus.com] On Behalf Of
Marco Bosco
Sent: 25 January 2014 12:22
To: usrp-users@lists.ettus.com
Subject: [USRP-users] Doppler shift correction

Hi all!

This is my first time writing in this mailing list. I am using an USRPN210
with an SBX daughterboard as a transceiver for a satellite ground station.

I am trying to understand how to face the Doppler shift correction. Is it
better to implement a frequency estimator and set the USRP centre frequency
at the centre frequency of the satellite (radio amateur UHF band) or
changing the USRP centre frequency using the Doppler frequency correction
calculated from a satellite orbiter tracking software?

I am for the first solution but I would like to have other opinions.

Thanks,

Marco

Macro, IMO the best way to track a satellite with any SDR is to apply the Doppler correction to the NCO, I do this with ~ 10 updates / second when the satellite is going overhead and the received beacon usually stays with 2Hz. If you keep adjusting the center frequency you have to wait for changes to take affect etc. If you use the NCO the change is immediate. Simon Brown (G4ELI/HB9DRV) http://v2.sdr-radio.com From: USRP-users [mailto:usrp-users-bounces@lists.ettus.com] On Behalf Of Marco Bosco Sent: 25 January 2014 12:22 To: usrp-users@lists.ettus.com Subject: [USRP-users] Doppler shift correction Hi all! This is my first time writing in this mailing list. I am using an USRPN210 with an SBX daughterboard as a transceiver for a satellite ground station. I am trying to understand how to face the Doppler shift correction. Is it better to implement a frequency estimator and set the USRP centre frequency at the centre frequency of the satellite (radio amateur UHF band) or changing the USRP centre frequency using the Doppler frequency correction calculated from a satellite orbiter tracking software? I am for the first solution but I would like to have other opinions. Thanks, Marco
JM
John Malsbury
Sat, Jan 25, 2014 9:27 PM

Marco,

If you are doing this with GNU Radio, you can probably leave the USRP set
at the nominal frequency, and correct doppler with a signal source and
mutlplier.  A simple app/custom block could query a program like predict
and update a doppler_frequency variable via XMLRPC.

Or there a number of similar approaches...

-John

On Sat, Jan 25, 2014 at 1:17 PM, Simon Brown simon@sdr-radio.com wrote:

Macro,

IMO the best way to track a satellite with any SDR is to apply the Doppler
correction to the NCO, I do this with ~ 10 updates / second when the
satellite is going overhead and the received beacon usually stays with 2Hz.

If you keep adjusting the center frequency you have to wait for changes to
take affect etc. If you use the NCO the change is immediate.

Simon Brown (G4ELI/HB9DRV)
http://v2.sdr-radio.com

From: USRP-users [mailto:usrp-users-bounces@lists.ettus.com] *On Behalf
Of *Marco Bosco
Sent: 25 January 2014 12:22
To: usrp-users@lists.ettus.com
Subject: [USRP-users] Doppler shift correction

Hi all!

This is my first time writing in this mailing list. I am using an USRPN210
with an SBX daughterboard as a transceiver for a satellite ground station.

I am trying to understand how to face the Doppler shift correction. Is it
better to implement a frequency estimator and set the USRP centre frequency
at the centre frequency of the satellite (radio amateur UHF band) or
changing the USRP centre frequency using the Doppler frequency correction
calculated from a satellite orbiter tracking software?

I am for the first solution but I would like to have other opinions.

Thanks,

Marco


USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Marco, If you are doing this with GNU Radio, you can probably leave the USRP set at the nominal frequency, and correct doppler with a signal source and mutlplier. A simple app/custom block could query a program like predict and update a doppler_frequency variable via XMLRPC. Or there a number of similar approaches... -John On Sat, Jan 25, 2014 at 1:17 PM, Simon Brown <simon@sdr-radio.com> wrote: > Macro, > > > > IMO the best way to track a satellite with any SDR is to apply the Doppler > correction to the NCO, I do this with ~ 10 updates / second when the > satellite is going overhead and the received beacon usually stays with 2Hz. > > > > If you keep adjusting the center frequency you have to wait for changes to > take affect etc. If you use the NCO the change is immediate. > > > > Simon Brown (G4ELI/HB9DRV) > http://v2.sdr-radio.com > > > > *From:* USRP-users [mailto:usrp-users-bounces@lists.ettus.com] *On Behalf > Of *Marco Bosco > *Sent:* 25 January 2014 12:22 > *To:* usrp-users@lists.ettus.com > *Subject:* [USRP-users] Doppler shift correction > > > > Hi all! > > > > This is my first time writing in this mailing list. I am using an USRPN210 > with an SBX daughterboard as a transceiver for a satellite ground station. > > I am trying to understand how to face the Doppler shift correction. Is it > better to implement a frequency estimator and set the USRP centre frequency > at the centre frequency of the satellite (radio amateur UHF band) or > changing the USRP centre frequency using the Doppler frequency correction > calculated from a satellite orbiter tracking software? > > I am for the first solution but I would like to have other opinions. > > > > Thanks, > > > > Marco > > > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com > >
MD
Marcus D. Leech
Sat, Jan 25, 2014 9:31 PM

On 01/25/2014 04:27 PM, John Malsbury wrote:

Marco,

If you are doing this with GNU Radio, you can probably leave the USRP
set at the nominal frequency, and correct doppler with a signal source
and mutlplier.  A simple app/custom block could query a program like
predict and update a doppler_frequency variable via XMLRPC.

Or there a number of similar approaches...

-John

Or use a frequency-xlating FIR filter that is updated at an appropriate
rate and value

On 01/25/2014 04:27 PM, John Malsbury wrote: > Marco, > > If you are doing this with GNU Radio, you can probably leave the USRP > set at the nominal frequency, and correct doppler with a signal source > and mutlplier. A simple app/custom block could query a program like > predict and update a doppler_frequency variable via XMLRPC. > > Or there a number of similar approaches... > > -John > Or use a frequency-xlating FIR filter that is updated at an appropriate rate and value
MM
Marcus Müller
Sun, Jan 26, 2014 6:43 PM

Hi Marco,

assuming that during observable movement the desired bandwidth stays within the boundaries of your USRP's center frequency +- f_sample/2,
as Simon said, you could go the pure software-based approach of frequency correction on the host.
To answer your question on how to tune: The tuner on the SBX has a granulartity; it can't physically produce all real frequencies in the target band.
If you tune to a frequency that is not available to the oscillator, UHD chooses a suitable frequency in the vicinity of the target frequency and digitally mixes the signal down to shift it by the remaining frequency offset.

If you (as in case with sattelites) are able to predict the frequency shift exactly, you can of course use the suggested means of correction using variable frequency mixing.
For the sake of generality, inaccurate local oscillators etc, you could also consider a frequency correction feedback loop as supplied e.g in gr::analog::pll_carriertracking_cc;
that is basically going your second proposed way of estimating a frequency error and shifting the signal accordingly, but in software instead of in hardware.

Greetings,
Marcus

On 01/25/2014 10:27 PM, John Malsbury wrote:

Marco,

If you are doing this with GNU Radio, you can probably leave the USRP set at the nominal frequency, and correct doppler with a signal source and mutlplier.  A simple app/custom block could query a program like predict and update a doppler_frequency variable via XMLRPC.

Or there a number of similar approaches...

-John

On Sat, Jan 25, 2014 at 1:17 PM, Simon Brown <simon@sdr-radio.com mailto:simon@sdr-radio.com> wrote:

 Macro,

 IMO the best way to track a satellite with any SDR is to apply the Doppler correction to the NCO, I do this with ~ 10 updates / second when the satellite is going overhead and the received beacon usually stays with 2Hz.

 If you keep adjusting the center frequency you have to wait for changes to take affect etc. If you use the NCO the change is immediate.

 Simon Brown (G4ELI/HB9DRV)
 http://v2.sdr-radio.com

 *From:*USRP-users [mailto:usrp-users-bounces@lists.ettus.com <mailto:usrp-users-bounces@lists.ettus.com>] *On Behalf Of *Marco Bosco
 *Sent:* 25 January 2014 12:22
 *To:* usrp-users@lists.ettus.com <mailto:usrp-users@lists.ettus.com>
 *Subject:* [USRP-users] Doppler shift correction

 Hi all!

 This is my first time writing in this mailing list. I am using an USRPN210 with an SBX daughterboard as a transceiver for a satellite ground station.

 I am trying to understand how to face the Doppler shift correction. Is it better to implement a frequency estimator and set the USRP centre frequency at the centre frequency of the satellite (radio amateur UHF band) or changing the USRP centre frequency using the Doppler frequency correction calculated from a satellite orbiter tracking software?

 I am for the first solution but I would like to have other opinions.

 Thanks,

 Marco


 _______________________________________________
 USRP-users mailing list
 USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com>
 http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Hi Marco, assuming that during observable movement the desired bandwidth stays within the boundaries of your USRP's center frequency +- f_sample/2, as Simon said, you could go the pure software-based approach of frequency correction on the host. To answer your question on how to tune: The tuner on the SBX has a granulartity; it can't physically produce all real frequencies in the target band. If you tune to a frequency that is not available to the oscillator, UHD chooses a suitable frequency in the vicinity of the target frequency and digitally mixes the signal down to shift it by the remaining frequency offset. If you (as in case with sattelites) are able to predict the frequency shift exactly, you can of course use the suggested means of correction using variable frequency mixing. For the sake of generality, inaccurate local oscillators etc, you could also consider a frequency correction feedback loop as supplied e.g in gr::analog::pll_carriertracking_cc; that is basically going your second proposed way of estimating a frequency error and shifting the signal accordingly, but in software instead of in hardware. Greetings, Marcus On 01/25/2014 10:27 PM, John Malsbury wrote: > Marco, > > If you are doing this with GNU Radio, you can probably leave the USRP set at the nominal frequency, and correct doppler with a signal source and mutlplier. A simple app/custom block could query a program like predict and update a doppler_frequency variable via XMLRPC. > > Or there a number of similar approaches... > > -John > > > On Sat, Jan 25, 2014 at 1:17 PM, Simon Brown <simon@sdr-radio.com <mailto:simon@sdr-radio.com>> wrote: > > Macro, > > IMO the best way to track a satellite with any SDR is to apply the Doppler correction to the NCO, I do this with ~ 10 updates / second when the satellite is going overhead and the received beacon usually stays with 2Hz. > > If you keep adjusting the center frequency you have to wait for changes to take affect etc. If you use the NCO the change is immediate. > > Simon Brown (G4ELI/HB9DRV) > http://v2.sdr-radio.com > > *From:*USRP-users [mailto:usrp-users-bounces@lists.ettus.com <mailto:usrp-users-bounces@lists.ettus.com>] *On Behalf Of *Marco Bosco > *Sent:* 25 January 2014 12:22 > *To:* usrp-users@lists.ettus.com <mailto:usrp-users@lists.ettus.com> > *Subject:* [USRP-users] Doppler shift correction > > Hi all! > > This is my first time writing in this mailing list. I am using an USRPN210 with an SBX daughterboard as a transceiver for a satellite ground station. > > I am trying to understand how to face the Doppler shift correction. Is it better to implement a frequency estimator and set the USRP centre frequency at the centre frequency of the satellite (radio amateur UHF band) or changing the USRP centre frequency using the Doppler frequency correction calculated from a satellite orbiter tracking software? > > I am for the first solution but I would like to have other opinions. > > Thanks, > > Marco > > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com> > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com > > > > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
MB
Marco Bosco
Sun, Jan 26, 2014 7:10 PM

Thanks for your suggestions.
Does anyone can suggest a simple way to get the Doppler shift frequency calculated by a satellite tracker software (e.g. Gpredict) and pass it to GNURadio? I found this https://github.com/darkstar007/GroundStation but I am wondering if there are other solutions.
BTW using Hamlib with Gpredict, it is very easy to tune analog radio but USRP is not supported, if I am correct.

Marco
From: USRP-users [mailto:usrp-users-bounces@lists.ettus.com] On Behalf Of Marcus Müller
Sent: domenica 26 gennaio 2014 19.44
To: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] Doppler shift correction

Hi Marco,

assuming that during observable movement the desired bandwidth stays within the boundaries of your USRP's center frequency +- f_sample/2,
as Simon said, you could go the pure software-based approach of frequency correction on the host.
To answer your question on how to tune: The tuner on the SBX has a granulartity; it can't physically produce all real frequencies in the target band.
If you tune to a frequency that is not available to the oscillator, UHD chooses a suitable frequency in the vicinity of the target frequency and digitally mixes the signal down to shift it by the remaining frequency offset.

If you (as in case with sattelites) are able to predict the frequency shift exactly, you can of course use the suggested means of correction using variable frequency mixing.
For the sake of generality, inaccurate local oscillators etc, you could also consider a frequency correction feedback loop as supplied e.g in gr::analog::pll_carriertracking_cc;
that is basically going your second proposed way of estimating a frequency error and shifting the signal accordingly, but in software instead of in hardware.

Greetings,
Marcus

On 01/25/2014 10:27 PM, John Malsbury wrote:
Marco,
If you are doing this with GNU Radio, you can probably leave the USRP set at the nominal frequency, and correct doppler with a signal source and mutlplier.  A simple app/custom block could query a program like predict and update a doppler_frequency variable via XMLRPC.
Or there a number of similar approaches...

-John

On Sat, Jan 25, 2014 at 1:17 PM, Simon Brown <simon@sdr-radio.commailto:simon@sdr-radio.com> wrote:
Macro,

IMO the best way to track a satellite with any SDR is to apply the Doppler correction to the NCO, I do this with ~ 10 updates / second when the satellite is going overhead and the received beacon usually stays with 2Hz.

If you keep adjusting the center frequency you have to wait for changes to take affect etc. If you use the NCO the change is immediate.

Simon Brown (G4ELI/HB9DRV)
http://v2.sdr-radio.com

From: USRP-users [mailto:usrp-users-bounces@lists.ettus.commailto:usrp-users-bounces@lists.ettus.com] On Behalf Of Marco Bosco
Sent: 25 January 2014 12:22
To: usrp-users@lists.ettus.commailto:usrp-users@lists.ettus.com
Subject: [USRP-users] Doppler shift correction

Hi all!

This is my first time writing in this mailing list. I am using an USRPN210 with an SBX daughterboard as a transceiver for a satellite ground station.
I am trying to understand how to face the Doppler shift correction. Is it better to implement a frequency estimator and set the USRP centre frequency at the centre frequency of the satellite (radio amateur UHF band) or changing the USRP centre frequency using the Doppler frequency correction calculated from a satellite orbiter tracking software?
I am for the first solution but I would like to have other opinions.

Thanks,

Marco


USRP-users mailing list
USRP-users@lists.ettus.commailto:USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


USRP-users mailing list

USRP-users@lists.ettus.commailto:USRP-users@lists.ettus.com

http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Thanks for your suggestions. Does anyone can suggest a simple way to get the Doppler shift frequency calculated by a satellite tracker software (e.g. Gpredict) and pass it to GNURadio? I found this https://github.com/darkstar007/GroundStation but I am wondering if there are other solutions. BTW using Hamlib with Gpredict, it is very easy to tune analog radio but USRP is not supported, if I am correct. Marco From: USRP-users [mailto:usrp-users-bounces@lists.ettus.com] On Behalf Of Marcus Müller Sent: domenica 26 gennaio 2014 19.44 To: usrp-users@lists.ettus.com Subject: Re: [USRP-users] Doppler shift correction Hi Marco, assuming that during observable movement the desired bandwidth stays within the boundaries of your USRP's center frequency +- f_sample/2, as Simon said, you could go the pure software-based approach of frequency correction on the host. To answer your question on how to tune: The tuner on the SBX has a granulartity; it can't physically produce all real frequencies in the target band. If you tune to a frequency that is not available to the oscillator, UHD chooses a suitable frequency in the vicinity of the target frequency and digitally mixes the signal down to shift it by the remaining frequency offset. If you (as in case with sattelites) are able to predict the frequency shift exactly, you can of course use the suggested means of correction using variable frequency mixing. For the sake of generality, inaccurate local oscillators etc, you could also consider a frequency correction feedback loop as supplied e.g in gr::analog::pll_carriertracking_cc; that is basically going your second proposed way of estimating a frequency error and shifting the signal accordingly, but in software instead of in hardware. Greetings, Marcus On 01/25/2014 10:27 PM, John Malsbury wrote: Marco, If you are doing this with GNU Radio, you can probably leave the USRP set at the nominal frequency, and correct doppler with a signal source and mutlplier. A simple app/custom block could query a program like predict and update a doppler_frequency variable via XMLRPC. Or there a number of similar approaches... -John On Sat, Jan 25, 2014 at 1:17 PM, Simon Brown <simon@sdr-radio.com<mailto:simon@sdr-radio.com>> wrote: Macro, IMO the best way to track a satellite with any SDR is to apply the Doppler correction to the NCO, I do this with ~ 10 updates / second when the satellite is going overhead and the received beacon usually stays with 2Hz. If you keep adjusting the center frequency you have to wait for changes to take affect etc. If you use the NCO the change is immediate. Simon Brown (G4ELI/HB9DRV) http://v2.sdr-radio.com From: USRP-users [mailto:usrp-users-bounces@lists.ettus.com<mailto:usrp-users-bounces@lists.ettus.com>] On Behalf Of Marco Bosco Sent: 25 January 2014 12:22 To: usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com> Subject: [USRP-users] Doppler shift correction Hi all! This is my first time writing in this mailing list. I am using an USRPN210 with an SBX daughterboard as a transceiver for a satellite ground station. I am trying to understand how to face the Doppler shift correction. Is it better to implement a frequency estimator and set the USRP centre frequency at the centre frequency of the satellite (radio amateur UHF band) or changing the USRP centre frequency using the Doppler frequency correction calculated from a satellite orbiter tracking software? I am for the first solution but I would like to have other opinions. Thanks, Marco _______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com<mailto:USRP-users@lists.ettus.com> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com _______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com<mailto:USRP-users@lists.ettus.com> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
MD
Marcus D. Leech
Sun, Jan 26, 2014 7:14 PM

On 01/26/2014 02:10 PM, Marco Bosco wrote:

Thanks for your suggestions.

Does anyone can suggest a simple way to get the Doppler shift
frequency calculated by a satellite tracker software (e.g. Gpredict)
and pass it to GNURadio? I found this
https://github.com/darkstar007/GroundStation but I am wondering if
there are other solutions.

BTW using Hamlib with Gpredict, it is very easy to tune analog radio
but USRP is not supported, if I am correct.

Marco

**

This is really a question for the discuss-gnuradio mailing list, not here.

But Gnu Radio supports both XMLRPC and ControlPort, either mechanism
could easily allow an external application to set parameters within
a running flow-graph.

--
Marcus Leech
Principal Investigator
Shirleys Bay Radio Astronomy Consortium
http://www.sbrac.org

On 01/26/2014 02:10 PM, Marco Bosco wrote: > > Thanks for your suggestions. > > Does anyone can suggest a simple way to get the Doppler shift > frequency calculated by a satellite tracker software (e.g. Gpredict) > and pass it to GNURadio? I found this > https://github.com/darkstar007/GroundStation but I am wondering if > there are other solutions. > > BTW using Hamlib with Gpredict, it is very easy to tune analog radio > but USRP is not supported, if I am correct. > > Marco > > ** This is really a question for the discuss-gnuradio mailing list, not here. But Gnu Radio supports both XMLRPC and ControlPort, either mechanism could easily allow an external application to set parameters within a running flow-graph. -- Marcus Leech Principal Investigator Shirleys Bay Radio Astronomy Consortium http://www.sbrac.org
PT
Patrik Tast
Mon, Jan 27, 2014 5:12 AM

You can find in the predict library how it is calculated (gpredict use
it also)
http://www.qsl.net/kd2bd/predict.html

A snip how use it, satellite elevation (over the station), -range and
-range-rate must be known:

if(sat_ele >= 0.0) {
dl = atof(downlink.c_str()); // MHz
doppler100 = -100.0e06*((sat_range_rate1000.0)/299792458.0);
delay = 1000.0
((1000.0*sat_range)/299792458.0);

 if(dl != 0.0) {
    dopp = 1.0e-08*(doppler100*dl);
    loss = 32.4+(20.0*log10(dl))+(20.0*log10(sat_range));        
    sat_rx = dl + dopp;                
    
    str_doppler.printf("RX:%.*f MHz Pathloss:%.3f dB Delay:%.3f ms",
    			downlink.Length()-4, sat_rx, loss, delay);         			
 }
 
 if(fabs(sat_range_rate) < 0.1) // Time of Closest Approach
    str_status.printf("%s TCA", mode&1 ?

"Recording":"Tracking");
else if(sat_range_rate < 0.0)  // Approaching
str_status.printf("%s approaching", mode&1 ?
"Recording":"Tracking");
else // if(sat_range_rate > 0.0) // Receding
str_status.printf("%s receding", mode&1 ?
"Recording":"Tracking");
}

Patrik

On Sun, 2014-01-26 at 19:10 +0000, Marco Bosco wrote:

Thanks for your suggestions.

Does anyone can suggest a simple way to get the Doppler shift
frequency calculated by a satellite tracker software (e.g. Gpredict)
and pass it to GNURadio? I found this
https://github.com/darkstar007/GroundStation but I am wondering if
there are other solutions.

BTW using Hamlib with Gpredict, it is very easy to tune analog radio
but USRP is not supported, if I am correct.

Marco

From: USRP-users [mailto:usrp-users-bounces@lists.ettus.com] On Behalf
Of Marcus Müller
Sent: domenica 26 gennaio 2014 19.44
To: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] Doppler shift correction

Hi Marco,

assuming that during observable movement the desired bandwidth stays
within the boundaries of your USRP's center frequency +- f_sample/2,
as Simon said, you could go the pure software-based approach of
frequency correction on the host.
To answer your question on how to tune: The tuner on the SBX has a
granulartity; it can't physically produce all real frequencies in the
target band.
If you tune to a frequency that is not available to the oscillator,
UHD chooses a suitable frequency in the vicinity of the target
frequency and digitally mixes the signal down to shift it by the
remaining frequency offset.

If you (as in case with sattelites) are able to predict the frequency
shift exactly, you can of course use the suggested means of correction
using variable frequency mixing.
For the sake of generality, inaccurate local oscillators etc, you
could also consider a frequency correction feedback loop as supplied
e.g in gr::analog::pll_carriertracking_cc;
that is basically going your second proposed way of estimating a
frequency error and shifting the signal accordingly, but in software
instead of in hardware.

Greetings,
Marcus

On 01/25/2014 10:27 PM, John Malsbury wrote:

     Marco,
     
     
     
     If you are doing this with GNU Radio, you can probably leave
     the USRP set at the nominal frequency, and correct doppler
     with a signal source and mutlplier.  A simple app/custom block
     could query a program like predict and update a
     doppler_frequency variable via XMLRPC.  
     
     
     Or there a number of similar approaches...
     
     
      
     
     
     
     -John
     
     
      
     
     
     On Sat, Jan 25, 2014 at 1:17 PM, Simon Brown
     <simon@sdr-radio.com> wrote:
     
     
             Macro,
             
              
             
             IMO the best way to track a satellite with any SDR is
             to apply the Doppler correction to the NCO, I do this
             with ~ 10 updates / second when the satellite is going
             overhead and the received beacon usually stays with
             2Hz.
             
              
             
             If you keep adjusting the center frequency you have to
             wait for changes to take affect etc. If you use the
             NCO the change is immediate.
             
              
             
             
             Simon Brown (G4ELI/HB9DRV)
             http://v2.sdr-radio.com
             
             
             
              
             
             
             From: USRP-users
             [mailto:usrp-users-bounces@lists.ettus.com] On Behalf
             Of Marco Bosco
             Sent: 25 January 2014 12:22
             To: usrp-users@lists.ettus.com
             Subject: [USRP-users] Doppler shift correction
             
             
              
             
             Hi all!
             
              
             
             This is my first time writing in this mailing list. I
             am using an USRPN210 with an SBX daughterboard as a
             transceiver for a satellite ground station.
             
             I am trying to understand how to face the Doppler
             shift correction. Is it better to implement a
             frequency estimator and set the USRP centre frequency
             at the centre frequency of the satellite (radio
             amateur UHF band) or changing the USRP centre
             frequency using the Doppler frequency correction
             calculated from a satellite orbiter tracking software?
             
             I am for the first solution but I would like to have
             other opinions.
             
              
             
             Thanks,
             
              
             
             Marco
             
              
             
             
             
             
             _______________________________________________
             USRP-users mailing list
             USRP-users@lists.ettus.com
             http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
             
     
      
     
     
     
     
     
     
     
     _______________________________________________
     USRP-users mailing list
     USRP-users@lists.ettus.com
     http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

You can find in the predict library how it is calculated (gpredict use it also) http://www.qsl.net/kd2bd/predict.html A snip how use it, satellite elevation (over the station), -range and -range-rate must be known: if(sat_ele >= 0.0) { dl = atof(downlink.c_str()); // MHz doppler100 = -100.0e06*((sat_range_rate*1000.0)/299792458.0); delay = 1000.0*((1000.0*sat_range)/299792458.0); if(dl != 0.0) { dopp = 1.0e-08*(doppler100*dl); loss = 32.4+(20.0*log10(dl))+(20.0*log10(sat_range)); sat_rx = dl + dopp; str_doppler.printf("RX:%.*f MHz Pathloss:%.3f dB Delay:%.3f ms", downlink.Length()-4, sat_rx, loss, delay); } if(fabs(sat_range_rate) < 0.1) // Time of Closest Approach str_status.printf("%s TCA", mode&1 ? "Recording":"Tracking"); else if(sat_range_rate < 0.0) // Approaching str_status.printf("%s approaching", mode&1 ? "Recording":"Tracking"); else // if(sat_range_rate > 0.0) // Receding str_status.printf("%s receding", mode&1 ? "Recording":"Tracking"); } Patrik On Sun, 2014-01-26 at 19:10 +0000, Marco Bosco wrote: > Thanks for your suggestions. > > Does anyone can suggest a simple way to get the Doppler shift > frequency calculated by a satellite tracker software (e.g. Gpredict) > and pass it to GNURadio? I found this > https://github.com/darkstar007/GroundStation but I am wondering if > there are other solutions. > > BTW using Hamlib with Gpredict, it is very easy to tune analog radio > but USRP is not supported, if I am correct. > > > > Marco > > > From: USRP-users [mailto:usrp-users-bounces@lists.ettus.com] On Behalf > Of Marcus Müller > Sent: domenica 26 gennaio 2014 19.44 > To: usrp-users@lists.ettus.com > Subject: Re: [USRP-users] Doppler shift correction > > > > > > > Hi Marco, > > assuming that during observable movement the desired bandwidth stays > within the boundaries of your USRP's center frequency +- f_sample/2, > as Simon said, you could go the pure software-based approach of > frequency correction on the host. > To answer your question on how to tune: The tuner on the SBX has a > granulartity; it can't physically produce all real frequencies in the > target band. > If you tune to a frequency that is not available to the oscillator, > UHD chooses a suitable frequency in the vicinity of the target > frequency and digitally mixes the signal down to shift it by the > remaining frequency offset. > > If you (as in case with sattelites) are able to predict the frequency > shift exactly, you can of course use the suggested means of correction > using variable frequency mixing. > For the sake of generality, inaccurate local oscillators etc, you > could also consider a frequency correction feedback loop as supplied > e.g in gr::analog::pll_carriertracking_cc; > that is basically going your second proposed way of estimating a > frequency error and shifting the signal accordingly, but in software > instead of in hardware. > > Greetings, > Marcus > > On 01/25/2014 10:27 PM, John Malsbury wrote: > > > Marco, > > > > If you are doing this with GNU Radio, you can probably leave > the USRP set at the nominal frequency, and correct doppler > with a signal source and mutlplier. A simple app/custom block > could query a program like predict and update a > doppler_frequency variable via XMLRPC. > > > Or there a number of similar approaches... > > > > > > > -John > > > > > > On Sat, Jan 25, 2014 at 1:17 PM, Simon Brown > <simon@sdr-radio.com> wrote: > > > Macro, > > > > IMO the best way to track a satellite with any SDR is > to apply the Doppler correction to the NCO, I do this > with ~ 10 updates / second when the satellite is going > overhead and the received beacon usually stays with > 2Hz. > > > > If you keep adjusting the center frequency you have to > wait for changes to take affect etc. If you use the > NCO the change is immediate. > > > > > Simon Brown (G4ELI/HB9DRV) > http://v2.sdr-radio.com > > > > > > > From: USRP-users > [mailto:usrp-users-bounces@lists.ettus.com] On Behalf > Of Marco Bosco > Sent: 25 January 2014 12:22 > To: usrp-users@lists.ettus.com > Subject: [USRP-users] Doppler shift correction > > > > > Hi all! > > > > This is my first time writing in this mailing list. I > am using an USRPN210 with an SBX daughterboard as a > transceiver for a satellite ground station. > > I am trying to understand how to face the Doppler > shift correction. Is it better to implement a > frequency estimator and set the USRP centre frequency > at the centre frequency of the satellite (radio > amateur UHF band) or changing the USRP centre > frequency using the Doppler frequency correction > calculated from a satellite orbiter tracking software? > > I am for the first solution but I would like to have > other opinions. > > > > Thanks, > > > > Marco > > > > > > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com > > > > > > > > > > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com > > > > > > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
MD
Marcus D. Leech
Mon, Jan 27, 2014 5:16 AM

On 01/27/2014 12:12 AM, Patrik Tast wrote:

You can find in the predict library how it is calculated (gpredict use
it also)
http://www.qsl.net/kd2bd/predict.html

A snip how use it, satellite elevation (over the station), -range and
-range-rate must be known:

if(sat_ele >= 0.0) {
dl = atof(downlink.c_str()); // MHz
doppler100 = -100.0e06*((sat_range_rate1000.0)/299792458.0);
delay = 1000.0
((1000.0*sat_range)/299792458.0);

  if(dl != 0.0) {
     dopp = 1.0e-08*(doppler100*dl);
     loss = 32.4+(20.0*log10(dl))+(20.0*log10(sat_range));
     sat_rx = dl + dopp;

     str_doppler.printf("RX:%.*f MHz Pathloss:%.3f dB Delay:%.3f ms",
     downlink.Length()-4, sat_rx, loss, delay);
  }

  if(fabs(sat_range_rate) < 0.1) // Time of Closest Approach
     str_status.printf("%s TCA", mode&1 ? "Recording":"Tracking");
  else if(sat_range_rate < 0.0)  // Approaching
     str_status.printf("%s approaching", mode&1 ? 

"Recording":"Tracking");
else // if(sat_range_rate > 0.0) // Receding
str_status.printf("%s receding", mode&1 ?
"Recording":"Tracking");
}

Patrik
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

I do something vaguely similar in simple_ra these days--you can enable
automatic fringe-stopping, and it uses various calculations to update
the fringe rotator, but it all runs inside the same GRC-based app.

On 01/27/2014 12:12 AM, Patrik Tast wrote: > You can find in the predict library how it is calculated (gpredict use > it also) > http://www.qsl.net/kd2bd/predict.html > > A snip how use it, satellite elevation (over the station), -range and > -range-rate must be known: > > if(sat_ele >= 0.0) { > dl = atof(downlink.c_str()); // MHz > doppler100 = -100.0e06*((sat_range_rate*1000.0)/299792458.0); > delay = 1000.0*((1000.0*sat_range)/299792458.0); > > if(dl != 0.0) { > dopp = 1.0e-08*(doppler100*dl); > loss = 32.4+(20.0*log10(dl))+(20.0*log10(sat_range)); > sat_rx = dl + dopp; > > str_doppler.printf("RX:%.*f MHz Pathloss:%.3f dB Delay:%.3f ms", > downlink.Length()-4, sat_rx, loss, delay); > } > > if(fabs(sat_range_rate) < 0.1) // Time of Closest Approach > str_status.printf("%s TCA", mode&1 ? "Recording":"Tracking"); > else if(sat_range_rate < 0.0) // Approaching > str_status.printf("%s approaching", mode&1 ? > "Recording":"Tracking"); > else // if(sat_range_rate > 0.0) // Receding > str_status.printf("%s receding", mode&1 ? > "Recording":"Tracking"); > } > > Patrik > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com I do something vaguely similar in simple_ra these days--you can enable automatic fringe-stopping, and it uses various calculations to update the fringe rotator, but it all runs inside the same GRC-based app.
MB
Martin Braun
Mon, Jan 27, 2014 8:42 AM

On 01/26/2014 08:14 PM, Marcus D. Leech wrote:

On 01/26/2014 02:10 PM, Marco Bosco wrote:

Thanks for your suggestions.

Does anyone can suggest a simple way to get the Doppler shift
frequency calculated by a satellite tracker software (e.g. Gpredict)
and pass it to GNURadio? I found this
https://github.com/darkstar007/GroundStation
https://github.com/darkstar007/GroundStation but I am wondering if
there are other solutions.

BTW using Hamlib with Gpredict, it is very easy to tune analog radio
but USRP is not supported, if I am correct.

You could also access the Gpredict values from within a block and pass
them to processing.

MB

On 01/26/2014 08:14 PM, Marcus D. Leech wrote: > On 01/26/2014 02:10 PM, Marco Bosco wrote: >> >> Thanks for your suggestions. >> >> Does anyone can suggest a simple way to get the Doppler shift >> frequency calculated by a satellite tracker software (e.g. Gpredict) >> and pass it to GNURadio? I found this >> https://github.com/darkstar007/GroundStation >> <https://github.com/darkstar007/GroundStation> but I am wondering if >> there are other solutions. >> >> BTW using Hamlib with Gpredict, it is very easy to tune analog radio >> but USRP is not supported, if I am correct. You could also access the Gpredict values from within a block and pass them to processing. MB