Originally Posted by
Oldfan
I'm pleased that the Windows version supports RTL-SDR V4, but during testing, I encountered a very low accuracy issue when using an RCHourglass transponder.
However, dpereda doesn't have this problem (
https://github.com/dpereda/openstint...rtlsdr-support).
The following information suggests that heating the ceramic oscillating crystal with a soldering iron improves the accuracy after frequency shifting.
I also experienced very low accuracy with an RCHourglass transponder using a quartz oscillating crystal, but the frequency shift rate after heating was too low to cause any change.
P 245987 AMB 6170831 0.36 3 0
P 246169 AMB 9054415 -0.33 2 0
S 248093 -13.887955 0.6209385 1619 13
Firstly, something was indeed removed, thanks for pointing this out. I'll make the modification this weekend to fix it.
However, I'd look for the problem elsewhere in your case.
1. Too much noise or amplifications
The "-13.88 dBFS" noise floor measurement is really off. it should be lower than -39.0 ideally. It can be caused by too much gain. During testing, I settled around "-g 20" for rtl-sdr; "-g 30" max.
The "0.36 dBFS" and "-0.33 dBFS" indicates the signal you received is clipping. "0 dBFS" means the signal is using the full range of the ADC. As the signal is sinusoid, there is a difference between "peak" and "rms", this value can be over 0.0 - but it shouldn't. It should be max "-3.0" imho.
2. Crystal fails to start / MCU falls back to internal oscillator
The initial symbol sync happens on the first 12 bits of the preamble, and there are about 100 bits in total. For a 90* phase shift (so decoding fails), the frequency has to differ by more than 600 ppm. My first Casio hand watch - a used from the '80s - was advertised as "max 1 second per day", which is 12 ppm. While 40+ years passed, I'd expect this level accuracy from a cheap XO today. There are orders of magnitude in difference... I guess the MCU failed to start the crystal, and fall back to some internal oscillator: when you heat the crystal, the microcontroller's temperature is changing as well.
3. You are also right
I indeed
did removed a makeshift costas loop when I fixed the symbol synchronizer. There is no good reason for the removal, I'll add it back in the coming weekend or so (I simply did not take into account the "failed crystal" case above). It can compensate for 1000+ ppm of clock differences.