A quite good (AM/SW)/FM/DAB/DVB-T USB dongle.
Mirics FlexiTV MSi3101 (two chips MSi001+MSi2500)
http://www.mirics.comhttp://www.mirics.com/node/31
Data sheets available, register yourself at Mirics portal.
RF Tuner: MSi001/MSi002 ( used by FUNcubrePro+ ?), seems better than R820T
ADC and HiSpeed USB interface: MSi2500 . ADC 10 bit , better than
8 bit RTL2832U aDC.
Windows binary software available: FMDABplayer, DVB_T decoder,
Windows lib.dll and API doc.
IO-DATA GV-TV100 stick sold on Japan .
Stick, chips and dev board available from Mirics.
Linux software at address
http://cgit.osmocom.org/libmirisdr/
It seems project on stand-by .
Can author Steve Markgraf comment ?
Francesco
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
*>>>Please humor me. How are you determining that the gain is not being
set?*
See my previous message with Baudline captures:
~$ rtl_fm -f 89000000 -R -s 1000000 -g 0 - | baudline -stdin -samplerate
1000000 -quadrature -flipcomplex -channels 2 -format le16
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000013
Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle
Found Rafael Micro R820T tuner
Oversampling input by: 2x.
Oversampling output by: 1x.
Buffer size: 4.10ms
Tuned to 89500000 Hz.
Sampling at 2000000 Hz.
Output at 1000000 Hz.
Exact sample rate is: 2000000.052982 Hz
Tuner gain set to 0.00 dB.
Result: https://dl.dropboxusercontent.com/u/102802145/baudline0dB.jpg
~$ rtl_fm -f 89000000 -R -s 1000000 -g 30 - | baudline -stdin -samplerate
1000000 -quadrature -flipcomplex -channels 2 -format le16
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000013
Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle
Found Rafael Micro R820T tuner
Oversampling input by: 2x.
Oversampling output by: 1x.
Buffer size: 4.10ms
Tuned to 89500000 Hz.
Sampling at 2000000 Hz.
Output at 1000000 Hz.
Exact sample rate is: 2000000.052982 Hz
Tuner gain set to 29.70 dB.
Result: https://dl.dropboxusercontent.com/u/102802145/baudline30dB.jpg
GQRX, LNA gain = 0dB
Result: https://dl.dropboxusercontent.com/u/102802145/gqrx0dB.jpg
GQRX, LNA gain=30dB
Result: https://dl.dropboxusercontent.com/u/102802145/gqrx30dB.jpg
I know its very strange but I lost two days trying to make work a project
here before I realized rtl_fm was outputting only noise.
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
I'm not an RF engineer and know enough of the physics of it to be
dangerous. My approach to rtl-sdr is purely utilitarian -- i.e. using it to
develop applications. The following tutorial, by Mikael Q Kuisma, on I/Q
data was very useful to me and might benefit others on the list.
http://whiteboard.ping.se/SDR/IQ
-Skip