A while back I was trying to receive AIS (ship traffic, bit like radar) messages with a rtl_sdr stick. Those are around 160 MHz or so, but need an extremely precise frequency setting. Using rtl_fm and aisdecoder to receive those did not work until I used the parts per million correction in rtl_fm, experimentally found out (used a loop that incremented it, let it run all night, and then found the best reception value possible from that, and programmed it in the scripts).
Now yesterday I was trying to get the Raspberry Pi PLL (500 MHz source) to make a precise9.something MHz for the 2.4 GHz /256 prescaler phase comparator in the DVB-S transmitter. So one can set output frequency on the command line. Any error is multiplied by 256, there is also the fractional divider 'wobble', got to about 6 kHz steps, but needed to be absolutely sure about the exact frequency. As I use the freq256 program:
So I added the basically one line of code, and measured my Rubidium standard with it:
The amazing thing is that after 30 minutes with warming and cooling by the sun on it and than no sun etc (clouds passing) it still shows 10,000,000. OK I did some fine adjustment of the capacitors in the crystal 2 years ago, but very impressive indeed.
Yesterday added the ppm correction to the Raspberry DVB-S program:
As things are moving maybe later I will release the modified sources.6 kHz accuracy is enough for the DVB-S transmitter at 2.4 GHz, it is not very good if I want to do SSB on the sats narrow band transponder... That would need an FPGA ..
Adding one line of code versus a trimmer...
Its later now: freq256 is now updated on the website:
Also released a new version of freq_pi:
The ts2iq_pi program and hardware is here:
But this program also has the -y parts per million correction option now.