pothosware / SoapyRTLSDR

SoapySDR RTL-SDR Support Module
https://github.com/pothosware/SoapyRTLSDR/wiki
MIT License
124 stars 29 forks source link

I can't obtain Herz-accurate tuning even with a GSPDO driven RTL-SDR V3 #53

Closed rrobinett closed 3 years ago

rrobinett commented 3 years ago

In order to simplify the deployment of VHF/UHF WSPR reporting sites, I am trying to use librtlsdr to tune to those 200 Hz wide bands. However I find that the USB audio output tone frequencies are off by 100's of hz from the 1000 hz I expect when tuning 1000 hz below a GPSDO stabilized reference carrier.

I have enabled the VCO diagnostic printout in pothoware/librtlsdr and the tone errors don't correlate with the tuning_error printouts. Even if these tuning errors cannot be avoided due to the chip architecture, If I knew the actual error I could frequency shift the audio file.

The ability to use RTL-SDRs for VHF/UHF should greatly enhance the number of such WSPR monitoring stations and hopefully lead to greater insights into RF propagation at those frequencies, and I'm ready to follow any path to a solution.

Thanks for any help and suggestions,

Rob AI6VN

`rob@Wsprdaemon-Thinkcenter:~/rtltest$ ~/librtlsdr/build/src/rtl_fm -R 5 -f 575999000 -M usb | sox -r 24k -t raw -e s -b 16 -c 1 - 1000-hz.wav Found 1 device(s): 0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM Found Rafael Micro R820T/2 tuner [R82XX] requested 56000000 Hz; selected mix_div=32 vco_freq=1792000000 nint=31 sdm=7282; actual_vco=1792000195; tuning error=+6Hz Tuner gain set to automatic. [R82XX] requested 57925000 Hz; selected mix_div=32 vco_freq=1853600000 nint=32 sdm=11833; actual_vco=1853600097; tuning error=+3Hz Bandwidth set to automatic resulted in 290000 Hz. [R82XX] requested 577672000 Hz; selected mix_div=4 vco_freq=2310688000 nint=40 sdm=7609; actual_vco=2310687597; tuning error=-100Hz Tuned to 575.747000 MHz. Oversampling input by: 42x. Oversampling output by: 1x. Buffer size: 8.13ms Exact sample rate is: 1008000.009613 Hz [R82XX] requested 577952000 Hz; selected mix_div=4 vco_freq=2311808000 nint=40 sdm=8884; actual_vco=2311808203; tuning error=+50Hz Sampling at 1008000 S/s. Output at 24000 Hz. Allocating 15 zero-copy buffers Time expired, exiting!

User cancel, exiting... rob@Wsprdaemon-Thinkcenter:~/rtltest$ sox 1000-hz.wav -n stat -freq |& grep Rough Rough frequency: 4217 rob@Wsprdaemon-Thinkcenter:~/rtltest$`

rrobinett commented 3 years ago

Upon further investigation I have found this in not a Soapy problem but one in the librtlsdr, see: https://github.com/steve-m/librtlsdr/pull/10