Project

General

Profile

Rtl-sdr » History » Version 137

« Previous - Version 137/187 (diff) - Next » - Current version
horiz0n, 02/19/2016 10:51 PM


PageOutline = rtl-sdr =

DVB-T dongles based on the Realtek RTL2832U can be used as a cheap SDR, since the chip allows transferring the raw I/Q samples to the host, which is officially used for DAB/DAB+/FM demodulation. The possibility of this has been discovered by the V4L/DVB kernel developer [http://thread.gmane.org/gmane.linux.drivers.video-input-infrastructure/44461/focus=44461 Antti Palosaari].

Specifications

The RTL2832U outputs 8-bit I/Q-samples, and the highest theoretically possible sample-rate is 3.2 MS/s, however, the highest sample-rate without lost samples that has been tested so far is 2.8 MS/s. The frequency range is highly dependent of the used tuner, '''dongles that use the Elonics E4000 offer the widest possible range (64 - 1700 MHz with a gap from approx. 1100 - 1250 MHz)'''. When used out-of-spec, a tuning range of approx. 50 MHz - 2.2 GHz is possible (with gap).

'''Tuner''' '''Frequency range'''
Elonics E4000 52 - 2200 MHz with a gap from 1100 MHz to 1250 MHz (varies)
Rafael Micro R820T 24 - 1766 MHz
Fitipower FC0013 22 - 1100 MHz (FC0013B/C, FC0013G has a separate L-band input, which is unconnected on most sticks)
Fitipower FC0012 22 - 948.6 MHz
FCI FC2580 146 - 308 MHz and 438 - 924 MHz (gap in between)
Supported Hardware

The following devices are known to work fine with RTLSDR software:

'''VID''' '''PID''' '''tuner''' '''device name'''
0x0bda 0x2832 all of them Generic RTL2832U (e.g. hama nano)
0x0bda 0x2838 E4000 ezcap USB 2.0 DVB-T/DAB/FM dongle
0x0ccd 0x00a9 FC0012 Terratec Cinergy T Stick Black (rev 1)
0x0ccd 0x00b3 FC0013 Terratec NOXON DAB/DAB+ USB dongle (rev 1)
0x0ccd 0x00d3 E4000 Terratec Cinergy T Stick RC (Rev.3)
0x0ccd 0x00e0 E4000 Terratec NOXON DAB/DAB+ USB dongle (rev 2)
0x185b 0x0620 E4000 Compro Videomate U620F
0x185b 0x0650 E4000 Compro Videomate U650F
0x1f4d 0xb803 FC0012 GTek T803
0x1f4d 0xc803 FC0012 Lifeview LV5TDeluxe
0x1b80 0xd3a4 FC0013 Twintech UT-40
0x1d19 0x1101 FC2580 Dexatek DK DVB-T Dongle (Logilink VG0002A)
0x1d19 0x1102 ? Dexatek DK DVB-T Dongle (MSI DigiVox mini II V3.0)
0x1d19 0x1103 FC2580 Dexatek Technology Ltd. DK 5217 DVB-T Dongle
0x0458 0x707f ? Genius TVGo DVB-T03 USB dongle (Ver. B)
0x1b80 0xd393 FC0012 GIGABYTE GT-U7300
0x1b80 0xd394 ? DIKOM USB-DVBT HD
0x1b80 0xd395 FC0012 Peak 102569AGPK
0x1b80 0xd39d FC0012 SVEON STV20 DVB-T USB & FM

If you don't know where to buy one or if you are just looking for a trustworthy source, try http://shop.sysmocom.de/t/software-defined-radio

People over at reddit [http://www.reddit.com/r/RTLSDR/comments/s6ddo/rtlsdr_compatibility_list_v2_work_in_progress/ are collecting a list (v2)] of other devices that are compatible.

Other dongles based on the RTL2832U might be added in the future as well.

This is the PCB of the ezcap-stick:brbr
Image(ezcap_top.jpg,50%)br
More pictures can be found [http://www.steve-m.de/pictures/rtl-sdr/ here].

Software

rtl-sdr is a commandline tool that can initialize the RTL2832, tune to a given frequency, and record the I/Q-samples to a file.

The code can be checked out with: {{{
git clone git://git.osmocom.org/rtl-sdr.git
}}}

It can also be browsed on http://cgit.osmocom.org/cgit/rtl-sdr/

If you are going to "fork it on github" and enhance it, please contribute back and submit your patches to: osmocom-sdr at lists.osmocom.org

A [http://cgit.osmocom.org/cgit/gr-osmosdr/ GNU Radio source block] for [http://sdr.osmocom.org/trac/ OsmoSDR] '''and rtlsdr''' is available. '''Please install a recent gnuradio (>= v3.5.3) in order to be able to use it.'''

=== Mailing List ===

We discuss both OsmoSDR as well as rtl-sdr on the following mailing list: [mailto:].

You can subscribe and/or unsubscribe via the following link: [http://lists.osmocom.org/mailman/listinfo/osmocom-sdr]

=== Building the software ===

==== rtlsdr library & capture tool ====

'''You have to install development packages for libusb1.0''' and can either use cmake or autotools to build the software.

Please note: prior pulling a new version from git and compiling it, please do a "make uninstall" first to properly remove the previous version.

Building with cmake: {{{
cd rtl-sdr/
mkdir build
cd build
cmake ../
make
sudo make install
sudo ldconfig
}}}

In order to be able to use the dongle as a non-root user, you may install the appropriate udev rules file by calling cmake with -DINSTALL_UDEV_RULES=ON argument in the above build steps. {{{
cmake ../ -DINSTALL_UDEV_RULES=ON
}}}

Building with autotools: {{{
cd rtl-sdr/
autoreconf -i
./configure
make
sudo make install
sudo ldconfig
}}}

The built executables (rtl_sdr, rtl_tcp and rtl_test) can be found in rtl-sdr/src/.

In order to be able to use the dongle as a non-root user, you may install the appropriate udev rules file by calling {{{
sudo make install-udev-rules
}}}

[RelWithDebInfo.zip pre-built Windows version] using libusb 1.0.9 and pthreads-win32 cvs

==== Gnuradio Source ====

'''The gnuradio source requires the rtl-sdr package and a recent gnuradio (>= v3.5.3) to be installed.'''

The source supports direct device operation as well as a tcp client mode when using the rtl_tcp utility as a spectrum server.

Please note: prior pulling a new version from git and compiling it, please do a "make uninstall" first to properly remove the previous version.

Please note: you always should build & '''install the latest version of the dependencies (librtlsdr in this case)''' before trying to build the gr source.

Building with cmake: {{{
git clone git://git.osmocom.org/gr-osmosdr
cd gr-osmosdr/
mkdir build
cd build/
cmake ../
make
sudo make install
sudo ldconfig
}}}

NOTE: The source block (osmosdr/rtlsdr Source) will appear under 'Sources' category in GRC menu.

For initial tests we recommend the multimode receiver gnuradio companion flowgraph (see "Known Apps" table below).

You may find more detailed installation instructions in this recent [http://blog.opensecurityresearch.com/2012/06/getting-started-with-gnu-radio-and-rtl.html tutorial].

==== Automated installation ====

Marcus D. Leech has kindly integrated the forementioned build steps into his gnuradio installation script at [http://www.sbrac.org/files/build-gnuradio]. This is the most user-friendly option so far.

=== Usage ===

==== rtl_sdr ====

Example: To tune to 392.0 MHz, and set the sample-rate to 1.8 MS/s, use:

{{{
./rtl_sdr /tmp/capture.bin -s 1.8e6 -f 392e6
}}}

to record samples to a file or to forward the data to a fifo.

If the device can't be opened, make sure you have the appropriate rights to access the device (install udev-rules from the repository, or run it as root).

==== rtl_tcp ====

Example:

{{{
rtl_tcp -a 10.0.0.2 [-p listen port (default: 1234)]
Found 1 device(s).
Found Elonics E4000 tuner
Using Generic RTL2832U (e.g. hama nano)
Tuned to 100000000 Hz.
listening...
Use the device argument 'rtl_tcp=10.0.0.2:1234' in OsmoSDR (gr-osmosdr) source
to receive samples in GRC and control rtl_tcp parameters (frequency, gain, ...).
}}}

use the rtl_tcp=... device argument in gr-osmosdr source to receive the samples in GRC and control the rtl settings remotely.

This application has been successfully crosscompiled for ARM and MIPS devices and is providing IQ data in a networked ADS-B setup at a rate of 2.4MSps. The gr-osmosdr source is being used together with an optimized gr-air-modes version (see Known Apps below).
You can find a Makefile for OpenWRT [http://steve-m.de/projects/rtl-sdr/Makefile here].

A use case is described [https://sites.google.com/site/embrtlsdr/ here].

==== rtl_test ====
To check the possible tuning range (may heavily vary by some MHz depending on device and temperature), call {{{
rtl_test -t
}}}

To check the maximum samplerate possible on your machine, type (change the rate down until no sample loss occurs): {{{
rtl_test -s 3.2e6
}}}
A samplerate of 2.4e6 is known to work even over tcp connections (see rtl_tcp above). A sample rate of 2.88e6 may work without lost samples but this may depend on your PC/Laptop's host interface.

Using the data

To convert the data to a standard cfile, following GNU Radio Block can be used:br
brImage(rtl2832-cfile.png)brbr
The GNU Radio Companion flowgraph (rtl2832-cfile.grc) is attached to this page. It is based on the FM demodulation flowgraph posted by Alistair Buxton [http://thread.gmane.org/gmane.linux.drivers.video-input-infrastructure/44461/focus=44525 on this thread].

Please note: for realtime operation you may use fifos (mkfifo) to forward the iq data from the capture utility to the GRC flowgraph.

You may use any of the the following gnuradio sources (they are equivalent):
brbrImage(osmosource.png)br

What has been successfully tested so far is the reception of [https://www.cgran.org/browser/projects/multimode/trunk Broadcast FM and air traffic AM] radio, [http://tetra.osmocom.org/ TETRA], [http://gmr.osmocom.org/ GMR], [http://svn.berlin.ccc.de/projects/airprobe/ GSM], [https://www.cgran.org/wiki/gr-air-modes ADS-B] and [https://github.com/smunaut/osmo-pocsag POCSAG].

Tell us your success story with other wireless protocols in ##rtlsdr channel on freenode IRC network.

Known Apps

The following 3rd party applications and libraries are successfully using either librtlsdr directly or the corresponding gnuradio source (gr-osmosdr):

'''Name''' '''Type''' '''Author''' '''URL'''
gr-pocsag GRC Flowgraph Marcus Leech [https://www.cgran.org/browser/projects/gr-pocsag/trunk]
multimode RX (try first!) GRC Flowgraph Marcus Leech [https://www.cgran.org/browser/projects/multimode/trunk]
simple_fm_rvc GRC Flowgraph Marcus Leech [https://www.cgran.org/browser/projects/simple_fm_rcv/trunk]
python-librtlsdr Python Wrapper David Basden [https://github.com/dbasden/python-librtlsdr]
pyrtlsdr Python Wrapper Roger [https://github.com/roger-/pyrtlsdr]
rtlsdr-waterfall Python FFT GUI Kyle Keen [https://github.com/keenerd/rtlsdr-waterfall]
Wireless Temp. Sensor RX Gnuradio App Kevin Mehall [https://github.com/kevinmehall/rtlsdr-433m-sensor]
!QtRadio SDR GUI Andrea Montefusco et al. [http://napan.ca/ghpsdr3/index.php/RTL-SDR]
gqrx (fork) SDR GUI Alexandru Csete [https://github.com/mathisschmieder/gqrx]
rtl_fm SDR CLI Kyle Keen merged in librtlsdr master
SDR# SDR GUI Youssef Touil [http://sdrsharp.com/] and [http://rtlsdr.org/softwarewindows Windows Guide] or [http://rtlsdr.org/softwarelinux Linux Guide]
tetra_demod_fft Trunking RX osmocom team [http://cgit.osmocom.org/cgit/osmo-tetra/tree/src/demod/python/osmosdr-tetra_demod_fft.py osmosdr-tetra_demod_fft.py] and the [http://tetra.osmocom.org/trac/wiki/osmo-tetra#Quickexample HOWTO]
gqrx (original) SDR GUI Alexandru Csete [https://github.com/csete/gqrx]
airprobe GSM sniffer osmocom team et al [http://git.gnumonks.org/cgi-bin/gitweb.cgi?p=airprobe.git]
gr-smartnet (WIP) Trunking RX Nick Foster [br[http://www.reddit.com/r/RTLSDR/comments/vbxl0/attention_grsmartnet_users_or_attempted_users/">http://www.reddit.com/r/RTLSDR/comments/us3yo/rtlsdr_smartnet/]br[http://www.reddit.com/r/RTLSDR/comments/vbxl0/attention_grsmartnet_users_or_attempted_users/ Notes from the author]
gr-air-modes ADS-B RX Nick Foster [https://www.cgran.org/wiki/gr-air-modes] call with --rtlsdr option
Linrad SDR GUI Leif Asbrink (SM5BSZ) [brDAGC">http://www.nitehawk.com/sm5bsz/linuxdsp/hware/rtlsdr/rtlsdr.htm]brDAGC changes were applied to librtlsdr master
gr-ais (fork) AIS RX Nick FosterbrAntoine SirinellibrChristian Gagneraud [https://github.com/chgans/gr-ais]
GNSS-SDR GPS RX (Realtime!) Centre Tecnològic debrTelecomunicacions de Catalunya [http://www.gnss-sdr.org/documentation/gnss-sdr-operation-realtek-rtl2832u-usb-dongle-dvb-t-receiver Documentation] and [http://www.gnss-sdr.org]
LTE-Cell-Scanner '''(NEW)''' LTE Scanner James Peroulas [https://github.com/Evrytania/LTE-Cell-Scanner]
Simulink-RTL-SDR '''(NEW)''' MATLAB/Simulink wrapper Michael SchwallbrSebastian KoslowskibrCommunication Engineering Lab (CEL)brKarlsruhe Institute of Technology (KIT) [http://www.cel.kit.edu/simulink_rtl_sdr.php]
gr-scan '''(NEW)''' Scanner techmeology [http://www.techmeology.co.uk/gr-scan/]
kalibrate-rtl '''(NEW)''' calibration tool Joshua LackeybrAlexander ChemerisbrSteve Markgraf [https://github.com/steve-m/kalibrate-rtl], [http://rtlsdr.org/files/kalibrate-win-release.zip Windows build]
pocsag-mrt '''(NEW)''' Multichannel Realtime Decoder iZsh [https://github.com/iZsh/pocsag-mrt]

br
Using our lib? Tell us! Don't? Tell us why! :)
brbrbr
Image(rtl-sdr-gmr.png)br
Multiple GMR-carriers can be seen in a spectrum view with the full 3.2 MHz bandwidth (at 3.2 MS/s).

Credits

rtl-sdr is developed by Steve Markgraf and Dimitri Stolnikov, with contributions by Kyle Keen, Hoernchen, Christian Vogel and Harald Welte.

rtl2832-cfile.png (23.8 KB) steve-m, 03/17/2012 08:35 PM

ezcap_top.jpg - top view of the ezcap PCB (178 KB) steve-m, 03/17/2012 08:41 PM

rtl2832-cfile.grc - GRC flowgraph for the RTL2832 file format (8.56 KB) steve-m, 03/17/2012 08:45 PM

rtl-sdr-gmr.png - spectrum view of GMR carriers (42.4 KB) steve-m, 03/17/2012 09:27 PM

EZTV666.JPG - Similar but smaller EZTV 666 receiver (163 KB) laforge, 03/26/2012 06:49 PM

rtl-sdr.2.pdf - Presentation given at FreedomHEC 2012 Taipei (1.78 MB) laforge, 06/20/2012 03:08 PM

osmosource.png - gr-osmosdr sources (24.5 KB) horiz0n, 07/08/2012 09:00 AM

RelWithDebInfo.zip - - (416 KB) Hoernchen, 01/24/2014 04:33 PM