From a256775f2861f1a2001a1c1f78fa2d48a921cb1d Mon Sep 17 00:00:00 2001 From: Joris van Rantwijk Date: Thu, 9 Jan 2014 21:18:44 +0100 Subject: [PATCH] Update notes. --- NOTES.txt | 15 +++++++++++---- TODO.txt | 18 +++++++----------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/NOTES.txt b/NOTES.txt index 79211ef..3b14908 100644 --- a/NOTES.txt +++ b/NOTES.txt @@ -16,15 +16,22 @@ Casual test of ADC errors: * I/Q phase mismatch in order of 1% of sample interval With tuner in auto-gain mode, device autonomously switches between gain -settings during a run. The tuner gain seems to switch between ~ 24 dB +settings during a run. The LNA gain seems to switch between ~ 24 dB and ~ 34 dB without intermediate steps. With RTL in AGC mode, the level of the digital sample stream is normalized -to -6 dBFS. Unknown whether this is an analog or digital gain stage. -Unknown whether AGC mode is coupled to Elonics IF gain or purely -a digital thing in the RTL chip. +to -6 dB FS. +Unknown whether this is an analog or digital gain stage. Does this improve SNR or not? +At first I suspected that AGC mode may be a cooperation between the RTL and +the Elonics tuner. I thought that the RTL would monitor the level and send +digital control signals to the Elonics to dynamically change the tuner IF gain. +However that is in fact NOT what happens. (Manually changing IF gain in AGC +mode causes a brief level spike, while manually rewriting the same IF gain in +AGC mode does not have any effect). +It seems more likely that AGC is a digital gain in the downsampling filter. + Default settings in librtlsdr: Elonics LNA gain: when auto tuner gain: autonomous control with slow update otherwise gain as configured via rtlsdr_set_tuner_gain diff --git a/TODO.txt b/TODO.txt index 800ef25..7ee9a50 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,14 +1,11 @@ -* (experiment) measure raw signal with several IF gain settings - with/without AGC mode -* figure out whether AGC mode is coupled to the Elonics IF gain settings - or purely an RTL-internal thing - -* look for effect of gain on baseband SNR -* look for effect of ADC calibration on baseband SNR -* look for effect of IF bandwidth on baseband SNR - +* (experiment) measure effect of IF gain on baseband SNR +* (experiment) measure effect of IF gain linearity on baseband SNR +* (experiment) measure effect of RTL AGC mode on baseband SNR +* (experiment) measure effect of ADC calibration on baseband SNR +* (experiment) measure effect of IF bandwidth on baseband SNR +* (experiment) measure effect of IF sample rate on baseband SNR * (experiment) try if RTL AGC mode improves FM decoding -* (experiment) try if RTL2832 FIR filter can be optimized + * (feature) support 'M' 'k' suffixes for sample rates and tuning frequency * (feature) implement off-line FM decoder in Python for experimentation * (feature) implement stereo pilot pulse-per-second @@ -16,7 +13,6 @@ * (speedup) maybe replace high-order FIR downsampling filter with 2nd order butterworth followed by lower order FIR filter * figure out why we sometimes lose stereo lock * it looks like IF level sometimes varies so much that it saturates the receiver; perhaps this can be solved by dynamically managing the hardware gain in response to level measurements -* investigate problem at low IF sample rates; it seems that librtlsdr is not telling the truth about the actual sample rate. * (quality) figure out if I/Q balance can improve weak stations * (quality) figure out if hardware gain settings can improve weak stations * (feature) implement RDS decoding