Discussion and technical support related to USRP, UHD, RFNoC
View all threadsHi 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
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
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
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
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
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
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
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/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