The PPM parameter is set inside the SoapyRTLSDR implementation of setFrequency
:
SoapyRTLSDR never get non-zero PPM parameter (see above) :
double value = 60.0;
this->setFrequency(dir, chan, “CORR”, value);
P.S. It turns out that the reason for the incorrect setting PPM is that at the start of the source_impl.cc (gr-soapy), the PPM value is always set 0, and other PPM values take effect only when the PPM parameter is changed (see test “soapy-ppm.grc” video) .
It was possible to solve the problem by changing the order of the initial soapy commands (as it was earlier in Gnuradio v3.7) that were generated in the Python code.
Code generated by GRCC:
# Setup Frequency correction. If set to 0 internally the source block # will handle the case if no frequency correction is supported self.soapy_source_0_0.set_frequency_correction(0,ppm) self.soapy_source_0_0.set_agc(0,False) self.soapy_source_0_0.set_frequency(0,"BB",bb_freq) self.soapy_source_0_0.set_frequency(0, rx_freq - lo_offset) self.soapy_source_0_0.set_antenna(0,antenna)
The correct order of commands:
self.soapy_source_0_0.set_frequency(0, rx_freq - lo_offset) self.soapy_source_0_0.set_frequency(0,"BB",bb_freq) self.soapy_source_0_0.set_agc(0,False) self.soapy_source_0_0.set_antenna(0,antenna) # Setup Frequency correction. If set to 0 internally the source block # will handle the case if no frequency correction is supported self.soapy_source_0_0.set_frequency_correction(0,ppm)
Is it possible to ensure the correct sequence of the generated Python code for Gnuradio v3.8?
I made changes to the gr-soapy_source.block.yml (gr-soapy) file - the following code:
# Setup Frequency correction. If set to 0 internally the source block # will handle the case if no frequency correction is supported self.${id}.set_frequency_correction(0,${correction0}) % if context.get('nchan')() > 1: self.${id}.set_frequency_correction(1,${correction1}) % endif
moved to a new place following the text:
% if context.get('devname')() in ['bladerf']: self.${id}.set_gain(0,"rxvga1", ${rxvga1_gain}) self.${id}.set_gain(0,"rxvga2", ${rxvga2_gain}) % endif % endif
Thanks to changes in gr-soapy, there are no problems now.
If this really is an issue, can you please raise an issue at: https://gitlab.com/librespacefoundation/gr-soapy/-/issues
Fix is at the master branch now. Can you check if it solves the problem? I made a quick test with RTL and seems now that PPM takes effect.
It works, thank you.
Is there any RTL-SDR ppm correction now on satnogs-setup?
Many thanks all of you. Now RTL-SDR is working fine
Also many thanks @uy0ll for investigating, explaining and also providing the solution for this issue & staying around until it was fixed!