This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/osmocom-sdr@lists.osmocom.org/.
Nuno Gonçalves nunojpg at gmail.comrtlsdr in async mode is returning buffers full with data from previous calls. I noticed that sometimes the first async callbacks would return TOO QUICKLY so that it would be impossible to have sampled that data. This might be because lib-usb have previous transfers submitted and not cleared? I compiled rtl_test with a small modification that will print the sampling time if it is much lower than expected. BUF_LENGTH is (16 * 16384)=256K, and SAMPLE_RATE is 2048000, so a full buffer should take about 64ms. You can see that in this example the async callback is returned after 7.79ms (and the following one 1.47ms later). So the data must be old. The ns printf nuno at ubuntu:~/Desktop/rtl-sdr/build/src$ ./rtl_test -p Found 1 device(s): 0: ezcap USB 2.0 DVB-T/DAB/FM dongle Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle Found Rafael Micro R820T tuner Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 Reporting PPM error measurement every 10 seconds... Press ^C after a few minutes. Reading samples in async mode... ERROR ns: 7791886 ERROR ns: 9259301 lost at least 185 bytes real sample rate: 2073369 real sample rate: 2048190 ^CSignal caught, exiting! User cancel, exiting... Cumulative PPM error: -289 The modifications to demonstrate the issue: nuno at ubuntu:~/Desktop/rtl-sdr/src$ git diff diff --git a/src/rtl_test.c b/src/rtl_test.c index f5a56b8..1935bfb 100644 --- a/src/rtl_test.c +++ b/src/rtl_test.c @@ -138,9 +138,11 @@ static void rtlsdr_callback(unsigned char *buf, uint32_t le ppm_now.tv_sec = tv.tv_sec; ppm_now.tv_nsec = tv.tv_usec*1000; #endif - if (ppm_now.tv_sec - ppm_recent.tv_sec > PPM_DURATION) { - ns = 1000000000L * (int64_t)(ppm_now.tv_sec - ppm_recent.tv_sec) - ns += (int64_t)(ppm_now.tv_nsec - ppm_recent.tv_nsec); + ns = 1000000000L * (int64_t)(ppm_now.tv_sec - ppm_recent.tv_sec); + ns += (int64_t)(ppm_now.tv_nsec - ppm_recent.tv_nsec); + if(ns<60000000) + printf("ERROR ns: %9lld\n",ns); + if (ppm_now.tv_sec - ppm_recent.tv_sec > PPM_DURATION) { printf("real sample rate: %i\n", (int)((1000000000L * ppm_count / 2L) / ns)); #ifndef __APPLE__ Nuno