Hi again.
I noticed a strange behaivour from RTL-SDR source in GNU-Radio 3.7.1
When sample rate is set to 900ksps, actual output sample rate is only 300
ksps.
You can check this easily connecting a RTL_SDR Source to a WX Gui FFT Sink
and a RF signal generator.
For example, on RTL-SDR Source set sample rate to 900000 and frequency to
144000000 Hz.
On the WX GUI FFT Sink, set sample rate to 900000 and base frequency to
144000000 Hz.
Now apply a signal on 144.1 MHz. The FFT Display will show it at 144.3 MHz.
Apply a signal on 144.05 MHz. The FFT Display will show it at 144.15 MHz.
Now on the WX GUI FFT Sink, set sample rate to 300000 and repeat the above
steps. The signal will be displayed at its right places.
Interestingly, setting sample rate to 1Msps works fine.
Tested with both E4000 and R820T dongles.
Any advice?
Thank you!
Hello!
I noticed a problem with rtl_fm and r820t tuners. In few words, it doesn't
matter what value of gain you set with the -g parameter. The r820t tuner
will be always at its lower gain, this is deaf as a doorknob.
Otherwise, the same dongles works fine with GNU Radio or GQRX for example,
and gain can be set without problems.
rtl_fm gain works nicely on e4k tuners.
Someone else have noticed this?
Hello,
Make ouputs the following error messages when building the latest commit
of gr-osmocomsdr [rev:0d10f5e9bc950d6d2b3c39ae574e2d325a0fbeb6]
$ make
Scanning dependencies of target gnuradio-osmosdr
[ 2%] Building CXX object
lib/CMakeFiles/gnuradio-osmosdr.dir/source_impl.cc.o
[ 5%] Building CXX object lib/CMakeFiles/gnuradio-osmosdr.dir/sink_impl.cc.o
[ 8%] Building CXX object lib/CMakeFiles/gnuradio-osmosdr.dir/ranges.cc.o
[ 11%] Building CXX object lib/CMakeFiles/gnuradio-osmosdr.dir/device.cc.o
[ 13%] Building CXX object
lib/CMakeFiles/gnuradio-osmosdr.dir/fcd/fcd_source_c.cc.o
[ 16%] Building CXX object
lib/CMakeFiles/gnuradio-osmosdr.dir/file/file_source_c.cc.o
[ 19%] Building CXX object
lib/CMakeFiles/gnuradio-osmosdr.dir/rtl/rtl_source_c.cc.o
/home/joel/src/gr-osmosdr/lib/rtl/rtl_source_c.cc: In member function
‘virtual osmosdr::freq_range_t rtl_source_c::get_freq_range(size_t)’:
/home/joel/src/gr-osmosdr/lib/rtl/rtl_source_c.cc:467:26: error:
‘RTLSDR_TUNER_R828D’ was not declared in this scope
} else if ( tuner == RTLSDR_TUNER_R828D ) {
^
make[2]: *** [lib/CMakeFiles/gnuradio-osmosdr.dir/rtl/rtl_source_c.cc.o]
Error 1
make[1]: *** [lib/CMakeFiles/gnuradio-osmosdr.dir/all] Error 2
make: *** [all] Error 2
OS: Fedora 19 x64
I am currently using the previous commit:
b8441496288aa319f4aeaabd9df63c58be53e916 which builds fine on my
workstation. I haven't tested the commits made between this and the
latest revisions.
Regards,
Joel
Woops, the mistake I am making is that the dongles are independent USB
devices, there is no way to synchronize each Dongle's Acquisition. This is
another reason to interface these Dongles with a BusPirate and 24bit Audio
Board.
From: osmocom-sdr-bounces(a)lists.osmocom.org
[mailto:osmocom-sdr-bounces@lists.osmocom.org] On Behalf Of Jay Salsburg
Sent: Tuesday, November 12, 2013 3:58 PM
To: osmocom-sdr(a)lists.osmocom.org
Subject: RE: multiple devices in one process?
USB 2.0 has a built-in hardware latency. If you are unwilling to go through
the trouble of special coding, be sure to use the USB Dongles alone on their
own PCI USB Card, this will minimize latency.
Hardware may be forced to respond at will if Assembly Code is used to
exercise the interfaces, utilizing acquisition calls controlled by processor
interrupts. A Real Time Clock (RTC) in internal Hardware or an external RTC
can be used to trigger Processor Interrupts initiating any function in the
(Assembly) code and attached hardware.
Using a patch will not work with any reasonable accuracy, depending on the
Hardware, (an educated guess) of a many microseconds. Patching indicates
high level control (high level language like C++, Python, etc), only low
level control will call the hardware anywhere near the timing desired. If
you are to access two different devices, their data should be both buffered
together in parallel through a first-in-first-out buffer, perhaps even with
the RTC time stamp to quantize the packets therefore allowing subsequent
coherence in post processing. In high speed audio and video interfaces, very
high speed is used, like Firewire and Thunderbolt to stream the data into
memory, eliminating most of the hardware latency you are experiencing. The
maximum acquisition rate for USB 2.0 is about 48,000 samples per second,
times 24 bit depth, times 8, and that is for a fast computer doing nothing
else but recording the data stream.
From: osmocom-sdr-bounces(a)lists.osmocom.org
[mailto:osmocom-sdr-bounces@lists.osmocom.org] On Behalf Of Michel Pelletier
Sent: Sunday, November 10, 2013 11:14 PM
To: osmocom-sdr(a)lists.osmocom.org
Subject: multiple devices in one process?
I've been thought-experimenting with capturing data from two devices and
measuring their correlation. For example, if two rtl-sdr processes are
launched to read one sample block from two devices, how closely do the two
devices' samples line up with each other in time?
I'm expecting that there will be no reliable correlation. My working theory
is that each process calls into libusb_handle_events_timeout according to
its own process schedule and that there is no way to coordinate these two
calls to happen closely enough in time for the transfers to happen in a more
synchronized fashion. Threads do not appear to be any better solution to
the problem. I'm not an expert in usb transfers, or libusb, or rtlsdr for
that matter, so I'm going only on what I can glean from reading the source
code of librtlsdr.c and libusb documentation.
libusb does say however that it can specifically handle multiple devices in
one async loop. Multiple bulk transfers can be set up to multiple devices
in one process, and one call to libusb_handle_events_* can be used to handle
those transfers. My thinking is that because the triggering event for both
samples is now the same function call in the same process, the samples will
be more synchronized, ideally down to some reliably offset of say a few
microseconds. Juha Vierinen's hard-hack to make two devices use a coherent
sample clock makes this idea even more interesting to me.
But, it doesn't look like librtlsdr can handle multiple devices. I'm game
to take a stab at a patch that can extend its functionality. But I wanted
to run this idea by the community first before spending code time on
figuring this out. Do the experts here think that there is any potential
benefit to be gained by taking this approach?
-Michel
_____
No virus found in this message.
Checked by AVG - www.avg.com
Version: 2013.0.3426 / Virus Database: 3222/6830 - Release Date: 11/12/13
_____
No virus found in this message.
Checked by AVG - www.avg.com
Version: 2013.0.3426 / Virus Database: 3222/6830 - Release Date: 11/12/13
David Jacobowitz wrote:
> So, is there any way to line up samples post-hoc?
Of course you can develop an elaborate hardware+software system to
inject, recover, and sync onto an in-band clock.
Or you could just buy hardware which already does what you need.
//Peter