diff --git a/src/urh/dev/BackendHandler.py b/src/urh/dev/BackendHandler.py index aab023da..fd1a04e7 100644 --- a/src/urh/dev/BackendHandler.py +++ b/src/urh/dev/BackendHandler.py @@ -74,7 +74,7 @@ class BackendHandler(object): 3) Manage the selection of devices backend """ - DEVICE_NAMES = ("Bladerf", "HackRF", "USRP", "RTL-SDR", "FUNcube-Dongle") + DEVICE_NAMES = ("Bladerf", "HackRF", "USRP", "RTL-SDR", "FUNcube-Dongle", "SDRPlay", "AirSpy") def __init__(self, testing_mode=False): self.testing_mode = testing_mode # Ensure we get some device backends for unit tests diff --git a/src/urh/dev/gr/scripts/airspy_recv.grc b/src/urh/dev/gr/scripts/airspy_recv.grc new file mode 100644 index 00000000..57e34246 --- /dev/null +++ b/src/urh/dev/gr/scripts/airspy_recv.grc @@ -0,0 +1,1656 @@ + + + + Sun Feb 26 20:44:18 2017 + + options + + author + + + + window_size + + + + category + [GRC Hier Blocks] + + + comment + + + + description + + + + _enabled + True + + + _coordinate + (8, 8) + + + _rotation + 0 + + + generate_options + no_gui + + + hier_block_src_path + .: + + + id + top_block + + + max_nouts + 0 + + + qt_qss_theme + + + + realtime_scheduling + + + + run_command + {python} -u {filename} + + + run_options + run + + + run + True + + + thread_safe_setters + + + + title + + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (696, 272) + + + _rotation + 0 + + + id + bw + + + value + 250000 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (416, 132) + + + _rotation + 0 + + + id + freq + + + value + 433e6 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (304, 144) + + + _rotation + 0 + + + id + gain + + + value + 10 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 160) + + + _rotation + 0 + + + id + samp_rate + + + value + 2.5e6 + + + + blks2_tcp_sink + + addr + 127.0.0.1 + + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (448, 244) + + + _rotation + 0 + + + id + blks2_tcp_sink_0 + + + type + complex + + + server + True + + + port + 1337 + + + vlen + 1 + + + + osmosdr_source + + alias + + + + ant0 + + + + bb_gain0 + gain + + + bw0 + bw + + + dc_offset_mode0 + 0 + + + corr0 + 0 + + + freq0 + freq + + + gain_mode0 + False + + + if_gain0 + gain + + + iq_balance_mode0 + 0 + + + gain0 + gain + + + ant10 + + + + bb_gain10 + 20 + + + bw10 + 0 + + + dc_offset_mode10 + 0 + + + corr10 + 0 + + + freq10 + 100e6 + + + gain_mode10 + False + + + if_gain10 + 20 + + + iq_balance_mode10 + 0 + + + gain10 + 10 + + + ant11 + + + + bb_gain11 + 20 + + + bw11 + 0 + + + dc_offset_mode11 + 0 + + + corr11 + 0 + + + freq11 + 100e6 + + + gain_mode11 + False + + + if_gain11 + 20 + + + iq_balance_mode11 + 0 + + + gain11 + 10 + + + ant12 + + + + bb_gain12 + 20 + + + bw12 + 0 + + + dc_offset_mode12 + 0 + + + corr12 + 0 + + + freq12 + 100e6 + + + gain_mode12 + False + + + if_gain12 + 20 + + + iq_balance_mode12 + 0 + + + gain12 + 10 + + + ant13 + + + + bb_gain13 + 20 + + + bw13 + 0 + + + dc_offset_mode13 + 0 + + + corr13 + 0 + + + freq13 + 100e6 + + + gain_mode13 + False + + + if_gain13 + 20 + + + iq_balance_mode13 + 0 + + + gain13 + 10 + + + ant14 + + + + bb_gain14 + 20 + + + bw14 + 0 + + + dc_offset_mode14 + 0 + + + corr14 + 0 + + + freq14 + 100e6 + + + gain_mode14 + False + + + if_gain14 + 20 + + + iq_balance_mode14 + 0 + + + gain14 + 10 + + + ant15 + + + + bb_gain15 + 20 + + + bw15 + 0 + + + dc_offset_mode15 + 0 + + + corr15 + 0 + + + freq15 + 100e6 + + + gain_mode15 + False + + + if_gain15 + 20 + + + iq_balance_mode15 + 0 + + + gain15 + 10 + + + ant16 + + + + bb_gain16 + 20 + + + bw16 + 0 + + + dc_offset_mode16 + 0 + + + corr16 + 0 + + + freq16 + 100e6 + + + gain_mode16 + False + + + if_gain16 + 20 + + + iq_balance_mode16 + 0 + + + gain16 + 10 + + + ant17 + + + + bb_gain17 + 20 + + + bw17 + 0 + + + dc_offset_mode17 + 0 + + + corr17 + 0 + + + freq17 + 100e6 + + + gain_mode17 + False + + + if_gain17 + 20 + + + iq_balance_mode17 + 0 + + + gain17 + 10 + + + ant18 + + + + bb_gain18 + 20 + + + bw18 + 0 + + + dc_offset_mode18 + 0 + + + corr18 + 0 + + + freq18 + 100e6 + + + gain_mode18 + False + + + if_gain18 + 20 + + + iq_balance_mode18 + 0 + + + gain18 + 10 + + + ant19 + + + + bb_gain19 + 20 + + + bw19 + 0 + + + dc_offset_mode19 + 0 + + + corr19 + 0 + + + freq19 + 100e6 + + + gain_mode19 + False + + + if_gain19 + 20 + + + iq_balance_mode19 + 0 + + + gain19 + 10 + + + ant1 + + + + bb_gain1 + 20 + + + bw1 + 0 + + + dc_offset_mode1 + 0 + + + corr1 + 0 + + + freq1 + 100e6 + + + gain_mode1 + False + + + if_gain1 + 20 + + + iq_balance_mode1 + 0 + + + gain1 + 10 + + + ant20 + + + + bb_gain20 + 20 + + + bw20 + 0 + + + dc_offset_mode20 + 0 + + + corr20 + 0 + + + freq20 + 100e6 + + + gain_mode20 + False + + + if_gain20 + 20 + + + iq_balance_mode20 + 0 + + + gain20 + 10 + + + ant21 + + + + bb_gain21 + 20 + + + bw21 + 0 + + + dc_offset_mode21 + 0 + + + corr21 + 0 + + + freq21 + 100e6 + + + gain_mode21 + False + + + if_gain21 + 20 + + + iq_balance_mode21 + 0 + + + gain21 + 10 + + + ant22 + + + + bb_gain22 + 20 + + + bw22 + 0 + + + dc_offset_mode22 + 0 + + + corr22 + 0 + + + freq22 + 100e6 + + + gain_mode22 + False + + + if_gain22 + 20 + + + iq_balance_mode22 + 0 + + + gain22 + 10 + + + ant23 + + + + bb_gain23 + 20 + + + bw23 + 0 + + + dc_offset_mode23 + 0 + + + corr23 + 0 + + + freq23 + 100e6 + + + gain_mode23 + False + + + if_gain23 + 20 + + + iq_balance_mode23 + 0 + + + gain23 + 10 + + + ant24 + + + + bb_gain24 + 20 + + + bw24 + 0 + + + dc_offset_mode24 + 0 + + + corr24 + 0 + + + freq24 + 100e6 + + + gain_mode24 + False + + + if_gain24 + 20 + + + iq_balance_mode24 + 0 + + + gain24 + 10 + + + ant25 + + + + bb_gain25 + 20 + + + bw25 + 0 + + + dc_offset_mode25 + 0 + + + corr25 + 0 + + + freq25 + 100e6 + + + gain_mode25 + False + + + if_gain25 + 20 + + + iq_balance_mode25 + 0 + + + gain25 + 10 + + + ant26 + + + + bb_gain26 + 20 + + + bw26 + 0 + + + dc_offset_mode26 + 0 + + + corr26 + 0 + + + freq26 + 100e6 + + + gain_mode26 + False + + + if_gain26 + 20 + + + iq_balance_mode26 + 0 + + + gain26 + 10 + + + ant27 + + + + bb_gain27 + 20 + + + bw27 + 0 + + + dc_offset_mode27 + 0 + + + corr27 + 0 + + + freq27 + 100e6 + + + gain_mode27 + False + + + if_gain27 + 20 + + + iq_balance_mode27 + 0 + + + gain27 + 10 + + + ant28 + + + + bb_gain28 + 20 + + + bw28 + 0 + + + dc_offset_mode28 + 0 + + + corr28 + 0 + + + freq28 + 100e6 + + + gain_mode28 + False + + + if_gain28 + 20 + + + iq_balance_mode28 + 0 + + + gain28 + 10 + + + ant29 + + + + bb_gain29 + 20 + + + bw29 + 0 + + + dc_offset_mode29 + 0 + + + corr29 + 0 + + + freq29 + 100e6 + + + gain_mode29 + False + + + if_gain29 + 20 + + + iq_balance_mode29 + 0 + + + gain29 + 10 + + + ant2 + + + + bb_gain2 + 20 + + + bw2 + 0 + + + dc_offset_mode2 + 0 + + + corr2 + 0 + + + freq2 + 100e6 + + + gain_mode2 + False + + + if_gain2 + 20 + + + iq_balance_mode2 + 0 + + + gain2 + 10 + + + ant30 + + + + bb_gain30 + 20 + + + bw30 + 0 + + + dc_offset_mode30 + 0 + + + corr30 + 0 + + + freq30 + 100e6 + + + gain_mode30 + False + + + if_gain30 + 20 + + + iq_balance_mode30 + 0 + + + gain30 + 10 + + + ant31 + + + + bb_gain31 + 20 + + + bw31 + 0 + + + dc_offset_mode31 + 0 + + + corr31 + 0 + + + freq31 + 100e6 + + + gain_mode31 + False + + + if_gain31 + 20 + + + iq_balance_mode31 + 0 + + + gain31 + 10 + + + ant3 + + + + bb_gain3 + 20 + + + bw3 + 0 + + + dc_offset_mode3 + 0 + + + corr3 + 0 + + + freq3 + 100e6 + + + gain_mode3 + False + + + if_gain3 + 20 + + + iq_balance_mode3 + 0 + + + gain3 + 10 + + + ant4 + + + + bb_gain4 + 20 + + + bw4 + 0 + + + dc_offset_mode4 + 0 + + + corr4 + 0 + + + freq4 + 100e6 + + + gain_mode4 + False + + + if_gain4 + 20 + + + iq_balance_mode4 + 0 + + + gain4 + 10 + + + ant5 + + + + bb_gain5 + 20 + + + bw5 + 0 + + + dc_offset_mode5 + 0 + + + corr5 + 0 + + + freq5 + 100e6 + + + gain_mode5 + False + + + if_gain5 + 20 + + + iq_balance_mode5 + 0 + + + gain5 + 10 + + + ant6 + + + + bb_gain6 + 20 + + + bw6 + 0 + + + dc_offset_mode6 + 0 + + + corr6 + 0 + + + freq6 + 100e6 + + + gain_mode6 + False + + + if_gain6 + 20 + + + iq_balance_mode6 + 0 + + + gain6 + 10 + + + ant7 + + + + bb_gain7 + 20 + + + bw7 + 0 + + + dc_offset_mode7 + 0 + + + corr7 + 0 + + + freq7 + 100e6 + + + gain_mode7 + False + + + if_gain7 + 20 + + + iq_balance_mode7 + 0 + + + gain7 + 10 + + + ant8 + + + + bb_gain8 + 20 + + + bw8 + 0 + + + dc_offset_mode8 + 0 + + + corr8 + 0 + + + freq8 + 100e6 + + + gain_mode8 + False + + + if_gain8 + 20 + + + iq_balance_mode8 + 0 + + + gain8 + 10 + + + ant9 + + + + bb_gain9 + 20 + + + bw9 + 0 + + + dc_offset_mode9 + 0 + + + corr9 + 0 + + + freq9 + 100e6 + + + gain_mode9 + False + + + if_gain9 + 20 + + + iq_balance_mode9 + 0 + + + gain9 + 10 + + + comment + + + + affinity + + + + args + airspy=0 + + + _enabled + True + + + _coordinate + (224, 220) + + + _rotation + 0 + + + id + osmosdr_source_0 + + + maxoutbuf + 0 + + + clock_source0 + + + + time_source0 + + + + clock_source1 + + + + time_source1 + + + + clock_source2 + + + + time_source2 + + + + clock_source3 + + + + time_source3 + + + + clock_source4 + + + + time_source4 + + + + clock_source5 + + + + time_source5 + + + + clock_source6 + + + + time_source6 + + + + clock_source7 + + + + time_source7 + + + + minoutbuf + 0 + + + nchan + 1 + + + num_mboards + 1 + + + type + fc32 + + + sample_rate + samp_rate + + + sync + + + + + osmosdr_source_0 + blks2_tcp_sink_0 + 0 + 0 + + diff --git a/src/urh/dev/gr/scripts/airspy_recv.py b/src/urh/dev/gr/scripts/airspy_recv.py new file mode 100644 index 00000000..d351eb1f --- /dev/null +++ b/src/urh/dev/gr/scripts/airspy_recv.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python2 +################################################## +# GNU Radio Python Flow Graph +# Title: Top Block +# Generated: Fri Aug 21 15:56:13 2015 +################################################## + +from optparse import OptionParser + +import tempfile +import os +import sys +try: + with open(os.path.join(tempfile.gettempdir(), "gnuradio_path.txt"), "r") as f: + gnuradio_path = f.read().strip() + + os.environ["PATH"] = os.path.join(gnuradio_path, "bin") + sys.path.append(os.path.join(gnuradio_path, "lib", "site-packages")) + +except IOError: + pass + +from gnuradio import gr +from gnuradio.eng_option import eng_option +from grc_gnuradio import blks2 as grc_blks2 +from InputHandlerThread import InputHandlerThread +import osmosdr +from gnuradio import zeromq + +class top_block(gr.top_block): + def __init__(self, samp_rate, freq, gain, bw, port): + gr.top_block.__init__(self, "Top Block") + + ################################################## + # Variables + ################################################## + self.samp_rate = samp_rate + self.gain = gain + self.freq = freq + self.bw = bw + + ################################################## + # Blocks + ################################################## + self.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + "airspy") + self.osmosdr_source_0.set_sample_rate(samp_rate) + self.osmosdr_source_0.set_center_freq(freq, 0) + self.osmosdr_source_0.set_freq_corr(0, 0) + self.osmosdr_source_0.set_dc_offset_mode(0, 0) + self.osmosdr_source_0.set_iq_balance_mode(0, 0) + self.osmosdr_source_0.set_gain_mode(False, 0) + self.osmosdr_source_0.set_gain(gain, 0) + self.osmosdr_source_0.set_if_gain(gain, 0) + self.osmosdr_source_0.set_bb_gain(gain, 0) + self.osmosdr_source_0.set_antenna("", 0) + self.osmosdr_source_0.set_bandwidth(bw, 0) + + self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, 'tcp://127.0.0.1:' + str(port), 100, False) + + ################################################## + # Connections + ################################################## + self.connect((self.osmosdr_source_0, 0), (self.zeromq_push_sink_0, 0)) + + def get_samp_rate(self): + return self.samp_rate + + def set_samp_rate(self, samp_rate): + self.samp_rate = samp_rate + self.osmosdr_source_0.set_sample_rate(self.samp_rate) + + def get_gain(self): + return self.gain + + def set_gain(self, gain): + self.gain = gain + self.osmosdr_source_0.set_gain(self.gain, 0) + self.osmosdr_source_0.set_if_gain(self.gain, 0) + self.osmosdr_source_0.set_bb_gain(self.gain, 0) + + def get_freq(self): + return self.freq + + def set_freq(self, freq): + self.freq = freq + self.osmosdr_source_0.set_center_freq(self.freq, 0) + + def get_bw(self): + return self.bw + + def set_bw(self, bw): + self.bw = bw + self.osmosdr_source_0.set_bandwidth(self.bw, 0) + + +if __name__ == '__main__': + parser = OptionParser(option_class=eng_option, usage="%prog: [options]") + parser.add_option("-s", "--samplerate", dest="samplerate", help="Sample Rate", default=100000) + parser.add_option("-f", "--freq", dest="freq", help="Frequency", default=433000) + parser.add_option("-g", "--gain", dest="gain", help="Gain", default=30) + parser.add_option("-b", "--bandwidth", dest="bw", help="Bandwidth", default=200000) + parser.add_option("-p", "--port", dest="port", help="Port", default=1337) + (options, args) = parser.parse_args() + tb = top_block(float(options.samplerate), float(options.freq), int(options.gain), + float(options.bw), int(options.port)) + iht = InputHandlerThread(tb) + iht.start() + tb.start() + tb.wait() diff --git a/src/urh/dev/gr/scripts/sdrplay_recv.grc b/src/urh/dev/gr/scripts/sdrplay_recv.grc new file mode 100644 index 00000000..70b88b88 --- /dev/null +++ b/src/urh/dev/gr/scripts/sdrplay_recv.grc @@ -0,0 +1,1656 @@ + + + + Sun Feb 26 20:44:18 2017 + + options + + author + + + + window_size + + + + category + [GRC Hier Blocks] + + + comment + + + + description + + + + _enabled + True + + + _coordinate + (8, 8) + + + _rotation + 0 + + + generate_options + no_gui + + + hier_block_src_path + .: + + + id + top_block + + + max_nouts + 0 + + + qt_qss_theme + + + + realtime_scheduling + + + + run_command + {python} -u {filename} + + + run_options + run + + + run + True + + + thread_safe_setters + + + + title + + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (696, 272) + + + _rotation + 0 + + + id + bw + + + value + 250000 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (416, 132) + + + _rotation + 0 + + + id + freq + + + value + 433e6 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (304, 144) + + + _rotation + 0 + + + id + gain + + + value + 10 + + + + variable + + comment + + + + _enabled + True + + + _coordinate + (8, 160) + + + _rotation + 0 + + + id + samp_rate + + + value + 2e6 + + + + blks2_tcp_sink + + addr + 127.0.0.1 + + + alias + + + + comment + + + + affinity + + + + _enabled + True + + + _coordinate + (448, 244) + + + _rotation + 0 + + + id + blks2_tcp_sink_0 + + + type + complex + + + server + True + + + port + 1337 + + + vlen + 1 + + + + osmosdr_source + + alias + + + + ant0 + + + + bb_gain0 + gain + + + bw0 + bw + + + dc_offset_mode0 + 0 + + + corr0 + 0 + + + freq0 + freq + + + gain_mode0 + False + + + if_gain0 + gain + + + iq_balance_mode0 + 0 + + + gain0 + gain + + + ant10 + + + + bb_gain10 + 20 + + + bw10 + 0 + + + dc_offset_mode10 + 0 + + + corr10 + 0 + + + freq10 + 100e6 + + + gain_mode10 + False + + + if_gain10 + 20 + + + iq_balance_mode10 + 0 + + + gain10 + 10 + + + ant11 + + + + bb_gain11 + 20 + + + bw11 + 0 + + + dc_offset_mode11 + 0 + + + corr11 + 0 + + + freq11 + 100e6 + + + gain_mode11 + False + + + if_gain11 + 20 + + + iq_balance_mode11 + 0 + + + gain11 + 10 + + + ant12 + + + + bb_gain12 + 20 + + + bw12 + 0 + + + dc_offset_mode12 + 0 + + + corr12 + 0 + + + freq12 + 100e6 + + + gain_mode12 + False + + + if_gain12 + 20 + + + iq_balance_mode12 + 0 + + + gain12 + 10 + + + ant13 + + + + bb_gain13 + 20 + + + bw13 + 0 + + + dc_offset_mode13 + 0 + + + corr13 + 0 + + + freq13 + 100e6 + + + gain_mode13 + False + + + if_gain13 + 20 + + + iq_balance_mode13 + 0 + + + gain13 + 10 + + + ant14 + + + + bb_gain14 + 20 + + + bw14 + 0 + + + dc_offset_mode14 + 0 + + + corr14 + 0 + + + freq14 + 100e6 + + + gain_mode14 + False + + + if_gain14 + 20 + + + iq_balance_mode14 + 0 + + + gain14 + 10 + + + ant15 + + + + bb_gain15 + 20 + + + bw15 + 0 + + + dc_offset_mode15 + 0 + + + corr15 + 0 + + + freq15 + 100e6 + + + gain_mode15 + False + + + if_gain15 + 20 + + + iq_balance_mode15 + 0 + + + gain15 + 10 + + + ant16 + + + + bb_gain16 + 20 + + + bw16 + 0 + + + dc_offset_mode16 + 0 + + + corr16 + 0 + + + freq16 + 100e6 + + + gain_mode16 + False + + + if_gain16 + 20 + + + iq_balance_mode16 + 0 + + + gain16 + 10 + + + ant17 + + + + bb_gain17 + 20 + + + bw17 + 0 + + + dc_offset_mode17 + 0 + + + corr17 + 0 + + + freq17 + 100e6 + + + gain_mode17 + False + + + if_gain17 + 20 + + + iq_balance_mode17 + 0 + + + gain17 + 10 + + + ant18 + + + + bb_gain18 + 20 + + + bw18 + 0 + + + dc_offset_mode18 + 0 + + + corr18 + 0 + + + freq18 + 100e6 + + + gain_mode18 + False + + + if_gain18 + 20 + + + iq_balance_mode18 + 0 + + + gain18 + 10 + + + ant19 + + + + bb_gain19 + 20 + + + bw19 + 0 + + + dc_offset_mode19 + 0 + + + corr19 + 0 + + + freq19 + 100e6 + + + gain_mode19 + False + + + if_gain19 + 20 + + + iq_balance_mode19 + 0 + + + gain19 + 10 + + + ant1 + + + + bb_gain1 + 20 + + + bw1 + 0 + + + dc_offset_mode1 + 0 + + + corr1 + 0 + + + freq1 + 100e6 + + + gain_mode1 + False + + + if_gain1 + 20 + + + iq_balance_mode1 + 0 + + + gain1 + 10 + + + ant20 + + + + bb_gain20 + 20 + + + bw20 + 0 + + + dc_offset_mode20 + 0 + + + corr20 + 0 + + + freq20 + 100e6 + + + gain_mode20 + False + + + if_gain20 + 20 + + + iq_balance_mode20 + 0 + + + gain20 + 10 + + + ant21 + + + + bb_gain21 + 20 + + + bw21 + 0 + + + dc_offset_mode21 + 0 + + + corr21 + 0 + + + freq21 + 100e6 + + + gain_mode21 + False + + + if_gain21 + 20 + + + iq_balance_mode21 + 0 + + + gain21 + 10 + + + ant22 + + + + bb_gain22 + 20 + + + bw22 + 0 + + + dc_offset_mode22 + 0 + + + corr22 + 0 + + + freq22 + 100e6 + + + gain_mode22 + False + + + if_gain22 + 20 + + + iq_balance_mode22 + 0 + + + gain22 + 10 + + + ant23 + + + + bb_gain23 + 20 + + + bw23 + 0 + + + dc_offset_mode23 + 0 + + + corr23 + 0 + + + freq23 + 100e6 + + + gain_mode23 + False + + + if_gain23 + 20 + + + iq_balance_mode23 + 0 + + + gain23 + 10 + + + ant24 + + + + bb_gain24 + 20 + + + bw24 + 0 + + + dc_offset_mode24 + 0 + + + corr24 + 0 + + + freq24 + 100e6 + + + gain_mode24 + False + + + if_gain24 + 20 + + + iq_balance_mode24 + 0 + + + gain24 + 10 + + + ant25 + + + + bb_gain25 + 20 + + + bw25 + 0 + + + dc_offset_mode25 + 0 + + + corr25 + 0 + + + freq25 + 100e6 + + + gain_mode25 + False + + + if_gain25 + 20 + + + iq_balance_mode25 + 0 + + + gain25 + 10 + + + ant26 + + + + bb_gain26 + 20 + + + bw26 + 0 + + + dc_offset_mode26 + 0 + + + corr26 + 0 + + + freq26 + 100e6 + + + gain_mode26 + False + + + if_gain26 + 20 + + + iq_balance_mode26 + 0 + + + gain26 + 10 + + + ant27 + + + + bb_gain27 + 20 + + + bw27 + 0 + + + dc_offset_mode27 + 0 + + + corr27 + 0 + + + freq27 + 100e6 + + + gain_mode27 + False + + + if_gain27 + 20 + + + iq_balance_mode27 + 0 + + + gain27 + 10 + + + ant28 + + + + bb_gain28 + 20 + + + bw28 + 0 + + + dc_offset_mode28 + 0 + + + corr28 + 0 + + + freq28 + 100e6 + + + gain_mode28 + False + + + if_gain28 + 20 + + + iq_balance_mode28 + 0 + + + gain28 + 10 + + + ant29 + + + + bb_gain29 + 20 + + + bw29 + 0 + + + dc_offset_mode29 + 0 + + + corr29 + 0 + + + freq29 + 100e6 + + + gain_mode29 + False + + + if_gain29 + 20 + + + iq_balance_mode29 + 0 + + + gain29 + 10 + + + ant2 + + + + bb_gain2 + 20 + + + bw2 + 0 + + + dc_offset_mode2 + 0 + + + corr2 + 0 + + + freq2 + 100e6 + + + gain_mode2 + False + + + if_gain2 + 20 + + + iq_balance_mode2 + 0 + + + gain2 + 10 + + + ant30 + + + + bb_gain30 + 20 + + + bw30 + 0 + + + dc_offset_mode30 + 0 + + + corr30 + 0 + + + freq30 + 100e6 + + + gain_mode30 + False + + + if_gain30 + 20 + + + iq_balance_mode30 + 0 + + + gain30 + 10 + + + ant31 + + + + bb_gain31 + 20 + + + bw31 + 0 + + + dc_offset_mode31 + 0 + + + corr31 + 0 + + + freq31 + 100e6 + + + gain_mode31 + False + + + if_gain31 + 20 + + + iq_balance_mode31 + 0 + + + gain31 + 10 + + + ant3 + + + + bb_gain3 + 20 + + + bw3 + 0 + + + dc_offset_mode3 + 0 + + + corr3 + 0 + + + freq3 + 100e6 + + + gain_mode3 + False + + + if_gain3 + 20 + + + iq_balance_mode3 + 0 + + + gain3 + 10 + + + ant4 + + + + bb_gain4 + 20 + + + bw4 + 0 + + + dc_offset_mode4 + 0 + + + corr4 + 0 + + + freq4 + 100e6 + + + gain_mode4 + False + + + if_gain4 + 20 + + + iq_balance_mode4 + 0 + + + gain4 + 10 + + + ant5 + + + + bb_gain5 + 20 + + + bw5 + 0 + + + dc_offset_mode5 + 0 + + + corr5 + 0 + + + freq5 + 100e6 + + + gain_mode5 + False + + + if_gain5 + 20 + + + iq_balance_mode5 + 0 + + + gain5 + 10 + + + ant6 + + + + bb_gain6 + 20 + + + bw6 + 0 + + + dc_offset_mode6 + 0 + + + corr6 + 0 + + + freq6 + 100e6 + + + gain_mode6 + False + + + if_gain6 + 20 + + + iq_balance_mode6 + 0 + + + gain6 + 10 + + + ant7 + + + + bb_gain7 + 20 + + + bw7 + 0 + + + dc_offset_mode7 + 0 + + + corr7 + 0 + + + freq7 + 100e6 + + + gain_mode7 + False + + + if_gain7 + 20 + + + iq_balance_mode7 + 0 + + + gain7 + 10 + + + ant8 + + + + bb_gain8 + 20 + + + bw8 + 0 + + + dc_offset_mode8 + 0 + + + corr8 + 0 + + + freq8 + 100e6 + + + gain_mode8 + False + + + if_gain8 + 20 + + + iq_balance_mode8 + 0 + + + gain8 + 10 + + + ant9 + + + + bb_gain9 + 20 + + + bw9 + 0 + + + dc_offset_mode9 + 0 + + + corr9 + 0 + + + freq9 + 100e6 + + + gain_mode9 + False + + + if_gain9 + 20 + + + iq_balance_mode9 + 0 + + + gain9 + 10 + + + comment + + + + affinity + + + + args + sdrplay=0 + + + _enabled + True + + + _coordinate + (224, 220) + + + _rotation + 0 + + + id + osmosdr_source_0 + + + maxoutbuf + 0 + + + clock_source0 + + + + time_source0 + + + + clock_source1 + + + + time_source1 + + + + clock_source2 + + + + time_source2 + + + + clock_source3 + + + + time_source3 + + + + clock_source4 + + + + time_source4 + + + + clock_source5 + + + + time_source5 + + + + clock_source6 + + + + time_source6 + + + + clock_source7 + + + + time_source7 + + + + minoutbuf + 0 + + + nchan + 1 + + + num_mboards + 1 + + + type + fc32 + + + sample_rate + samp_rate + + + sync + + + + + osmosdr_source_0 + blks2_tcp_sink_0 + 0 + 0 + + diff --git a/src/urh/dev/gr/scripts/sdrplay_recv.py b/src/urh/dev/gr/scripts/sdrplay_recv.py new file mode 100644 index 00000000..737155c4 --- /dev/null +++ b/src/urh/dev/gr/scripts/sdrplay_recv.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python2 +################################################## +# GNU Radio Python Flow Graph +# Title: Top Block +# Generated: Fri Aug 21 15:56:13 2015 +################################################## + +from optparse import OptionParser + +import tempfile +import os +import sys +try: + with open(os.path.join(tempfile.gettempdir(), "gnuradio_path.txt"), "r") as f: + gnuradio_path = f.read().strip() + + os.environ["PATH"] = os.path.join(gnuradio_path, "bin") + sys.path.append(os.path.join(gnuradio_path, "lib", "site-packages")) + +except IOError: + pass + +from gnuradio import gr +from gnuradio.eng_option import eng_option +from grc_gnuradio import blks2 as grc_blks2 +from InputHandlerThread import InputHandlerThread +import osmosdr +from gnuradio import zeromq + +class top_block(gr.top_block): + def __init__(self, samp_rate, freq, gain, bw, port): + gr.top_block.__init__(self, "Top Block") + + ################################################## + # Variables + ################################################## + self.samp_rate = samp_rate + self.gain = gain + self.freq = freq + self.bw = bw + + ################################################## + # Blocks + ################################################## + self.osmosdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + "sdrplay") + self.osmosdr_source_0.set_sample_rate(samp_rate) + self.osmosdr_source_0.set_center_freq(freq, 0) + self.osmosdr_source_0.set_freq_corr(0, 0) + self.osmosdr_source_0.set_dc_offset_mode(0, 0) + self.osmosdr_source_0.set_iq_balance_mode(0, 0) + self.osmosdr_source_0.set_gain_mode(False, 0) + self.osmosdr_source_0.set_gain(gain, 0) + self.osmosdr_source_0.set_if_gain(gain, 0) + self.osmosdr_source_0.set_bb_gain(gain, 0) + self.osmosdr_source_0.set_antenna("", 0) + self.osmosdr_source_0.set_bandwidth(bw, 0) + + self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, 'tcp://127.0.0.1:' + str(port), 100, False) + + ################################################## + # Connections + ################################################## + self.connect((self.osmosdr_source_0, 0), (self.zeromq_push_sink_0, 0)) + + def get_samp_rate(self): + return self.samp_rate + + def set_samp_rate(self, samp_rate): + self.samp_rate = samp_rate + self.osmosdr_source_0.set_sample_rate(self.samp_rate) + + def get_gain(self): + return self.gain + + def set_gain(self, gain): + self.gain = gain + self.osmosdr_source_0.set_gain(self.gain, 0) + self.osmosdr_source_0.set_if_gain(self.gain, 0) + self.osmosdr_source_0.set_bb_gain(self.gain, 0) + + def get_freq(self): + return self.freq + + def set_freq(self, freq): + self.freq = freq + self.osmosdr_source_0.set_center_freq(self.freq, 0) + + def get_bw(self): + return self.bw + + def set_bw(self, bw): + self.bw = bw + self.osmosdr_source_0.set_bandwidth(self.bw, 0) + + +if __name__ == '__main__': + parser = OptionParser(option_class=eng_option, usage="%prog: [options]") + parser.add_option("-s", "--samplerate", dest="samplerate", help="Sample Rate", default=100000) + parser.add_option("-f", "--freq", dest="freq", help="Frequency", default=433000) + parser.add_option("-g", "--gain", dest="gain", help="Gain", default=30) + parser.add_option("-b", "--bandwidth", dest="bw", help="Bandwidth", default=200000) + parser.add_option("-p", "--port", dest="port", help="Port", default=1337) + (options, args) = parser.parse_args() + tb = top_block(float(options.samplerate), float(options.freq), int(options.gain), + float(options.bw), int(options.port)) + iht = InputHandlerThread(tb) + iht.start() + tb.start() + tb.wait() diff --git a/src/urh/dev/gr/scripts/top_block.py b/src/urh/dev/gr/scripts/top_block.py new file mode 100755 index 00000000..37e263c0 --- /dev/null +++ b/src/urh/dev/gr/scripts/top_block.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- +################################################## +# GNU Radio Python Flow Graph +# Title: Top Block +# Generated: Sun Feb 26 20:51:15 2017 +################################################## + +from gnuradio import eng_notation +from gnuradio import gr +from gnuradio.eng_option import eng_option +from gnuradio.filter import firdes +from grc_gnuradio import blks2 as grc_blks2 +from optparse import OptionParser +import osmosdr +import time + + +class top_block(gr.top_block): + + def __init__(self): + gr.top_block.__init__(self, "Top Block") + + ################################################## + # Variables + ################################################## + self.samp_rate = samp_rate = 2e6 + self.gain = gain = 10 + self.freq = freq = 433e6 + self.bw = bw = 250000 + + ################################################## + # Blocks + ################################################## + self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + 'sdrplay=0' ) + self.osmosdr_source_0.set_sample_rate(samp_rate) + self.osmosdr_source_0.set_center_freq(freq, 0) + self.osmosdr_source_0.set_freq_corr(0, 0) + self.osmosdr_source_0.set_dc_offset_mode(0, 0) + self.osmosdr_source_0.set_iq_balance_mode(0, 0) + self.osmosdr_source_0.set_gain_mode(False, 0) + self.osmosdr_source_0.set_gain(gain, 0) + self.osmosdr_source_0.set_if_gain(gain, 0) + self.osmosdr_source_0.set_bb_gain(gain, 0) + self.osmosdr_source_0.set_antenna('', 0) + self.osmosdr_source_0.set_bandwidth(bw, 0) + + self.blks2_tcp_sink_0 = grc_blks2.tcp_sink( + itemsize=gr.sizeof_gr_complex*1, + addr='127.0.0.1', + port=1337, + server=True, + ) + + ################################################## + # Connections + ################################################## + self.connect((self.osmosdr_source_0, 0), (self.blks2_tcp_sink_0, 0)) + + def get_samp_rate(self): + return self.samp_rate + + def set_samp_rate(self, samp_rate): + self.samp_rate = samp_rate + self.osmosdr_source_0.set_sample_rate(self.samp_rate) + + def get_gain(self): + return self.gain + + def set_gain(self, gain): + self.gain = gain + self.osmosdr_source_0.set_gain(self.gain, 0) + self.osmosdr_source_0.set_if_gain(self.gain, 0) + self.osmosdr_source_0.set_bb_gain(self.gain, 0) + + def get_freq(self): + return self.freq + + def set_freq(self, freq): + self.freq = freq + self.osmosdr_source_0.set_center_freq(self.freq, 0) + + def get_bw(self): + return self.bw + + def set_bw(self, bw): + self.bw = bw + self.osmosdr_source_0.set_bandwidth(self.bw, 0) + + +def main(top_block_cls=top_block, options=None): + + tb = top_block_cls() + tb.start() + tb.wait() + + +if __name__ == '__main__': + main()