Rtl-sdr » History » Version 139
horiz0n, 02/19/2016 10:51 PM
1 | 1 | steve-m | [[PageOutline]] |
---|---|---|---|
2 | = rtl-sdr = |
||
3 | |||
4 | 30 | horiz0n | 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]. |
5 | 1 | steve-m | |
6 | == Specifications == |
||
7 | |||
8 | 83 | horiz0n | 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). |
9 | 1 | steve-m | |
10 | 136 | steve-m | ||'''Tuner'''||'''Frequency range'''|| |
11 | ||Elonics E4000|| 52 - 2200 MHz with a gap from 1100 MHz to 1250 MHz (varies)|| |
||
12 | ||Rafael Micro R820T||24 - 1766 MHz|| |
||
13 | ||Fitipower FC0013||22 - 1100 MHz (FC0013B/C, FC0013G has a separate L-band input, which is unconnected on most sticks)|| |
||
14 | ||Fitipower FC0012||22 - 948.6 MHz|| |
||
15 | ||FCI FC2580||146 - 308 MHz and 438 - 924 MHz (gap in between)|| |
||
16 | |||
17 | 1 | steve-m | == Supported Hardware == |
18 | |||
19 | 45 | horiz0n | The following devices are known to work fine with RTLSDR software: |
20 | 1 | steve-m | |
21 | 43 | steve-m | ||'''VID'''||'''PID'''||'''tuner'''||'''device name'''|| |
22 | 42 | Hoernchen | ||0x0bda||0x2832||all of them||Generic RTL2832U (e.g. hama nano)|| |
23 | ||0x0bda||0x2838||E4000||ezcap USB 2.0 DVB-T/DAB/FM dongle|| |
||
24 | ||0x0ccd||0x00a9||FC0012||Terratec Cinergy T Stick Black (rev 1)|| |
||
25 | 49 | Hoernchen | ||0x0ccd||0x00b3||FC0013||Terratec NOXON DAB/DAB+ USB dongle (rev 1)|| |
26 | 42 | Hoernchen | ||0x0ccd||0x00d3||E4000||Terratec Cinergy T Stick RC (Rev.3)|| |
27 | ||0x0ccd||0x00e0||E4000||Terratec NOXON DAB/DAB+ USB dongle (rev 2)|| |
||
28 | ||0x185b||0x0620||E4000||Compro Videomate U620F|| |
||
29 | ||0x185b||0x0650||E4000||Compro Videomate U650F|| |
||
30 | ||0x1f4d||0xb803||FC0012||GTek T803|| |
||
31 | ||0x1f4d||0xc803||FC0012||Lifeview LV5TDeluxe|| |
||
32 | ||0x1b80||0xd3a4||FC0013||Twintech UT-40|| |
||
33 | ||0x1d19||0x1101||FC2580||Dexatek DK DVB-T Dongle (Logilink VG0002A)|| |
||
34 | ||0x1d19||0x1102||?||Dexatek DK DVB-T Dongle (MSI DigiVox mini II V3.0)|| |
||
35 | ||0x1d19||0x1103||FC2580||Dexatek Technology Ltd. DK 5217 DVB-T Dongle|| |
||
36 | ||0x0458||0x707f||?||Genius TVGo DVB-T03 USB dongle (Ver. B)|| |
||
37 | ||0x1b80||0xd393||FC0012||GIGABYTE GT-U7300|| |
||
38 | ||0x1b80||0xd394||?||DIKOM USB-DVBT HD|| |
||
39 | ||0x1b80||0xd395||FC0012||Peak 102569AGPK|| |
||
40 | ||0x1b80||0xd39d||FC0012||SVEON STV20 DVB-T USB & FM|| |
||
41 | 14 | steve-m | |
42 | 117 | horiz0n | 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 |
43 | 38 | Hoernchen | |
44 | 31 | horiz0n | 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. |
45 | 2 | steve-m | |
46 | 30 | horiz0n | Other dongles based on the RTL2832U might be added in the future as well. |
47 | 5 | steve-m | |
48 | This is the PCB of the ezcap-stick:[[br]][[br]] |
||
49 | [[Image(ezcap_top.jpg,50%)]][[br]] |
||
50 | More pictures can be found [http://www.steve-m.de/pictures/rtl-sdr/ here]. |
||
51 | 2 | steve-m | |
52 | == Software == |
||
53 | |||
54 | 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. |
||
55 | |||
56 | The code can be checked out with: |
||
57 | {{{ |
||
58 | git clone git://git.osmocom.org/rtl-sdr.git |
||
59 | }}} |
||
60 | 35 | horiz0n | |
61 | 1 | steve-m | It can also be browsed on http://cgit.osmocom.org/cgit/rtl-sdr/ |
62 | 45 | horiz0n | |
63 | 48 | horiz0n | 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 |
64 | 1 | steve-m | |
65 | 56 | horiz0n | 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.''' |
66 | 41 | horiz0n | |
67 | 131 | laforge | === Mailing List === |
68 | |||
69 | We discuss both OsmoSDR as well as rtl-sdr on the following mailing list: [mailto:osmocom-sdr@lists.osmocom.org]. |
||
70 | |||
71 | You can subscribe and/or unsubscribe via the following link: [http://lists.osmocom.org/mailman/listinfo/osmocom-sdr] |
||
72 | |||
73 | 1 | steve-m | === Building the software === |
74 | |||
75 | 27 | horiz0n | ==== rtlsdr library & capture tool ==== |
76 | 1 | steve-m | |
77 | 29 | horiz0n | '''You have to install development packages for libusb1.0''' and can either use cmake or autotools to build the software. |
78 | 27 | horiz0n | |
79 | Please note: prior pulling a new version from git and compiling it, please do a "make uninstall" first to properly remove the previous version. |
||
80 | |||
81 | 19 | steve-m | Building with cmake: |
82 | {{{ |
||
83 | 1 | steve-m | cd rtl-sdr/ |
84 | 20 | horiz0n | mkdir build |
85 | cd build |
||
86 | cmake ../ |
||
87 | 19 | steve-m | make |
88 | 33 | steve-m | sudo make install |
89 | 130 | horiz0n | sudo ldconfig |
90 | 19 | steve-m | }}} |
91 | |||
92 | 130 | horiz0n | 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. |
93 | {{{ |
||
94 | cmake ../ -DINSTALL_UDEV_RULES=ON |
||
95 | }}} |
||
96 | |||
97 | 19 | steve-m | Building with autotools: |
98 | {{{ |
||
99 | cd rtl-sdr/ |
||
100 | autoreconf -i |
||
101 | ./configure |
||
102 | 33 | steve-m | make |
103 | 19 | steve-m | sudo make install |
104 | 130 | horiz0n | sudo ldconfig |
105 | 19 | steve-m | }}} |
106 | 1 | steve-m | |
107 | 130 | horiz0n | The built executables (rtl_sdr, rtl_tcp and rtl_test) can be found in rtl-sdr/src/. |
108 | 1 | steve-m | |
109 | 130 | horiz0n | In order to be able to use the dongle as a non-root user, you may install the appropriate udev rules file by calling |
110 | {{{ |
||
111 | sudo make install-udev-rules |
||
112 | }}} |
||
113 | |||
114 | 1 | steve-m | [attachment:RelWithDebInfo.zip pre-built Windows version] using libusb 1.0.9 and pthreads-win32 cvs |
115 | 72 | horiz0n | |
116 | 1 | steve-m | ==== Gnuradio Source ==== |
117 | 27 | horiz0n | |
118 | 29 | horiz0n | '''The gnuradio source requires the rtl-sdr package and a recent gnuradio (>= v3.5.3) to be installed.''' |
119 | 56 | horiz0n | |
120 | 54 | horiz0n | The source supports direct device operation as well as a tcp client mode when using the rtl_tcp utility as a spectrum server. |
121 | 27 | horiz0n | |
122 | Please note: prior pulling a new version from git and compiling it, please do a "make uninstall" first to properly remove the previous version. |
||
123 | 92 | horiz0n | |
124 | Please note: you always should build & '''install the latest version of the dependencies (librtlsdr in this case)''' before trying to build the gr source. |
||
125 | 27 | horiz0n | |
126 | Building with cmake: |
||
127 | {{{ |
||
128 | git clone git://git.osmocom.org/gr-osmosdr |
||
129 | cd gr-osmosdr/ |
||
130 | 1 | steve-m | mkdir build |
131 | 27 | horiz0n | cd build/ |
132 | 130 | horiz0n | cmake ../ |
133 | 1 | steve-m | make |
134 | sudo make install |
||
135 | sudo ldconfig |
||
136 | }}} |
||
137 | |||
138 | 101 | horiz0n | NOTE: The source block (osmosdr/rtlsdr Source) will appear under 'Sources' category in GRC menu. |
139 | 1 | steve-m | |
140 | 84 | horiz0n | For initial tests we recommend the multimode receiver gnuradio companion flowgraph (see "Known Apps" table below). |
141 | |||
142 | 104 | horiz0n | 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]. |
143 | 103 | horiz0n | |
144 | 1 | steve-m | ==== Automated installation ==== |
145 | |||
146 | 101 | horiz0n | 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. |
147 | |||
148 | 1 | steve-m | === Usage === |
149 | |||
150 | 78 | horiz0n | ==== rtl_sdr ==== |
151 | |||
152 | 1 | steve-m | Example: To tune to 392.0 MHz, and set the sample-rate to 1.8 MS/s, use: |
153 | |||
154 | {{{ |
||
155 | ./rtl_sdr /tmp/capture.bin -s 1.8e6 -f 392e6 |
||
156 | 74 | horiz0n | }}} |
157 | |||
158 | to record samples to a file or to forward the data to a fifo. |
||
159 | |||
160 | 90 | horiz0n | 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). |
161 | 74 | horiz0n | |
162 | 78 | horiz0n | ==== rtl_tcp ==== |
163 | |||
164 | 80 | horiz0n | Example: |
165 | |||
166 | 1 | steve-m | {{{ |
167 | 79 | horiz0n | rtl_tcp -a 10.0.0.2 [-p listen port (default: 1234)] |
168 | Found 1 device(s). |
||
169 | Found Elonics E4000 tuner |
||
170 | Using Generic RTL2832U (e.g. hama nano) |
||
171 | Tuned to 100000000 Hz. |
||
172 | listening... |
||
173 | Use the device argument 'rtl_tcp=10.0.0.2:1234' in OsmoSDR (gr-osmosdr) source |
||
174 | to receive samples in GRC and control rtl_tcp parameters (frequency, gain, ...). |
||
175 | 74 | horiz0n | }}} |
176 | 79 | horiz0n | |
177 | 76 | horiz0n | use the rtl_tcp=... device argument in gr-osmosdr source to receive the samples in GRC and control the rtl settings remotely. |
178 | 1 | steve-m | |
179 | 103 | horiz0n | 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). |
180 | 85 | steve-m | You can find a Makefile for OpenWRT [http://steve-m.de/projects/rtl-sdr/Makefile here]. |
181 | 76 | horiz0n | |
182 | 110 | horiz0n | A use case is described [https://sites.google.com/site/embrtlsdr/ here]. |
183 | |||
184 | 1 | steve-m | ==== rtl_test ==== |
185 | 90 | horiz0n | To check the possible tuning range (may heavily vary by some MHz depending on device and temperature), call |
186 | 74 | horiz0n | {{{ |
187 | rtl_test -t |
||
188 | 1 | steve-m | }}} |
189 | 90 | horiz0n | |
190 | To check the maximum samplerate possible on your machine, type (change the rate down until no sample loss occurs): |
||
191 | 74 | horiz0n | {{{ |
192 | rtl_test -s 3.2e6 |
||
193 | 1 | steve-m | }}} |
194 | 90 | horiz0n | 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. |
195 | 2 | steve-m | |
196 | == Using the data == |
||
197 | |||
198 | 3 | steve-m | To convert the data to a standard cfile, following GNU Radio Block can be used:[[br]] |
199 | [[br]][[Image(rtl2832-cfile.png)]][[br]][[br]] |
||
200 | 2 | steve-m | 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]. |
201 | 6 | steve-m | |
202 | 22 | horiz0n | Please note: for realtime operation you may use fifos (mkfifo) to forward the iq data from the capture utility to the GRC flowgraph. |
203 | |||
204 | 115 | horiz0n | You may use any of the the following gnuradio sources (they are equivalent): |
205 | [[br]][[br]][[Image(osmosource.png)]][[br]] |
||
206 | |||
207 | 59 | horiz0n | 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]. |
208 | 32 | horiz0n | |
209 | Tell us your success story with other wireless protocols in ##rtlsdr channel on freenode IRC network. |
||
210 | |||
211 | 61 | horiz0n | == Known Apps == |
212 | 60 | horiz0n | |
213 | 81 | horiz0n | The following 3rd party applications and libraries are successfully using either librtlsdr directly or the corresponding gnuradio source (gr-osmosdr): |
214 | 60 | horiz0n | |
215 | ||'''Name'''||'''Type'''||'''Author'''||'''URL'''|| |
||
216 | 88 | horiz0n | ||gr-pocsag||GRC Flowgraph||Marcus Leech||[https://www.cgran.org/browser/projects/gr-pocsag/trunk]|| |
217 | 106 | horiz0n | ||multimode RX (try first!)||GRC Flowgraph||Marcus Leech||[https://www.cgran.org/browser/projects/multimode/trunk]|| |
218 | 89 | steve-m | ||simple_fm_rvc||GRC Flowgraph||Marcus Leech||[https://www.cgran.org/browser/projects/simple_fm_rcv/trunk]|| |
219 | 60 | horiz0n | ||python-librtlsdr||Python Wrapper||David Basden||[https://github.com/dbasden/python-librtlsdr]|| |
220 | 63 | horiz0n | ||pyrtlsdr||Python Wrapper||Roger||[https://github.com/roger-/pyrtlsdr]|| |
221 | 60 | horiz0n | ||rtlsdr-waterfall||Python FFT GUI||Kyle Keen||[https://github.com/keenerd/rtlsdr-waterfall]|| |
222 | 67 | horiz0n | ||Wireless Temp. Sensor RX||Gnuradio App||Kevin Mehall||[https://github.com/kevinmehall/rtlsdr-433m-sensor]|| |
223 | 1 | steve-m | ||!QtRadio||SDR GUI||Andrea Montefusco et al.||[http://napan.ca/ghpsdr3/index.php/RTL-SDR]|| |
224 | 88 | horiz0n | ||gqrx (fork)||SDR GUI||Alexandru Csete||[https://github.com/mathisschmieder/gqrx]|| |
225 | 116 | horiz0n | ||rtl_fm||SDR CLI||Kyle Keen||merged in librtlsdr master|| |
226 | 119 | horiz0n | ||SDR#||SDR GUI||Youssef Touil||[http://sdrsharp.com/] and [http://rtlsdr.org/softwarewindows Windows Guide] or [http://rtlsdr.org/softwarelinux Linux Guide]|| |
227 | 109 | horiz0n | ||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] || |
228 | 128 | horiz0n | ||gqrx (original)||SDR GUI||Alexandru Csete||[https://github.com/csete/gqrx]|| |
229 | ||airprobe||GSM sniffer||osmocom team et al||[http://git.gnumonks.org/cgi-bin/gitweb.cgi?p=airprobe.git]|| |
||
230 | ||gr-smartnet (WIP)||Trunking RX||Nick Foster||[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]|| |
||
231 | ||gr-air-modes||ADS-B RX||Nick Foster||[https://www.cgran.org/wiki/gr-air-modes] call with --rtlsdr option|| |
||
232 | ||Linrad||SDR GUI||Leif Asbrink (SM5BSZ)||[http://www.nitehawk.com/sm5bsz/linuxdsp/hware/rtlsdr/rtlsdr.htm][[br]]DAGC changes were applied to librtlsdr master|| |
||
233 | ||gr-ais (fork)||AIS RX||Nick Foster[[br]]Antoine Sirinelli[[br]]Christian Gagneraud||[https://github.com/chgans/gr-ais]|| |
||
234 | 137 | horiz0n | ||GNSS-SDR ||GPS RX (Realtime!)||Centre Tecnològic de[[br]]Telecomunicacions 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]|| |
235 | 139 | horiz0n | ||LTE-Cell-Scanner '''(NEW)'''||LTE Scanner / Tracker||James Peroulas[[br]]Evrytania LLC||[http://www.evrytania.com/lte-tools]|| |
236 | 120 | horiz0n | ||Simulink-RTL-SDR '''(NEW)'''||MATLAB/Simulink wrapper||Michael Schwall[[br]]Sebastian Koslowski[[br]]Communication Engineering Lab (CEL)[[br]]Karlsruhe Institute of Technology (KIT)||[http://www.cel.kit.edu/simulink_rtl_sdr.php]|| |
237 | 129 | horiz0n | ||gr-scan '''(NEW)'''||Scanner||techmeology||[http://www.techmeology.co.uk/gr-scan/]|| |
238 | 135 | steve-m | ||kalibrate-rtl '''(NEW)'''||calibration tool||Joshua Lackey[[br]]Alexander Chemeris[[br]]Steve Markgraf||[https://github.com/steve-m/kalibrate-rtl], [http://rtlsdr.org/files/kalibrate-win-release.zip Windows build]|| |
239 | 137 | horiz0n | ||pocsag-mrt '''(NEW)'''||Multichannel Realtime Decoder||iZsh||[https://github.com/iZsh/pocsag-mrt]|| |
240 | 128 | horiz0n | |
241 | 101 | horiz0n | |
242 | 98 | steve-m | |
243 | 91 | horiz0n | [[br]] |
244 | 60 | horiz0n | Using our lib? Tell us! Don't? Tell us why! :) |
245 | 91 | horiz0n | [[br]][[br]][[br]] |
246 | 6 | steve-m | [[Image(rtl-sdr-gmr.png)]][[br]] |
247 | Multiple GMR-carriers can be seen in a spectrum view with the full 3.2 MHz bandwidth (at 3.2 MS/s). |
||
248 | 132 | laforge | |
249 | == Credits == |
||
250 | |||
251 | 133 | horiz0n | rtl-sdr is developed by Steve Markgraf and Dimitri Stolnikov, with contributions by Kyle Keen, Hoernchen, Christian Vogel and Harald Welte. |