Project

General

Profile

GrOsmoSDR » History » Version 65

horiz0n, 02/19/2016 10:50 PM

1 1 horiz0n
[[PageOutline]]
2
3 47 horiz0n
= osmocom Gnu Radio Blocks =
4 1 horiz0n
5 20 horiz0n
While primarily being developed for the OsmoSDR hardware, this block as well supports:
6 1 horiz0n
7 20 horiz0n
 * [http://tetra.osmocom.org/trac/wiki/Funcube_Dongle FunCube Dongle] through libgnuradio-fcd
8 50 horiz0n
 * [http://www.funcubedongle.com/?page_id=1073 FUNcube Dongle Pro+] through [https://github.com/dl1ksv/gr-fcdproplus gr-fcdproplus]
9 44 horiz0n
 * [http://sdr.osmocom.org/trac/ sysmocom OsmoSDR] Devices through [http://cgit.osmocom.org/osmo-sdr/ libosmosdr]
10 51 horiz0n
 * [http://nuand.com/ Nuand LLC bladeRF] through [https://github.com/Nuand/bladeRF libbladeRF library]
11 20 horiz0n
 * [http://greatscottgadgets.com/hackrf/ Great Scott Gadgets HackRF] through [https://github.com/mossmann/hackrf libhackrf]
12 56 horiz0n
 * [http://www.ettus.com/product Ettus USRP] Devices through [http://files.ettus.com/uhd_docs/manual/html/build.html Ettus UHD library]
13
 * [http://umtrx.org Fairwaves UmTRX] through [https://github.com/fairwaves/UHD-Fairwaves Fairwaves' fork of Ettus' UHD library]
14 61 horiz0n
 * RFSPACE [http://www.rfspace.com/RFSPACE/SDR-IQ.html SDR-IQ], [http://www.rfspace.com/RFSPACE/SDR-IP.html SDR-IP], [http://rfspace.com/RFSPACE/NetSDR.html NetSDR] [http://www.rfspace.com/RFSPACE/NetSDR-X2.html (incl. X2 option)]
15 20 horiz0n
 * RTL2832U based DVB-T dongles through [http://sdr.osmocom.org/trac/wiki/rtl-sdr librtlsdr]
16
 * RTL-TCP spectrum server (see librtlsdr project)
17
 * MSi2500 based DVB-T dongles through [http://cgit.osmocom.org/libmirisdr/ libmirisdr]
18 42 horiz0n
 * gnuradio .cfile input through libgnuradio-blocks
19 20 horiz0n
20
By using the OsmoSDR block you can take advantage of a common software api in your application(s) independent of the underlying radio hardware.
21
22 1 horiz0n
== Build process ==
23
24 48 horiz0n
'''The Gnu Radio block requires a recent gnuradio (>= v3.7 if building master branch or 3.6.5 when building gr3.6 branch) to be installed.'''
25 20 horiz0n
26 43 horiz0n
Before building the block you have to make sure that all the dependencies (see list of supported devices above) you are intend to work with are properly installed. The build system of gr-osmosdr will recognize them and enable specific source/sink components thereafter.
27 1 horiz0n
28
Please note: prior pulling a new version from git and compiling it, please do a "make uninstall" first to properly remove the previous version.
29
30
Building with cmake:
31 30 horiz0n
32 1 horiz0n
{{{
33
git clone git://git.osmocom.org/gr-osmosdr
34
cd gr-osmosdr/
35 48 horiz0n
}}}
36
37
If you are building for gnuradio 3.6 series, you have to switch to the gr3.6 branch as follows
38
{{{
39
git checkout gr3.6
40
}}}
41
42 51 horiz0n
then continue with
43 48 horiz0n
{{{
44 1 horiz0n
mkdir build
45
cd build/
46 14 horiz0n
cmake ../
47 30 horiz0n
}}}
48
49 34 horiz0n
Now cmake should print out a summary of enabled/disabled components. You may disable certain components by following guidelines shown by cmake. Make sure the device of your interest is listed here. Check your dependencies and retry otherwise.
50 30 horiz0n
{{{
51
-- ######################################################
52
-- # gr-osmosdr enabled components                         
53
-- ######################################################
54
--   * Python support
55
--   * Osmocom IQ Imbalance Correction
56 1 horiz0n
--   * sysmocom OsmoSDR
57 51 horiz0n
--   * FUNcube Dongle
58
--   * FUNcube Dongle Pro+
59 30 horiz0n
--   * IQ File Source
60
--   * Osmocom RTLSDR
61
--   * RTLSDR TCP Client
62
--   * Ettus USRP Devices
63
--   * Osmocom MiriSDR
64 1 horiz0n
--   * HackRF Jawbreaker
65 51 horiz0n
--   * nuand bladeRF
66 61 horiz0n
--   * RFSPACE Receivers
67 30 horiz0n
-- 
68
-- ######################################################
69
-- # gr-osmosdr disabled components                        
70 1 horiz0n
-- ######################################################
71 30 horiz0n
-- 
72 51 horiz0n
-- Building for version: v0.1.0-4-g37aba331 / 0.1.1git
73 30 horiz0n
-- Using install prefix: /usr/local
74
}}}
75
76
Now build & install
77
{{{
78 1 horiz0n
make
79
sudo make install
80
sudo ldconfig
81
}}}
82
83 44 horiz0n
NOTE: The osmocom source/sink blocks will appear under 'Sources' and 'Sinks' categories in GRC menu.
84 1 horiz0n
85 10 horiz0n
To build the API documentation:
86
{{{
87
cd build/
88 1 horiz0n
cmake ../ -DENABLE_DOXYGEN=1
89
make -C docs
90 14 horiz0n
}}}
91 44 horiz0n
92 1 horiz0n
== Automated installation ==
93
94
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.
95 7 horiz0n
96 11 horiz0n
== Device specification ==
97 33 horiz0n
You can specify the source or sink device using a comma separated string of argument=value pairs. The always-up-to-date block documentation with examples is available [http://cgit.osmocom.org/gr-osmosdr/tree/grc/gen_osmosdr_blocks.py#n100 right here].
98 19 horiz0n
99 18 horiz0n
=== FCD Source ===
100
||Argument||Notes||
101 54 horiz0n
||fcd=<device-index>|| 0-based device identifier, optional||
102
||device=hw:2|| overrides the audio device||
103
||type=2|| selects the dongle type, 1 for Classic, 2 for Pro+||
104 50 horiz0n
105
The "device" argument overrides the audio device used by the underlying driver to access the dongle's IQ sample stream.
106
107
The "type" argument selects the dongle type, 1 for Classic, 2 for Pro+.
108 18 horiz0n
109 58 horiz0n
=== IQ File Source ===
110
||Argument||Notes||
111
||file=<path-to-file-name>||||
112
||freq=<frequency>|| Center frequency in Hz, accepts eng notation||
113
||rate=<sampling-rate>|| Mandatory, in samples/s, accepts eng notation||
114
||repeat=true|false|| Default is true||
115
||throttle=true|false|| Throttle flow of samples, default is true||
116
117 1 horiz0n
=== OsmoSDR Source ===
118 28 horiz0n
||Argument||Notes||
119
||osmosdr=<device-index>|| 0-based device identifier||
120 1 horiz0n
||buffers=<number-of-buffers>|| Default is 32||
121 28 horiz0n
||buflen=<length-of-buffer>|| Default is 256kB, must be multiple of 512||
122 1 horiz0n
123 11 horiz0n
=== RTL-SDR Source ===
124 28 horiz0n
||Argument||Notes||
125
||rtl=<device-index>|| 0-based device identifier OR serial number||
126
||rtl_xtal=<frequency>|| Frequency (Hz) used for the RTL chip, accepts eng notation||
127
||tuner_xtal=<frequency>|| Frequency (Hz) used for the tuner chip, accepts eng notation||
128 1 horiz0n
||buffers=<number-of-buffers>|| Default is 32||
129 28 horiz0n
||buflen=<length-of-buffer>|| Default is 256kB, must be multiple of 512||
130 29 horiz0n
||direct_samp=0|1|2|| Enable direct sampling mode on the RTL chip. 0: Disable, 1: use I channel, 2: use Q channel||
131
||offset_tune=0|1|| Enable offset tune mode for E4000 tuners||
132 28 horiz0n
133
NOTE: use rtl_eeprom -s to program your own serial number to the device
134 32 horiz0n
135 11 horiz0n
NOTE: if you don't specify rtl_xtal/tuner_xtal, the underlying driver will use 28.0MHz
136 1 horiz0n
137
=== RTL-SDR TCP Source ===
138 28 horiz0n
||Argument||Notes||
139 1 horiz0n
||rtl_tcp=<hostname>:<port>|| hostname defaults to "localhost", port to "1234"||
140
||psize=<payload-size>|| Default is 16384 bytes||
141 29 horiz0n
||direct_samp=0|1|2|| Enable direct sampling mode on the RTL chip 0=Off, 1=I-ADC input enabled, 2=Q-ADC input enabled||
142
||offset_tune=0|1|| Enable offset tune mode for E4000 tuners||
143 1 horiz0n
144 28 horiz0n
=== Miri Source ===
145
||Argument||Notes||
146
||miri=<device-index>|| 0-based device identifier||
147
||buffers=<number-of-buffers>|| Default is 32||
148
149 1 horiz0n
=== UHD Source / Sink ===
150 28 horiz0n
||Argument||Notes||
151
||uhd|| Use this argument without a value||
152
||nchan=<channel-count>|| For multichannel USRP configurations use the subdev parameter to specify stream mapping||
153
||subdev=<subdev-spec>|| Examples: "A:0", "B:0", "A:0 B:0" when nchan=2. Refer original ettus documentation on this||
154
||lo_offset=<frequency>|| Offset frequency in Hz, must be within daughterboard bandwidth. Accepts eng notation||
155 1 horiz0n
156
Additional argument/value pairs will be passed to the underlying driver, for more information see
157
[http://files.ettus.com/uhd_docs/manual/html/general.html#specifying-the-subdevice-to-use specifying the subdevice] and 
158
[http://files.ettus.com/uhd_docs/manual/html/identification.html#common-device-identifiers common device identifiers] in the Ettus documentation.
159 54 horiz0n
160
=== bladeRF Source / Sink ===
161
||Argument||Notes||
162
||bladerf[=0]|| 0-based device identifier (optional)||
163 55 horiz0n
||fw='/path/to/the/firmware.img'|| program MCU firmware from given file. usually not needed. power cycle required.||
164
||fpga='/path/to/the/bitstream.rbf'|| load FPGA bitstream from given file. required only at first run at the moment.||
165 1 horiz0n
166 28 horiz0n
=== HackRF Source / Sink ===
167 38 horiz0n
||Argument||Notes||
168
||hackrf|| Use this argument without a value||
169 24 horiz0n
||buffers=<number-of-buffers>|| Default is 32||
170 28 horiz0n
171 1 horiz0n
Only the first device found may be used at the moment because of libhackrf limitation.
172
173 28 horiz0n
Transmit support has been verified by using the [http://sdr.osmocom.org/trac/attachment/wiki/GrOsmoSDR/hackrf-dab.jpg crc-mmbTools DAB sdr transmitter].
174 1 horiz0n
175 61 horiz0n
=== RFSPACE Source ===
176 1 horiz0n
||Argument||Notes||
177 61 horiz0n
||sdr-iq[=<serial-port>]|| Optional parameter, serial-port defaults to the serial port (like /dev/ttyUSB0) used by first detected SDR-IQ||
178 63 horiz0n
||sdr-ip[=<hostname>][:<port>]|| Optional parameters, hostname defaults to "localhost", port to "50000" or the first detected SDR-IP||
179
||netsdr[=<hostname>][:<port>]|| Optional parameters, hostname defaults to "localhost", port to "50000" or the first detected NetSDR||
180 61 horiz0n
||nchan=<channel-count>|| Optional parameter for NetSDR, must be 1 or 2||
181 7 horiz0n
182 63 horiz0n
The SDR-IP/NetSDR discovery protocol (UDP broadcast) is implemented, thus specifying the ip & port should not be neccessary. Note: for the receiver to operate properly it is required that the UDP packets (port 50000) carrying the sample data can reach your PC, therefore configure your firewall/router/etc. accordingly...
183 58 horiz0n
184 64 horiz0n
The ftdi_sio driver is being used for SDR-IQ. It creates a character device of the form:
185
186
crw-rw---- 1 root dialout 188, 0 Dec 19 22:14 /dev/ttyUSB0
187
188
To be able to open the device without root permissions add yourself to the "dialout" group or do a "chmod 666 /dev/ttyUSB0" after pluggin in.
189
190 35 horiz0n
== Included Apps ==
191
192
=== Spectrum Browser ===
193 45 horiz0n
194
[[Image(fft-lte.png)]]
195 57 horiz0n
196 58 horiz0n
RTSA-like spectrum visualization is available through [https://sdr.osmocom.org/trac/wiki/fosphor fosphor] component. Call osmocom_fft with -F switch to enable it (a graphics card supporting OpenCL/OpenGL interop is a requirement).
197 57 horiz0n
198
[[Image(fosphor.png)]]
199
200
[[Image(fosphor2.png)]]
201 35 horiz0n
202 36 horiz0n
usage examples:
203 35 horiz0n
{{{
204
osmocom_fft -a rtl=0 -v -f 100e6 -s 2.4e6 -g 15
205
osmocom_fft -a hackrf -v
206 36 horiz0n
osmocom_fft -a uhd -v
207 35 horiz0n
}}}
208 1 horiz0n
=== Signal generator ===
209 45 horiz0n
210 65 horiz0n
[[Image(siggen-gsm.png)]]   [[Image(gsm-hackrf-8M.png, 500px)]]
211 35 horiz0n
212 36 horiz0n
usage examples:
213 49 horiz0n
{{{
214
osmocom_siggen -a hackrf -f 100e6 --sine
215 39 horiz0n
osmocom_siggen -a hackrf -f 100e6 --sweep -x 2M -y 1 -c34
216
osmocom_siggen_nogui -a hackrf -f 100e6 --sweep -x 2e6 -y 10 -v
217 36 horiz0n
osmocom_siggen_nogui -a uhd,subdev=A:0 -f 100e6 --sweep -x 2e6 -y 10 -s 4e6 -v
218 35 horiz0n
}}}
219
=== Spectrum sensing ===
220
221
TODO: document
222 7 horiz0n
223
== Known Apps ==
224
225
The following 3rd party applications are successfully using gr-osmosdr:
226
227
||'''Name'''||'''Type'''||'''Author'''||'''URL'''||
228 15 horiz0n
||gr-pocsag||GRC Flowgraph||Marcus Leech||[https://www.cgran.org/browser/projects/gr-pocsag/trunk]||
229 8 horiz0n
||multimode RX||GRC Flowgraph||Marcus Leech||[https://www.cgran.org/browser/projects/multimode/trunk]||
230 16 horiz0n
||simple_fm_rvc||GRC Flowgraph||Marcus Leech||[https://www.cgran.org/browser/projects/simple_fm_rcv/trunk]||
231 1 horiz0n
||Wireless Temp. Sensor RX||Gnuradio App||Kevin Mehall||[https://github.com/kevinmehall/rtlsdr-433m-sensor]||
232
||gqrx||SDR GUI||Alexandru Csete||[https://github.com/csete/gqrx]||
233
||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] ||
234
||airprobe||GSM sniffer||osmocom team et al||[http://git.gnumonks.org/cgi-bin/gitweb.cgi?p=airprobe.git]||
235
||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]||
236 16 horiz0n
||gr-air-modes||ADS-B RX||Nick Foster||[https://www.cgran.org/wiki/gr-air-modes] call with --rtlsdr option||
237
||gr-ais (fork)||AIS RX||Nick Foster[[br]]Antoine Sirinelli[[br]]Christian Gagneraud||[https://github.com/chgans/gr-ais]||
238 15 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]||
239
||gr-scan ||Scanner||techmeology||[http://www.techmeology.co.uk/gr-scan/]||
240
||pocsag-mrt||Multichannel Realtime[[br]]Decoder||iZsh||[https://github.com/iZsh/pocsag-mrt]||
241
||osmo-gmr-rtl||GMR1 RX||Dimitri Stolnikov||[http://gmr.osmocom.org/trac/wiki/GettingStarted#RTLSDRdongles]||
242 1 horiz0n
||simple_ra '''(NEW)'''||Radio Astronomy App||Marcus Leech||[https://cgran.org/wiki/simple_ra]||
243 15 horiz0n
||FS20_decode '''(NEW)'''||FS20 Decoder||Thomas Frisch||[https://github.com/eT0M/rtl_sdr_FS20_decoder]||
244 56 horiz0n
||OpenLTE '''(NEW)'''||LTE Toolkit||Ben Wojtowicz||[http://sourceforge.net/p/openlte/home/Home/]||
245 28 horiz0n
||sdrangelove '''(NEW)'''||SDR GUI||Christian Daniel||[http://sdrangelove.org]||
246
247
== Credits ==
248 53 horiz0n
249 59 horiz0n
gr-osmosdr is developed by Dimitri Stolnikov with contributions from Hoernchen, Steve Markgraf, Sylvain Munaut and Nuand LLC folks.
Add picture from clipboard (Maximum size: 48.8 MB)