From version < 30.5 >
edited by Jean-Yves Dupertuis
on 27-03-2018, 17:59
To version < 25.4 >
edited by Jean-Yves Dupertuis
on 27-03-2018, 16:54
< >
Change comment: SDR-linux-gnuradio

Summary

Details

Page properties
Content
... ... @@ -27,436 +27,6 @@
27 27  Le wiki me demande de lancer un script écrit en python qui se trouve :
28 28  https://raw.githubusercontent.com/pothosware/gnuradio-companion-exe/master/GNURadioHelper.py
29 29  
30 -
31 -{{code language="python" title="fichier de test"}}
32 -# Copyright (c) 2015-2016 Josh Blum
33 -# SPDX-License-Identifier: BSL-1.0
34 -
35 -########################################################################
36 -## Do checks and prepare dependencies for GRC
37 -########################################################################
38 -import os
39 -import sys
40 -import inspect
41 -import tempfile
42 -import subprocess
43 -from ctypes.util import find_library
44 -
45 -########################################################################
46 -## Registry/Environment helpers
47 -########################################################################
48 -import ctypes
49 -from ctypes.wintypes import HWND, UINT, WPARAM, LPARAM, LPVOID
50 -LRESULT = LPARAM
51 -import os
52 -import sys
53 -try:
54 - import winreg
55 - unicode = str
56 -except ImportError:
57 - import _winreg as winreg # Python 2.x
58 -
59 -class Environment(object):
60 - #path = r'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'
61 - #hklm = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
62 - path = r'Environment'
63 - hklm = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)
64 - key = winreg.OpenKey(hklm, path, 0, winreg.KEY_READ | winreg.KEY_WRITE)
65 - SendMessage = ctypes.windll.user32.SendMessageW
66 - SendMessage.argtypes = HWND, UINT, WPARAM, LPVOID
67 - SendMessage.restype = LRESULT
68 - HWND_BROADCAST = 0xFFFF
69 - WM_SETTINGCHANGE = 0x1A
70 - NO_DEFAULT = type('NO_DEFAULT', (object,), {})()
71 -
72 - def get(self, name, default=NO_DEFAULT):
73 - try:
74 - value = winreg.QueryValueEx(self.key, name)[0]
75 - except WindowsError:
76 - if default is self.NO_DEFAULT:
77 - raise ValueError("No such registry key", name)
78 - value = default
79 - return value
80 -
81 - def set(self, name, value):
82 - if value:
83 - winreg.SetValueEx(self.key, name, 0, winreg.REG_EXPAND_SZ, value)
84 - else:
85 - winreg.DeleteValue(self.key, name)
86 - self.notify()
87 -
88 - def notify(self):
89 - self.SendMessage(
90 - self.HWND_BROADCAST, self.WM_SETTINGCHANGE, 0, u'Environment')
91 -
92 -########################################################################
93 -## determine-if-an-executable-or-library-is-32-or-64-bits-on-windows
94 -## https://stackoverflow.com/questions/1345632
95 -########################################################################
96 -import struct
97 -
98 -IMAGE_FILE_MACHINE_I386=332
99 -IMAGE_FILE_MACHINE_IA64=512
100 -IMAGE_FILE_MACHINE_AMD64=34404
101 -
102 -def getDllMachineType(path):
103 - f=open(path, "rb")
104 - s=f.read(2)
105 - if s!="MZ": raise Exception("%s is not a DLL"%path)
106 - f.seek(60)
107 - s=f.read(4)
108 - header_offset=struct.unpack("<L", s)[0]
109 - f.seek(header_offset+4)
110 - s=f.read(2)
111 - machine=struct.unpack("<H", s)[0]
112 - f.close()
113 - return machine
114 -
115 -########################################################################
116 -## Pip helpers
117 -########################################################################
118 -PIP_EXE = os.path.join(os.path.dirname(sys.executable), 'Scripts', 'pip.exe')
119 -
120 -def pip_install(arg):
121 - ret = subprocess.call([PIP_EXE, 'install', arg], shell=True)
122 - if ret != 0:
123 - print("Error: pip failed to install %s"%arg)
124 - return -1
125 -
126 -########################################################################
127 -## Python checks
128 -########################################################################
129 -def check_python_version():
130 - is_64bits = sys.maxsize > 2**32
131 - if not is_64bits:
132 - raise Exception("requires 64-bit Python")
133 -
134 - if sys.version_info.major != 2 or sys.version_info.minor != 7:
135 - raise Exception("requires Python version 2.7")
136 -
137 - if not os.path.exists(PIP_EXE):
138 - raise Exception("can't find pip executable %s"%PIP_EXE)
139 -
140 - return sys.version
141 -
142 -def handle_python_version():
143 - print("Error: Invoke/Reinstall Python2.7 for amd64")
144 - return -1
145 -
146 -########################################################################
147 -## GTK checks
148 -########################################################################
149 -def check_gtk_runtime():
150 -
151 - gtk_dll_name = "libgtk-win32-2.0-0.dll"
152 -
153 - #first check that the installer default is found
154 - installer_default = os.path.join("C:\\Program Files\\GTK2-Runtime Win64\\bin", gtk_dll_name)
155 - if os.path.exists(installer_default): return installer_default
156 -
157 - #regular dll search within the path
158 - libgtk = find_library(gtk_dll_name)
159 - if libgtk is None:
160 - raise Exception("failed to locate the GTK+ runtime DLL")
161 -
162 - #reject 32-bit versions of this dll
163 - if getDllMachineType(libgtk) != IMAGE_FILE_MACHINE_AMD64:
164 - raise Exception("%s is not AMD64"%libgtk)
165 -
166 - return libgtk
167 -
168 -def handle_gtk_runtime():
169 -
170 - GTK_URL = 'http://downloads.myriadrf.org/binaries/python27_amd64/gtk2-runtime-2.22.1-2014-02-01-ts-win64.exe'
171 - GTK_EXE = os.path.join(tempfile.gettempdir(), 'gtk2-runtime-2.22.1-2014-02-01-ts-win64.exe')
172 -
173 - if not os.path.exists(GTK_EXE):
174 -
175 - #need requests to download the exe
176 - try: import requests
177 - except: pip_install("requests")
178 - import requests
179 -
180 - #download from the url to the destination
181 - r = requests.get(GTK_URL)
182 - with open(GTK_EXE, 'wb') as fd:
183 - for chunk in r.iter_content(1024*1024):
184 - fd.write(chunk)
185 -
186 - if not os.path.exists(GTK_EXE):
187 - print("Cant find installer: %s"%GTK_EXE)
188 - print("Failed to download: %s"%GTK_URL)
189 - return -1
190 -
191 - print("Running installer: %s"%GTK_EXE)
192 - ret = subprocess.call([GTK_EXE, '/S'], shell=True) #silent install
193 - if ret != 0:
194 - print("The GTK installer failed with exit code %d"%ret)
195 - exit(ret)
196 -
197 - print("The GTK installer should have modified the system path")
198 - print("Open a new command window and re-run this script...")
199 -
200 -def check_import_gtk():
201 - import gtk
202 - return inspect.getfile(gtk)
203 -
204 -def handle_import_gtk():
205 - pip_install('http://downloads.myriadrf.org/binaries/python27_amd64/pygtk-2.22.0-cp27-none-win_amd64.whl')
206 - pip_install('http://downloads.myriadrf.org/binaries/python27_amd64/pygobject-2.28.6-cp27-none-win_amd64.whl')
207 - pip_install('http://downloads.myriadrf.org/binaries/python27_amd64/pycairo_gtk-1.10.0-cp27-none-win_amd64.whl')
208 -
209 -########################################################################
210 -## GNU Radio checks
211 -########################################################################
212 -def guess_bin_path():
213 -
214 - #was it run from the proper install directory?
215 - path = os.path.abspath(os.path.dirname(__file__))
216 - if os.path.exists(os.path.join(path, "gnuradio-runtime.dll")): return path
217 -
218 - #otherwise search the path to find the root
219 - gnuradio_runtime = find_library("gnuradio-runtime.dll")
220 - if gnuradio_runtime: return gnuradio_runtime
221 -
222 -def check_gr_runtime():
223 - gnuradio_runtime = find_library("gnuradio-runtime.dll")
224 -
225 - if gnuradio_runtime is None:
226 - raise Exception("failed to locate the GNURadio runtime DLL")
227 -
228 - return gnuradio_runtime
229 -
230 -def handle_gr_runtime():
231 -
232 - path = guess_bin_path()
233 -
234 - #we dont know where the bin path is, this is probably an installer issue
235 - #print this message and return error so other handlers are not invoked
236 - if path is None:
237 - print("Error: PothosSDR DLLs missing from the system path")
238 - print(" See instructions to 'Add PothosSDR to the system PATH'")
239 - print(" https://github.com/pothosware/PothosSDR/wiki/Tutorial")
240 - return -1
241 -
242 - e = Environment()
243 - PATH = e.get('PATH', '')
244 - print("Current PATH: '%s'"%PATH)
245 - if not PATH: PATH = list()
246 - else: PATH = PATH.split(';')
247 -
248 - if path not in PATH:
249 - print("Adding %s to the PATH"%path)
250 - PATH.append(path)
251 - e.set('PATH', ';'.join(PATH))
252 -
253 - print("")
254 - print("The PATH for the current user has been modified")
255 - print("Open a new command window and re-run this script...")
256 -
257 -def check_import_gr():
258 - import gnuradio
259 - from gnuradio import gr
260 - return inspect.getfile(gnuradio)
261 -
262 -def handle_import_gr():
263 - binDir = guess_bin_path()
264 - path = os.path.join(os.path.dirname(binDir), 'lib', 'python2.7', 'site-packages')
265 - if not os.path.exists(path): #or use old-style path without python version
266 - path = os.path.join(os.path.dirname(binDir), 'lib', 'site-packages')
267 - path = os.path.normpath(path)
268 - print("Error: GNURadio modules missing from PYTHONPATH")
269 -
270 - print("")
271 - print("Current search path:")
272 - for searchPath in sys.path: print(" * %s"%searchPath)
273 - print("")
274 -
275 - e = Environment()
276 - PYTHONPATH = e.get('PYTHONPATH', '')
277 - print("Current PYTHONPATH: '%s'"%PYTHONPATH)
278 - if not PYTHONPATH: PYTHONPATH = list()
279 - else: PYTHONPATH = PYTHONPATH.split(';')
280 -
281 - if path not in PYTHONPATH:
282 - print("Adding %s to the PYTHONPATH"%path)
283 - PYTHONPATH.append(path)
284 - e.set('PYTHONPATH', ';'.join(PYTHONPATH))
285 -
286 - print("")
287 - print("The PYTHONPATH for the current user has been modified")
288 - print("Open a new command window and re-run this script...")
289 -
290 -def check_grc_blocks_path():
291 - GRC_BLOCKS_PATH = os.environ.get('GRC_BLOCKS_PATH', '').split(';')[0] #take the first entry
292 - if not GRC_BLOCKS_PATH:
293 - raise Exception("GRC_BLOCKS_PATH is not set")
294 - if not os.path.exists(GRC_BLOCKS_PATH):
295 - raise Exception("GRC_BLOCKS_PATH '%s' does not exist"%GRC_BLOCKS_PATH)
296 - if not os.path.exists(os.path.join(GRC_BLOCKS_PATH, 'options.xml')):
297 - raise Exception("GRC_BLOCKS_PATH '%s' does not contain options.xml"%GRC_BLOCKS_PATH)
298 - return GRC_BLOCKS_PATH
299 -
300 -def handle_grc_blocks_path():
301 - binDir = guess_bin_path()
302 - path = os.path.join(os.path.dirname(binDir), 'share', 'gnuradio', 'grc', 'blocks')
303 - path = os.path.normpath(path)
304 -
305 - print("Setting the GRC_BLOCKS_PATH to %s"%path)
306 - e = Environment()
307 - e.set('GRC_BLOCKS_PATH', path)
308 -
309 - print("")
310 - print("The GRC_BLOCKS_PATH for the current user has been modified")
311 - print("Open a new command window and re-run this script...")
312 -
313 -########################################################################
314 -## Other module checks
315 -########################################################################
316 -def check_import_numpy():
317 - import numpy
318 - return inspect.getfile(numpy)
319 -
320 -def handle_import_numpy():
321 - pip_install('http://downloads.myriadrf.org/binaries/python27_amd64/numpy-1.12.0+mkl-cp27-cp27m-win_amd64.whl')
322 -
323 -def check_import_lxml():
324 - import lxml
325 - return inspect.getfile(lxml)
326 -
327 -def handle_import_lxml():
328 - pip_install('http://downloads.myriadrf.org/binaries/python27_amd64/lxml-3.7.2-cp27-cp27m-win_amd64.whl')
329 -
330 -def check_import_cheetah():
331 - import Cheetah
332 - return inspect.getfile(Cheetah)
333 -
334 -def handle_import_cheetah():
335 - pip_install('http://downloads.myriadrf.org/binaries/python27_amd64/Cheetah-2.4.4-cp27-none-win_amd64.whl')
336 -
337 -def check_import_wxpython():
338 - import wx
339 - import wx.glcanvas
340 - return inspect.getfile(wx)
341 -
342 -def handle_import_wxpython():
343 - pip_install('http://downloads.myriadrf.org/binaries/python27_amd64/wxPython-3.0.2.0-cp27-none-win_amd64.whl')
344 - pip_install('http://downloads.myriadrf.org/binaries/python27_amd64/wxPython_common-3.0.2.0-py2-none-any.whl')
345 -
346 -def check_import_pyopengl():
347 - import OpenGL
348 - import OpenGL.GL
349 - return inspect.getfile(OpenGL)
350 -
351 -def handle_import_pyopengl():
352 - print("Installing PyOpenGL with pip:")
353 - pip_install('http://downloads.myriadrf.org/binaries/python27_amd64/PyOpenGL-3.1.1-cp27-cp27m-win_amd64.whl')
354 - pip_install('http://downloads.myriadrf.org/binaries/python27_amd64/PyOpenGL_accelerate-3.1.1-cp27-cp27m-win_amd64.whl')
355 - print(" Done!")
356 -
357 -CHECKS = [
358 - #first check gr runtime so we can locate the install based on runtime dll in PATH
359 - ("GR_RUNTIME", 'locate GNURadio runtime', check_gr_runtime, handle_gr_runtime),
360 -
361 - #gtk runtime is similar check for dlls in the seatch PATH (no python required)
362 - ("GTK_RUNTIME", 'locate GTK+ runtime', check_gtk_runtime, handle_gtk_runtime),
363 -
364 - #basic python environment and import checks and using pip to install from a URL
365 - ("PYVERSION", 'Python version is 2.7', check_python_version, handle_python_version),
366 - ("IMPORT_GTK", 'import gtk module', check_import_gtk, handle_import_gtk),
367 - ("IMPORT_NUMPY", 'import numpy module', check_import_numpy, handle_import_numpy),
368 - ("IMPORT_LXML", 'import lxml module', check_import_lxml, handle_import_lxml),
369 - ("IMPORT_CHEETAH", 'import Cheetah module', check_import_cheetah, handle_import_cheetah),
370 - ("IMPORT_WX", 'import wx module', check_import_wxpython, handle_import_wxpython),
371 - ("IMPORT_OPENGL", 'import OpenGL module', check_import_pyopengl, handle_import_pyopengl),
372 -
373 - #final checks for GNU Radio and GRC that set local environment variables
374 - ("GRC_BLOCKS", 'GRC blocks path set', check_grc_blocks_path, handle_grc_blocks_path),
375 - ("IMPORT_GR", 'import GNURadio module', check_import_gr, handle_import_gr),
376 -]
377 -
378 -def main():
379 - print("")
380 - print("="*40)
381 - print("== Runtime and import checks")
382 - print("="*40)
383 -
384 - maxLen = max([len(c[1]) for c in CHECKS])
385 - msgs = dict()
386 - statuses = dict()
387 - numFails = 0
388 - numPasses = 0
389 - for key, what, check, handle in CHECKS:
390 - whatStr = "%s...%s"%(what, ' '*(maxLen-len(what)))
391 - try:
392 - msg = check()
393 - statStr = "PASS"
394 - checkPassed = True
395 - numPasses += 1
396 - except Exception as ex:
397 - statStr = "FAIL"
398 - checkPassed = False
399 - msg = str(ex)
400 - numFails += 1
401 -
402 - print(" * Check %s %s"%(whatStr, statStr))
403 - msgs[key] = msg
404 - statuses[key] = checkPassed
405 -
406 - if numPasses:
407 - print("")
408 - print("="*40)
409 - print("== Checks passed summary")
410 - print("="*40)
411 - for key, what, check, handle in CHECKS:
412 - if statuses[key]: print("%s:\t%s"%(key, msgs[key]))
413 -
414 - if numFails == 0:
415 - print("")
416 - print("All checked passed! gnuradio-companion is ready to use.")
417 - return 0
418 -
419 - if numFails:
420 - print("")
421 - print("="*40)
422 - print("== Checks failed summary")
423 - print("="*40)
424 - for key, what, check, handle in CHECKS:
425 - if not statuses[key]: print("%s:\t%s"%(key, msgs[key]))
426 -
427 - if numFails:
428 - print("")
429 - print("="*40)
430 - print("== Fixing problems")
431 - print("="*40)
432 - for key, what, check, handle in CHECKS:
433 - if not statuses[key]:
434 - print("Handling issues for %s..."%key)
435 - ret = handle()
436 - #exit asap when return code provided
437 - if ret is not None: return ret
438 -
439 - print("")
440 - print("Changes made! Please re-run this script in a new terminal.")
441 -
442 -if __name__ == '__main__':
443 -
444 - #run main with exception handling
445 - ret = None
446 - try: ret = main()
447 - except Exception as ex:
448 - print("Error: %s"%str(ex))
449 -
450 - #give time to read message if opened from explorer
451 - #wait for user to press a key
452 - print("")
453 - os.system('pause')
454 -
455 - #return the error code from main
456 - if ret is None: ret = 0
457 - exit(ret)
458 -{{/code}}
459 -
460 460  Avec copier - coller, je l'ai sauvé sur mon PC.
461 461  
462 462  J'ouvre le fichier avec "Edit with IDLE", ensuite via "run modul F5" , après avoir installé GTK+ runtime, il m'annonce que je dois réinstallé python 2.7, car j'avais chargé un autre 2.7.14 !
... ... @@ -608,27 +608,4 @@
608 608  Après scan, je trouve une radio sur 98,2 MHz
609 609  
610 610  
611 -== GNURadio ==
612 -
613 -En suivant l'excellent document qui se trouve :
614 -http://f0fyf.blogspot.ch/2014/08/recepteur-fm-avec-gnuradio.html
615 -je réalise mon premier programme SDR avec ma clef RTL-SDR.
616 -
617 -[[testSDR.grc>>attach:testSDR.grc]]
618 -
619 -[[image:DJtestDaarioSDR.png||height="545" width="562"]]
620 -
621 -
622 -Normalement on doit pouvoir lancer directement avec le fichier python :
623 -
624 -[[DJTestRadioSDR.py>>attach:DJTestRadioSDR.py||title="fonctionne avec python 2.7"]]
625 -
626 -
627 -[[image:testRadioSDR.png||height="358" width="599"]]
628 -
629 -
630 -C'est confirmé ! depuis un terminal :
631 -
632 -~~$//python DJTestRadioSDR.py//
633 -
634 -[[image:terminalDirectPython.png||height="196" width="610"]]
181 +== GNURadio ==
DJTestRadioSDR.py
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Dupertuis
Size
... ... @@ -1,1 +1,0 @@
1 -7.3 KB
Content
... ... @@ -1,220 +1,0 @@
1 -#!/usr/bin/env python2
2 -# -*- coding: utf-8 -*-
3 -##################################################
4 -# GNU Radio Python Flow Graph
5 -# Title: Test Radion SDR
6 -# Author: Jean-Yves HB9FOU
7 -# Generated: Tue Mar 27 17:01:00 2018
8 -##################################################
9 -
10 -if __name__ == '__main__':
11 - import ctypes
12 - import sys
13 - if sys.platform.startswith('linux'):
14 - try:
15 - x11 = ctypes.cdll.LoadLibrary('libX11.so')
16 - x11.XInitThreads()
17 - except:
18 - print "Warning: failed to XInitThreads()"
19 -
20 -from gnuradio import analog
21 -from gnuradio import audio
22 -from gnuradio import blocks
23 -from gnuradio import eng_notation
24 -from gnuradio import filter
25 -from gnuradio import gr
26 -from gnuradio import wxgui
27 -from gnuradio.eng_option import eng_option
28 -from gnuradio.fft import window
29 -from gnuradio.filter import firdes
30 -from gnuradio.wxgui import forms
31 -from gnuradio.wxgui import waterfallsink2
32 -from grc_gnuradio import wxgui as grc_wxgui
33 -from optparse import OptionParser
34 -import osmosdr
35 -import time
36 -import wx
37 -
38 -
39 -class DJTestRadioSDR(grc_wxgui.top_block_gui):
40 -
41 - def __init__(self):
42 - grc_wxgui.top_block_gui.__init__(self, title="Test Radion SDR")
43 - _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png"
44 - self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY))
45 -
46 - ##################################################
47 - # Variables
48 - ##################################################
49 - self.samp_rate = samp_rate = 2e6
50 - self.quadrature = quadrature = 500e3
51 - self.freq = freq = 98.2
52 - self.cutoff = cutoff = 100e3
53 - self.audio_dec = audio_dec = 10
54 - self.Volume = Volume = 8
55 -
56 - ##################################################
57 - # Blocks
58 - ##################################################
59 - _freq_sizer = wx.BoxSizer(wx.VERTICAL)
60 - self._freq_text_box = forms.text_box(
61 - parent=self.GetWin(),
62 - sizer=_freq_sizer,
63 - value=self.freq,
64 - callback=self.set_freq,
65 - label="Frequence",
66 - converter=forms.float_converter(),
67 - proportion=0,
68 - )
69 - self._freq_slider = forms.slider(
70 - parent=self.GetWin(),
71 - sizer=_freq_sizer,
72 - value=self.freq,
73 - callback=self.set_freq,
74 - minimum=88,
75 - maximum=108,
76 - num_steps=100,
77 - style=wx.SL_HORIZONTAL,
78 - cast=float,
79 - proportion=1,
80 - )
81 - self.Add(_freq_sizer)
82 - _Volume_sizer = wx.BoxSizer(wx.VERTICAL)
83 - self._Volume_text_box = forms.text_box(
84 - parent=self.GetWin(),
85 - sizer=_Volume_sizer,
86 - value=self.Volume,
87 - callback=self.set_Volume,
88 - label="volume",
89 - converter=forms.float_converter(),
90 - proportion=0,
91 - )
92 - self._Volume_slider = forms.slider(
93 - parent=self.GetWin(),
94 - sizer=_Volume_sizer,
95 - value=self.Volume,
96 - callback=self.set_Volume,
97 - minimum=0,
98 - maximum=100,
99 - num_steps=100,
100 - style=wx.SL_HORIZONTAL,
101 - cast=float,
102 - proportion=1,
103 - )
104 - self.Add(_Volume_sizer)
105 - self.wxgui_waterfallsink2_0 = waterfallsink2.waterfall_sink_c(
106 - self.GetWin(),
107 - baseband_freq=0,
108 - dynamic_range=100,
109 - ref_level=0,
110 - ref_scale=2.0,
111 - sample_rate=samp_rate,
112 - fft_size=512,
113 - fft_rate=15,
114 - average=False,
115 - avg_alpha=None,
116 - title="Waterfall ",
117 - )
118 - self.Add(self.wxgui_waterfallsink2_0.win)
119 - self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + "" )
120 - self.rtlsdr_source_0.set_sample_rate(samp_rate)
121 - self.rtlsdr_source_0.set_center_freq(freq*1e6, 0)
122 - self.rtlsdr_source_0.set_freq_corr(-30, 0)
123 - self.rtlsdr_source_0.set_dc_offset_mode(0, 0)
124 - self.rtlsdr_source_0.set_iq_balance_mode(0, 0)
125 - self.rtlsdr_source_0.set_gain_mode(True, 0)
126 - self.rtlsdr_source_0.set_gain(50, 0)
127 - self.rtlsdr_source_0.set_if_gain(30, 0)
128 - self.rtlsdr_source_0.set_bb_gain(20, 0)
129 - self.rtlsdr_source_0.set_antenna("1", 0)
130 - self.rtlsdr_source_0.set_bandwidth(0, 0)
131 -
132 - self.rational_resampler_xxx_1 = filter.rational_resampler_fff(
133 - interpolation=48,
134 - decimation=int(quadrature/1e3/audio_dec),
135 - taps=None,
136 - fractional_bw=None,
137 - )
138 - self.rational_resampler_xxx_0 = filter.rational_resampler_ccc(
139 - interpolation=1,
140 - decimation=int(samp_rate/quadrature),
141 - taps=None,
142 - fractional_bw=None,
143 - )
144 - self.low_pass_filter_0 = filter.fir_filter_ccf(1, firdes.low_pass(
145 - 1, samp_rate, cutoff, 1e6, firdes.WIN_HAMMING, 6.76))
146 - self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((Volume, ))
147 - self.audio_sink_0 = audio.sink(48000, "", True)
148 - self.analog_wfm_rcv_0 = analog.wfm_rcv(
149 - quad_rate=quadrature,
150 - audio_decimation=audio_dec,
151 - )
152 -
153 - ##################################################
154 - # Connections
155 - ##################################################
156 - self.connect((self.analog_wfm_rcv_0, 0), (self.rational_resampler_xxx_1, 0))
157 - self.connect((self.blocks_multiply_const_vxx_0, 0), (self.audio_sink_0, 0))
158 - self.connect((self.low_pass_filter_0, 0), (self.analog_wfm_rcv_0, 0))
159 - self.connect((self.rational_resampler_xxx_0, 0), (self.low_pass_filter_0, 0))
160 - self.connect((self.rational_resampler_xxx_1, 0), (self.blocks_multiply_const_vxx_0, 0))
161 - self.connect((self.rtlsdr_source_0, 0), (self.rational_resampler_xxx_0, 0))
162 - self.connect((self.rtlsdr_source_0, 0), (self.wxgui_waterfallsink2_0, 0))
163 -
164 - def get_samp_rate(self):
165 - return self.samp_rate
166 -
167 - def set_samp_rate(self, samp_rate):
168 - self.samp_rate = samp_rate
169 - self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.samp_rate, self.cutoff, 1e6, firdes.WIN_HAMMING, 6.76))
170 - self.rtlsdr_source_0.set_sample_rate(self.samp_rate)
171 - self.wxgui_waterfallsink2_0.set_sample_rate(self.samp_rate)
172 -
173 - def get_quadrature(self):
174 - return self.quadrature
175 -
176 - def set_quadrature(self, quadrature):
177 - self.quadrature = quadrature
178 -
179 - def get_freq(self):
180 - return self.freq
181 -
182 - def set_freq(self, freq):
183 - self.freq = freq
184 - self._freq_slider.set_value(self.freq)
185 - self._freq_text_box.set_value(self.freq)
186 - self.rtlsdr_source_0.set_center_freq(self.freq*1e6, 0)
187 -
188 - def get_cutoff(self):
189 - return self.cutoff
190 -
191 - def set_cutoff(self, cutoff):
192 - self.cutoff = cutoff
193 - self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.samp_rate, self.cutoff, 1e6, firdes.WIN_HAMMING, 6.76))
194 -
195 - def get_audio_dec(self):
196 - return self.audio_dec
197 -
198 - def set_audio_dec(self, audio_dec):
199 - self.audio_dec = audio_dec
200 -
201 - def get_Volume(self):
202 - return self.Volume
203 -
204 - def set_Volume(self, Volume):
205 - self.Volume = Volume
206 - self._Volume_slider.set_value(self.Volume)
207 - self._Volume_text_box.set_value(self.Volume)
208 - self.blocks_multiply_const_vxx_0.set_k((self.Volume, ))
209 -
210 -
211 -def main(top_block_cls=DJTestRadioSDR, options=None):
212 -
213 - tb = top_block_cls()
214 - tb.Start(True)
215 - tb.Wait()
216 -
217 -
218 -if __name__ == '__main__':
219 - main()
220 -
DJtestDaarioSDR.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Dupertuis
Size
... ... @@ -1,1 +1,0 @@
1 -107.0 KB
Content
terminalDirectPython.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Dupertuis
Size
... ... @@ -1,1 +1,0 @@
1 -46.8 KB
Content
testRadioSDR.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Dupertuis
Size
... ... @@ -1,1 +1,0 @@
1 -279.5 KB
Content
testSDR.grc
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Dupertuis
Size
... ... @@ -1,1 +1,0 @@
1 -41.3 KB
Content
... ... @@ -1,2193 +1,0 @@
1 -<?xml version='1.0' encoding='utf-8'?>
2 -<?grc format='1' created='3.7.9'?>
3 -<flow_graph>
4 - <timestamp>Tue Mar 27 14:31:41 2018</timestamp>
5 - <block>
6 - <key>options</key>
7 - <param>
8 - <key>author</key>
9 - <value>Jean-Yves HB9FOU</value>
10 - </param>
11 - <param>
12 - <key>window_size</key>
13 - <value></value>
14 - </param>
15 - <param>
16 - <key>category</key>
17 - <value>Custom</value>
18 - </param>
19 - <param>
20 - <key>comment</key>
21 - <value></value>
22 - </param>
23 - <param>
24 - <key>description</key>
25 - <value></value>
26 - </param>
27 - <param>
28 - <key>_enabled</key>
29 - <value>True</value>
30 - </param>
31 - <param>
32 - <key>_coordinate</key>
33 - <value>(8, -1)</value>
34 - </param>
35 - <param>
36 - <key>_rotation</key>
37 - <value>0</value>
38 - </param>
39 - <param>
40 - <key>generate_options</key>
41 - <value>wx_gui</value>
42 - </param>
43 - <param>
44 - <key>hier_block_src_path</key>
45 - <value>.:</value>
46 - </param>
47 - <param>
48 - <key>id</key>
49 - <value>DJTestRadioSDR</value>
50 - </param>
51 - <param>
52 - <key>max_nouts</key>
53 - <value>0</value>
54 - </param>
55 - <param>
56 - <key>qt_qss_theme</key>
57 - <value></value>
58 - </param>
59 - <param>
60 - <key>realtime_scheduling</key>
61 - <value></value>
62 - </param>
63 - <param>
64 - <key>run_command</key>
65 - <value>{python} -u {filename}</value>
66 - </param>
67 - <param>
68 - <key>run_options</key>
69 - <value>prompt</value>
70 - </param>
71 - <param>
72 - <key>run</key>
73 - <value>True</value>
74 - </param>
75 - <param>
76 - <key>thread_safe_setters</key>
77 - <value></value>
78 - </param>
79 - <param>
80 - <key>title</key>
81 - <value>Test Radion SDR</value>
82 - </param>
83 - </block>
84 - <block>
85 - <key>variable_slider</key>
86 - <param>
87 - <key>comment</key>
88 - <value></value>
89 - </param>
90 - <param>
91 - <key>converver</key>
92 - <value>float_converter</value>
93 - </param>
94 - <param>
95 - <key>value</key>
96 - <value>8</value>
97 - </param>
98 - <param>
99 - <key>_enabled</key>
100 - <value>True</value>
101 - </param>
102 - <param>
103 - <key>_coordinate</key>
104 - <value>(304, 9)</value>
105 - </param>
106 - <param>
107 - <key>_rotation</key>
108 - <value>0</value>
109 - </param>
110 - <param>
111 - <key>grid_pos</key>
112 - <value></value>
113 - </param>
114 - <param>
115 - <key>id</key>
116 - <value>Volume</value>
117 - </param>
118 - <param>
119 - <key>label</key>
120 - <value>volume</value>
121 - </param>
122 - <param>
123 - <key>max</key>
124 - <value>100</value>
125 - </param>
126 - <param>
127 - <key>min</key>
128 - <value>0</value>
129 - </param>
130 - <param>
131 - <key>notebook</key>
132 - <value></value>
133 - </param>
134 - <param>
135 - <key>num_steps</key>
136 - <value>100</value>
137 - </param>
138 - <param>
139 - <key>style</key>
140 - <value>wx.SL_HORIZONTAL</value>
141 - </param>
142 - </block>
143 - <block>
144 - <key>variable</key>
145 - <param>
146 - <key>comment</key>
147 - <value></value>
148 - </param>
149 - <param>
150 - <key>_enabled</key>
151 - <value>True</value>
152 - </param>
153 - <param>
154 - <key>_coordinate</key>
155 - <value>(656, 221)</value>
156 - </param>
157 - <param>
158 - <key>_rotation</key>
159 - <value>0</value>
160 - </param>
161 - <param>
162 - <key>id</key>
163 - <value>audio_dec</value>
164 - </param>
165 - <param>
166 - <key>value</key>
167 - <value>10</value>
168 - </param>
169 - </block>
170 - <block>
171 - <key>variable</key>
172 - <param>
173 - <key>comment</key>
174 - <value></value>
175 - </param>
176 - <param>
177 - <key>_enabled</key>
178 - <value>True</value>
179 - </param>
180 - <param>
181 - <key>_coordinate</key>
182 - <value>(456, 197)</value>
183 - </param>
184 - <param>
185 - <key>_rotation</key>
186 - <value>0</value>
187 - </param>
188 - <param>
189 - <key>id</key>
190 - <value>cutoff</value>
191 - </param>
192 - <param>
193 - <key>value</key>
194 - <value>100e3</value>
195 - </param>
196 - </block>
197 - <block>
198 - <key>variable_slider</key>
199 - <param>
200 - <key>comment</key>
201 - <value></value>
202 - </param>
203 - <param>
204 - <key>converver</key>
205 - <value>float_converter</value>
206 - </param>
207 - <param>
208 - <key>value</key>
209 - <value>98.2</value>
210 - </param>
211 - <param>
212 - <key>_enabled</key>
213 - <value>True</value>
214 - </param>
215 - <param>
216 - <key>_coordinate</key>
217 - <value>(424, 9)</value>
218 - </param>
219 - <param>
220 - <key>_rotation</key>
221 - <value>0</value>
222 - </param>
223 - <param>
224 - <key>grid_pos</key>
225 - <value></value>
226 - </param>
227 - <param>
228 - <key>id</key>
229 - <value>freq</value>
230 - </param>
231 - <param>
232 - <key>label</key>
233 - <value>Frequence</value>
234 - </param>
235 - <param>
236 - <key>max</key>
237 - <value>108</value>
238 - </param>
239 - <param>
240 - <key>min</key>
241 - <value>88</value>
242 - </param>
243 - <param>
244 - <key>notebook</key>
245 - <value></value>
246 - </param>
247 - <param>
248 - <key>num_steps</key>
249 - <value>100</value>
250 - </param>
251 - <param>
252 - <key>style</key>
253 - <value>wx.SL_HORIZONTAL</value>
254 - </param>
255 - </block>
256 - <block>
257 - <key>variable</key>
258 - <param>
259 - <key>comment</key>
260 - <value></value>
261 - </param>
262 - <param>
263 - <key>_enabled</key>
264 - <value>True</value>
265 - </param>
266 - <param>
267 - <key>_coordinate</key>
268 - <value>(176, 69)</value>
269 - </param>
270 - <param>
271 - <key>_rotation</key>
272 - <value>0</value>
273 - </param>
274 - <param>
275 - <key>id</key>
276 - <value>quadrature</value>
277 - </param>
278 - <param>
279 - <key>value</key>
280 - <value>500e3</value>
281 - </param>
282 - </block>
283 - <block>
284 - <key>variable</key>
285 - <param>
286 - <key>comment</key>
287 - <value></value>
288 - </param>
289 - <param>
290 - <key>_enabled</key>
291 - <value>True</value>
292 - </param>
293 - <param>
294 - <key>_coordinate</key>
295 - <value>(176, 5)</value>
296 - </param>
297 - <param>
298 - <key>_rotation</key>
299 - <value>0</value>
300 - </param>
301 - <param>
302 - <key>id</key>
303 - <value>samp_rate</value>
304 - </param>
305 - <param>
306 - <key>value</key>
307 - <value>2e6</value>
308 - </param>
309 - </block>
310 - <block>
311 - <key>analog_wfm_rcv</key>
312 - <param>
313 - <key>audio_decimation</key>
314 - <value>audio_dec</value>
315 - </param>
316 - <param>
317 - <key>alias</key>
318 - <value></value>
319 - </param>
320 - <param>
321 - <key>comment</key>
322 - <value></value>
323 - </param>
324 - <param>
325 - <key>affinity</key>
326 - <value></value>
327 - </param>
328 - <param>
329 - <key>_enabled</key>
330 - <value>True</value>
331 - </param>
332 - <param>
333 - <key>_coordinate</key>
334 - <value>(656, 293)</value>
335 - </param>
336 - <param>
337 - <key>_rotation</key>
338 - <value>0</value>
339 - </param>
340 - <param>
341 - <key>id</key>
342 - <value>analog_wfm_rcv_0</value>
343 - </param>
344 - <param>
345 - <key>maxoutbuf</key>
346 - <value>0</value>
347 - </param>
348 - <param>
349 - <key>minoutbuf</key>
350 - <value>0</value>
351 - </param>
352 - <param>
353 - <key>quad_rate</key>
354 - <value>quadrature</value>
355 - </param>
356 - </block>
357 - <block>
358 - <key>audio_sink</key>
359 - <param>
360 - <key>alias</key>
361 - <value></value>
362 - </param>
363 - <param>
364 - <key>comment</key>
365 - <value></value>
366 - </param>
367 - <param>
368 - <key>affinity</key>
369 - <value></value>
370 - </param>
371 - <param>
372 - <key>device_name</key>
373 - <value></value>
374 - </param>
375 - <param>
376 - <key>_enabled</key>
377 - <value>True</value>
378 - </param>
379 - <param>
380 - <key>_coordinate</key>
381 - <value>(688, 476)</value>
382 - </param>
383 - <param>
384 - <key>_rotation</key>
385 - <value>0</value>
386 - </param>
387 - <param>
388 - <key>id</key>
389 - <value>audio_sink_0</value>
390 - </param>
391 - <param>
392 - <key>num_inputs</key>
393 - <value>1</value>
394 - </param>
395 - <param>
396 - <key>ok_to_block</key>
397 - <value>True</value>
398 - </param>
399 - <param>
400 - <key>samp_rate</key>
401 - <value>48000</value>
402 - </param>
403 - </block>
404 - <block>
405 - <key>blocks_multiply_const_vxx</key>
406 - <param>
407 - <key>alias</key>
408 - <value></value>
409 - </param>
410 - <param>
411 - <key>comment</key>
412 - <value></value>
413 - </param>
414 - <param>
415 - <key>const</key>
416 - <value>Volume</value>
417 - </param>
418 - <param>
419 - <key>affinity</key>
420 - <value></value>
421 - </param>
422 - <param>
423 - <key>_enabled</key>
424 - <value>True</value>
425 - </param>
426 - <param>
427 - <key>_coordinate</key>
428 - <value>(504, 476)</value>
429 - </param>
430 - <param>
431 - <key>_rotation</key>
432 - <value>0</value>
433 - </param>
434 - <param>
435 - <key>id</key>
436 - <value>blocks_multiply_const_vxx_0</value>
437 - </param>
438 - <param>
439 - <key>type</key>
440 - <value>float</value>
441 - </param>
442 - <param>
443 - <key>maxoutbuf</key>
444 - <value>0</value>
445 - </param>
446 - <param>
447 - <key>minoutbuf</key>
448 - <value>0</value>
449 - </param>
450 - <param>
451 - <key>vlen</key>
452 - <value>1</value>
453 - </param>
454 - </block>
455 - <block>
456 - <key>low_pass_filter</key>
457 - <param>
458 - <key>beta</key>
459 - <value>6.76</value>
460 - </param>
461 - <param>
462 - <key>alias</key>
463 - <value></value>
464 - </param>
465 - <param>
466 - <key>comment</key>
467 - <value></value>
468 - </param>
469 - <param>
470 - <key>affinity</key>
471 - <value></value>
472 - </param>
473 - <param>
474 - <key>cutoff_freq</key>
475 - <value>cutoff</value>
476 - </param>
477 - <param>
478 - <key>decim</key>
479 - <value>1</value>
480 - </param>
481 - <param>
482 - <key>_enabled</key>
483 - <value>True</value>
484 - </param>
485 - <param>
486 - <key>type</key>
487 - <value>fir_filter_ccf</value>
488 - </param>
489 - <param>
490 - <key>_coordinate</key>
491 - <value>(456, 258)</value>
492 - </param>
493 - <param>
494 - <key>_rotation</key>
495 - <value>0</value>
496 - </param>
497 - <param>
498 - <key>gain</key>
499 - <value>1</value>
500 - </param>
501 - <param>
502 - <key>id</key>
503 - <value>low_pass_filter_0</value>
504 - </param>
505 - <param>
506 - <key>interp</key>
507 - <value>1</value>
508 - </param>
509 - <param>
510 - <key>maxoutbuf</key>
511 - <value>0</value>
512 - </param>
513 - <param>
514 - <key>minoutbuf</key>
515 - <value>0</value>
516 - </param>
517 - <param>
518 - <key>samp_rate</key>
519 - <value>samp_rate</value>
520 - </param>
521 - <param>
522 - <key>width</key>
523 - <value>1e6</value>
524 - </param>
525 - <param>
526 - <key>win</key>
527 - <value>firdes.WIN_HAMMING</value>
528 - </param>
529 - </block>
530 - <block>
531 - <key>rational_resampler_xxx</key>
532 - <param>
533 - <key>alias</key>
534 - <value></value>
535 - </param>
536 - <param>
537 - <key>comment</key>
538 - <value></value>
539 - </param>
540 - <param>
541 - <key>affinity</key>
542 - <value></value>
543 - </param>
544 - <param>
545 - <key>decim</key>
546 - <value>int(samp_rate/quadrature)</value>
547 - </param>
548 - <param>
549 - <key>_enabled</key>
550 - <value>True</value>
551 - </param>
552 - <param>
553 - <key>fbw</key>
554 - <value>0</value>
555 - </param>
556 - <param>
557 - <key>_coordinate</key>
558 - <value>(256, 279)</value>
559 - </param>
560 - <param>
561 - <key>_rotation</key>
562 - <value>0</value>
563 - </param>
564 - <param>
565 - <key>id</key>
566 - <value>rational_resampler_xxx_0</value>
567 - </param>
568 - <param>
569 - <key>interp</key>
570 - <value>1</value>
571 - </param>
572 - <param>
573 - <key>maxoutbuf</key>
574 - <value>0</value>
575 - </param>
576 - <param>
577 - <key>minoutbuf</key>
578 - <value>0</value>
579 - </param>
580 - <param>
581 - <key>taps</key>
582 - <value></value>
583 - </param>
584 - <param>
585 - <key>type</key>
586 - <value>ccc</value>
587 - </param>
588 - </block>
589 - <block>
590 - <key>rational_resampler_xxx</key>
591 - <param>
592 - <key>alias</key>
593 - <value></value>
594 - </param>
595 - <param>
596 - <key>comment</key>
597 - <value></value>
598 - </param>
599 - <param>
600 - <key>affinity</key>
601 - <value></value>
602 - </param>
603 - <param>
604 - <key>decim</key>
605 - <value>int(quadrature/1e3/audio_dec)</value>
606 - </param>
607 - <param>
608 - <key>_enabled</key>
609 - <value>True</value>
610 - </param>
611 - <param>
612 - <key>fbw</key>
613 - <value>0</value>
614 - </param>
615 - <param>
616 - <key>_coordinate</key>
617 - <value>(312, 455)</value>
618 - </param>
619 - <param>
620 - <key>_rotation</key>
621 - <value>0</value>
622 - </param>
623 - <param>
624 - <key>id</key>
625 - <value>rational_resampler_xxx_1</value>
626 - </param>
627 - <param>
628 - <key>interp</key>
629 - <value>48</value>
630 - </param>
631 - <param>
632 - <key>maxoutbuf</key>
633 - <value>0</value>
634 - </param>
635 - <param>
636 - <key>minoutbuf</key>
637 - <value>0</value>
638 - </param>
639 - <param>
640 - <key>taps</key>
641 - <value></value>
642 - </param>
643 - <param>
644 - <key>type</key>
645 - <value>fff</value>
646 - </param>
647 - </block>
648 - <block>
649 - <key>rtlsdr_source</key>
650 - <param>
651 - <key>alias</key>
652 - <value></value>
653 - </param>
654 - <param>
655 - <key>ant0</key>
656 - <value>1</value>
657 - </param>
658 - <param>
659 - <key>bb_gain0</key>
660 - <value>20</value>
661 - </param>
662 - <param>
663 - <key>bw0</key>
664 - <value>0</value>
665 - </param>
666 - <param>
667 - <key>dc_offset_mode0</key>
668 - <value>0</value>
669 - </param>
670 - <param>
671 - <key>corr0</key>
672 - <value>-30</value>
673 - </param>
674 - <param>
675 - <key>freq0</key>
676 - <value>freq*1e6</value>
677 - </param>
678 - <param>
679 - <key>gain_mode0</key>
680 - <value>True</value>
681 - </param>
682 - <param>
683 - <key>if_gain0</key>
684 - <value>30</value>
685 - </param>
686 - <param>
687 - <key>iq_balance_mode0</key>
688 - <value>0</value>
689 - </param>
690 - <param>
691 - <key>gain0</key>
692 - <value>50</value>
693 - </param>
694 - <param>
695 - <key>ant10</key>
696 - <value></value>
697 - </param>
698 - <param>
699 - <key>bb_gain10</key>
700 - <value>20</value>
701 - </param>
702 - <param>
703 - <key>bw10</key>
704 - <value>0</value>
705 - </param>
706 - <param>
707 - <key>dc_offset_mode10</key>
708 - <value>0</value>
709 - </param>
710 - <param>
711 - <key>corr10</key>
712 - <value>0</value>
713 - </param>
714 - <param>
715 - <key>freq10</key>
716 - <value>100e6</value>
717 - </param>
718 - <param>
719 - <key>gain_mode10</key>
720 - <value>False</value>
721 - </param>
722 - <param>
723 - <key>if_gain10</key>
724 - <value>20</value>
725 - </param>
726 - <param>
727 - <key>iq_balance_mode10</key>
728 - <value>0</value>
729 - </param>
730 - <param>
731 - <key>gain10</key>
732 - <value>10</value>
733 - </param>
734 - <param>
735 - <key>ant11</key>
736 - <value></value>
737 - </param>
738 - <param>
739 - <key>bb_gain11</key>
740 - <value>20</value>
741 - </param>
742 - <param>
743 - <key>bw11</key>
744 - <value>0</value>
745 - </param>
746 - <param>
747 - <key>dc_offset_mode11</key>
748 - <value>0</value>
749 - </param>
750 - <param>
751 - <key>corr11</key>
752 - <value>0</value>
753 - </param>
754 - <param>
755 - <key>freq11</key>
756 - <value>100e6</value>
757 - </param>
758 - <param>
759 - <key>gain_mode11</key>
760 - <value>False</value>
761 - </param>
762 - <param>
763 - <key>if_gain11</key>
764 - <value>20</value>
765 - </param>
766 - <param>
767 - <key>iq_balance_mode11</key>
768 - <value>0</value>
769 - </param>
770 - <param>
771 - <key>gain11</key>
772 - <value>10</value>
773 - </param>
774 - <param>
775 - <key>ant12</key>
776 - <value></value>
777 - </param>
778 - <param>
779 - <key>bb_gain12</key>
780 - <value>20</value>
781 - </param>
782 - <param>
783 - <key>bw12</key>
784 - <value>0</value>
785 - </param>
786 - <param>
787 - <key>dc_offset_mode12</key>
788 - <value>0</value>
789 - </param>
790 - <param>
791 - <key>corr12</key>
792 - <value>0</value>
793 - </param>
794 - <param>
795 - <key>freq12</key>
796 - <value>100e6</value>
797 - </param>
798 - <param>
799 - <key>gain_mode12</key>
800 - <value>False</value>
801 - </param>
802 - <param>
803 - <key>if_gain12</key>
804 - <value>20</value>
805 - </param>
806 - <param>
807 - <key>iq_balance_mode12</key>
808 - <value>0</value>
809 - </param>
810 - <param>
811 - <key>gain12</key>
812 - <value>10</value>
813 - </param>
814 - <param>
815 - <key>ant13</key>
816 - <value></value>
817 - </param>
818 - <param>
819 - <key>bb_gain13</key>
820 - <value>20</value>
821 - </param>
822 - <param>
823 - <key>bw13</key>
824 - <value>0</value>
825 - </param>
826 - <param>
827 - <key>dc_offset_mode13</key>
828 - <value>0</value>
829 - </param>
830 - <param>
831 - <key>corr13</key>
832 - <value>0</value>
833 - </param>
834 - <param>
835 - <key>freq13</key>
836 - <value>100e6</value>
837 - </param>
838 - <param>
839 - <key>gain_mode13</key>
840 - <value>False</value>
841 - </param>
842 - <param>
843 - <key>if_gain13</key>
844 - <value>20</value>
845 - </param>
846 - <param>
847 - <key>iq_balance_mode13</key>
848 - <value>0</value>
849 - </param>
850 - <param>
851 - <key>gain13</key>
852 - <value>10</value>
853 - </param>
854 - <param>
855 - <key>ant14</key>
856 - <value></value>
857 - </param>
858 - <param>
859 - <key>bb_gain14</key>
860 - <value>20</value>
861 - </param>
862 - <param>
863 - <key>bw14</key>
864 - <value>0</value>
865 - </param>
866 - <param>
867 - <key>dc_offset_mode14</key>
868 - <value>0</value>
869 - </param>
870 - <param>
871 - <key>corr14</key>
872 - <value>0</value>
873 - </param>
874 - <param>
875 - <key>freq14</key>
876 - <value>100e6</value>
877 - </param>
878 - <param>
879 - <key>gain_mode14</key>
880 - <value>False</value>
881 - </param>
882 - <param>
883 - <key>if_gain14</key>
884 - <value>20</value>
885 - </param>
886 - <param>
887 - <key>iq_balance_mode14</key>
888 - <value>0</value>
889 - </param>
890 - <param>
891 - <key>gain14</key>
892 - <value>10</value>
893 - </param>
894 - <param>
895 - <key>ant15</key>
896 - <value></value>
897 - </param>
898 - <param>
899 - <key>bb_gain15</key>
900 - <value>20</value>
901 - </param>
902 - <param>
903 - <key>bw15</key>
904 - <value>0</value>
905 - </param>
906 - <param>
907 - <key>dc_offset_mode15</key>
908 - <value>0</value>
909 - </param>
910 - <param>
911 - <key>corr15</key>
912 - <value>0</value>
913 - </param>
914 - <param>
915 - <key>freq15</key>
916 - <value>100e6</value>
917 - </param>
918 - <param>
919 - <key>gain_mode15</key>
920 - <value>False</value>
921 - </param>
922 - <param>
923 - <key>if_gain15</key>
924 - <value>20</value>
925 - </param>
926 - <param>
927 - <key>iq_balance_mode15</key>
928 - <value>0</value>
929 - </param>
930 - <param>
931 - <key>gain15</key>
932 - <value>10</value>
933 - </param>
934 - <param>
935 - <key>ant16</key>
936 - <value></value>
937 - </param>
938 - <param>
939 - <key>bb_gain16</key>
940 - <value>20</value>
941 - </param>
942 - <param>
943 - <key>bw16</key>
944 - <value>0</value>
945 - </param>
946 - <param>
947 - <key>dc_offset_mode16</key>
948 - <value>0</value>
949 - </param>
950 - <param>
951 - <key>corr16</key>
952 - <value>0</value>
953 - </param>
954 - <param>
955 - <key>freq16</key>
956 - <value>100e6</value>
957 - </param>
958 - <param>
959 - <key>gain_mode16</key>
960 - <value>False</value>
961 - </param>
962 - <param>
963 - <key>if_gain16</key>
964 - <value>20</value>
965 - </param>
966 - <param>
967 - <key>iq_balance_mode16</key>
968 - <value>0</value>
969 - </param>
970 - <param>
971 - <key>gain16</key>
972 - <value>10</value>
973 - </param>
974 - <param>
975 - <key>ant17</key>
976 - <value></value>
977 - </param>
978 - <param>
979 - <key>bb_gain17</key>
980 - <value>20</value>
981 - </param>
982 - <param>
983 - <key>bw17</key>
984 - <value>0</value>
985 - </param>
986 - <param>
987 - <key>dc_offset_mode17</key>
988 - <value>0</value>
989 - </param>
990 - <param>
991 - <key>corr17</key>
992 - <value>0</value>
993 - </param>
994 - <param>
995 - <key>freq17</key>
996 - <value>100e6</value>
997 - </param>
998 - <param>
999 - <key>gain_mode17</key>
1000 - <value>False</value>
1001 - </param>
1002 - <param>
1003 - <key>if_gain17</key>
1004 - <value>20</value>
1005 - </param>
1006 - <param>
1007 - <key>iq_balance_mode17</key>
1008 - <value>0</value>
1009 - </param>
1010 - <param>
1011 - <key>gain17</key>
1012 - <value>10</value>
1013 - </param>
1014 - <param>
1015 - <key>ant18</key>
1016 - <value></value>
1017 - </param>
1018 - <param>
1019 - <key>bb_gain18</key>
1020 - <value>20</value>
1021 - </param>
1022 - <param>
1023 - <key>bw18</key>
1024 - <value>0</value>
1025 - </param>
1026 - <param>
1027 - <key>dc_offset_mode18</key>
1028 - <value>0</value>
1029 - </param>
1030 - <param>
1031 - <key>corr18</key>
1032 - <value>0</value>
1033 - </param>
1034 - <param>
1035 - <key>freq18</key>
1036 - <value>100e6</value>
1037 - </param>
1038 - <param>
1039 - <key>gain_mode18</key>
1040 - <value>False</value>
1041 - </param>
1042 - <param>
1043 - <key>if_gain18</key>
1044 - <value>20</value>
1045 - </param>
1046 - <param>
1047 - <key>iq_balance_mode18</key>
1048 - <value>0</value>
1049 - </param>
1050 - <param>
1051 - <key>gain18</key>
1052 - <value>10</value>
1053 - </param>
1054 - <param>
1055 - <key>ant19</key>
1056 - <value></value>
1057 - </param>
1058 - <param>
1059 - <key>bb_gain19</key>
1060 - <value>20</value>
1061 - </param>
1062 - <param>
1063 - <key>bw19</key>
1064 - <value>0</value>
1065 - </param>
1066 - <param>
1067 - <key>dc_offset_mode19</key>
1068 - <value>0</value>
1069 - </param>
1070 - <param>
1071 - <key>corr19</key>
1072 - <value>0</value>
1073 - </param>
1074 - <param>
1075 - <key>freq19</key>
1076 - <value>100e6</value>
1077 - </param>
1078 - <param>
1079 - <key>gain_mode19</key>
1080 - <value>False</value>
1081 - </param>
1082 - <param>
1083 - <key>if_gain19</key>
1084 - <value>20</value>
1085 - </param>
1086 - <param>
1087 - <key>iq_balance_mode19</key>
1088 - <value>0</value>
1089 - </param>
1090 - <param>
1091 - <key>gain19</key>
1092 - <value>10</value>
1093 - </param>
1094 - <param>
1095 - <key>ant1</key>
1096 - <value></value>
1097 - </param>
1098 - <param>
1099 - <key>bb_gain1</key>
1100 - <value>20</value>
1101 - </param>
1102 - <param>
1103 - <key>bw1</key>
1104 - <value>0</value>
1105 - </param>
1106 - <param>
1107 - <key>dc_offset_mode1</key>
1108 - <value>0</value>
1109 - </param>
1110 - <param>
1111 - <key>corr1</key>
1112 - <value>0</value>
1113 - </param>
1114 - <param>
1115 - <key>freq1</key>
1116 - <value>100e6</value>
1117 - </param>
1118 - <param>
1119 - <key>gain_mode1</key>
1120 - <value>False</value>
1121 - </param>
1122 - <param>
1123 - <key>if_gain1</key>
1124 - <value>20</value>
1125 - </param>
1126 - <param>
1127 - <key>iq_balance_mode1</key>
1128 - <value>0</value>
1129 - </param>
1130 - <param>
1131 - <key>gain1</key>
1132 - <value>10</value>
1133 - </param>
1134 - <param>
1135 - <key>ant20</key>
1136 - <value></value>
1137 - </param>
1138 - <param>
1139 - <key>bb_gain20</key>
1140 - <value>20</value>
1141 - </param>
1142 - <param>
1143 - <key>bw20</key>
1144 - <value>0</value>
1145 - </param>
1146 - <param>
1147 - <key>dc_offset_mode20</key>
1148 - <value>0</value>
1149 - </param>
1150 - <param>
1151 - <key>corr20</key>
1152 - <value>0</value>
1153 - </param>
1154 - <param>
1155 - <key>freq20</key>
1156 - <value>100e6</value>
1157 - </param>
1158 - <param>
1159 - <key>gain_mode20</key>
1160 - <value>False</value>
1161 - </param>
1162 - <param>
1163 - <key>if_gain20</key>
1164 - <value>20</value>
1165 - </param>
1166 - <param>
1167 - <key>iq_balance_mode20</key>
1168 - <value>0</value>
1169 - </param>
1170 - <param>
1171 - <key>gain20</key>
1172 - <value>10</value>
1173 - </param>
1174 - <param>
1175 - <key>ant21</key>
1176 - <value></value>
1177 - </param>
1178 - <param>
1179 - <key>bb_gain21</key>
1180 - <value>20</value>
1181 - </param>
1182 - <param>
1183 - <key>bw21</key>
1184 - <value>0</value>
1185 - </param>
1186 - <param>
1187 - <key>dc_offset_mode21</key>
1188 - <value>0</value>
1189 - </param>
1190 - <param>
1191 - <key>corr21</key>
1192 - <value>0</value>
1193 - </param>
1194 - <param>
1195 - <key>freq21</key>
1196 - <value>100e6</value>
1197 - </param>
1198 - <param>
1199 - <key>gain_mode21</key>
1200 - <value>False</value>
1201 - </param>
1202 - <param>
1203 - <key>if_gain21</key>
1204 - <value>20</value>
1205 - </param>
1206 - <param>
1207 - <key>iq_balance_mode21</key>
1208 - <value>0</value>
1209 - </param>
1210 - <param>
1211 - <key>gain21</key>
1212 - <value>10</value>
1213 - </param>
1214 - <param>
1215 - <key>ant22</key>
1216 - <value></value>
1217 - </param>
1218 - <param>
1219 - <key>bb_gain22</key>
1220 - <value>20</value>
1221 - </param>
1222 - <param>
1223 - <key>bw22</key>
1224 - <value>0</value>
1225 - </param>
1226 - <param>
1227 - <key>dc_offset_mode22</key>
1228 - <value>0</value>
1229 - </param>
1230 - <param>
1231 - <key>corr22</key>
1232 - <value>0</value>
1233 - </param>
1234 - <param>
1235 - <key>freq22</key>
1236 - <value>100e6</value>
1237 - </param>
1238 - <param>
1239 - <key>gain_mode22</key>
1240 - <value>False</value>
1241 - </param>
1242 - <param>
1243 - <key>if_gain22</key>
1244 - <value>20</value>
1245 - </param>
1246 - <param>
1247 - <key>iq_balance_mode22</key>
1248 - <value>0</value>
1249 - </param>
1250 - <param>
1251 - <key>gain22</key>
1252 - <value>10</value>
1253 - </param>
1254 - <param>
1255 - <key>ant23</key>
1256 - <value></value>
1257 - </param>
1258 - <param>
1259 - <key>bb_gain23</key>
1260 - <value>20</value>
1261 - </param>
1262 - <param>
1263 - <key>bw23</key>
1264 - <value>0</value>
1265 - </param>
1266 - <param>
1267 - <key>dc_offset_mode23</key>
1268 - <value>0</value>
1269 - </param>
1270 - <param>
1271 - <key>corr23</key>
1272 - <value>0</value>
1273 - </param>
1274 - <param>
1275 - <key>freq23</key>
1276 - <value>100e6</value>
1277 - </param>
1278 - <param>
1279 - <key>gain_mode23</key>
1280 - <value>False</value>
1281 - </param>
1282 - <param>
1283 - <key>if_gain23</key>
1284 - <value>20</value>
1285 - </param>
1286 - <param>
1287 - <key>iq_balance_mode23</key>
1288 - <value>0</value>
1289 - </param>
1290 - <param>
1291 - <key>gain23</key>
1292 - <value>10</value>
1293 - </param>
1294 - <param>
1295 - <key>ant24</key>
1296 - <value></value>
1297 - </param>
1298 - <param>
1299 - <key>bb_gain24</key>
1300 - <value>20</value>
1301 - </param>
1302 - <param>
1303 - <key>bw24</key>
1304 - <value>0</value>
1305 - </param>
1306 - <param>
1307 - <key>dc_offset_mode24</key>
1308 - <value>0</value>
1309 - </param>
1310 - <param>
1311 - <key>corr24</key>
1312 - <value>0</value>
1313 - </param>
1314 - <param>
1315 - <key>freq24</key>
1316 - <value>100e6</value>
1317 - </param>
1318 - <param>
1319 - <key>gain_mode24</key>
1320 - <value>False</value>
1321 - </param>
1322 - <param>
1323 - <key>if_gain24</key>
1324 - <value>20</value>
1325 - </param>
1326 - <param>
1327 - <key>iq_balance_mode24</key>
1328 - <value>0</value>
1329 - </param>
1330 - <param>
1331 - <key>gain24</key>
1332 - <value>10</value>
1333 - </param>
1334 - <param>
1335 - <key>ant25</key>
1336 - <value></value>
1337 - </param>
1338 - <param>
1339 - <key>bb_gain25</key>
1340 - <value>20</value>
1341 - </param>
1342 - <param>
1343 - <key>bw25</key>
1344 - <value>0</value>
1345 - </param>
1346 - <param>
1347 - <key>dc_offset_mode25</key>
1348 - <value>0</value>
1349 - </param>
1350 - <param>
1351 - <key>corr25</key>
1352 - <value>0</value>
1353 - </param>
1354 - <param>
1355 - <key>freq25</key>
1356 - <value>100e6</value>
1357 - </param>
1358 - <param>
1359 - <key>gain_mode25</key>
1360 - <value>False</value>
1361 - </param>
1362 - <param>
1363 - <key>if_gain25</key>
1364 - <value>20</value>
1365 - </param>
1366 - <param>
1367 - <key>iq_balance_mode25</key>
1368 - <value>0</value>
1369 - </param>
1370 - <param>
1371 - <key>gain25</key>
1372 - <value>10</value>
1373 - </param>
1374 - <param>
1375 - <key>ant26</key>
1376 - <value></value>
1377 - </param>
1378 - <param>
1379 - <key>bb_gain26</key>
1380 - <value>20</value>
1381 - </param>
1382 - <param>
1383 - <key>bw26</key>
1384 - <value>0</value>
1385 - </param>
1386 - <param>
1387 - <key>dc_offset_mode26</key>
1388 - <value>0</value>
1389 - </param>
1390 - <param>
1391 - <key>corr26</key>
1392 - <value>0</value>
1393 - </param>
1394 - <param>
1395 - <key>freq26</key>
1396 - <value>100e6</value>
1397 - </param>
1398 - <param>
1399 - <key>gain_mode26</key>
1400 - <value>False</value>
1401 - </param>
1402 - <param>
1403 - <key>if_gain26</key>
1404 - <value>20</value>
1405 - </param>
1406 - <param>
1407 - <key>iq_balance_mode26</key>
1408 - <value>0</value>
1409 - </param>
1410 - <param>
1411 - <key>gain26</key>
1412 - <value>10</value>
1413 - </param>
1414 - <param>
1415 - <key>ant27</key>
1416 - <value></value>
1417 - </param>
1418 - <param>
1419 - <key>bb_gain27</key>
1420 - <value>20</value>
1421 - </param>
1422 - <param>
1423 - <key>bw27</key>
1424 - <value>0</value>
1425 - </param>
1426 - <param>
1427 - <key>dc_offset_mode27</key>
1428 - <value>0</value>
1429 - </param>
1430 - <param>
1431 - <key>corr27</key>
1432 - <value>0</value>
1433 - </param>
1434 - <param>
1435 - <key>freq27</key>
1436 - <value>100e6</value>
1437 - </param>
1438 - <param>
1439 - <key>gain_mode27</key>
1440 - <value>False</value>
1441 - </param>
1442 - <param>
1443 - <key>if_gain27</key>
1444 - <value>20</value>
1445 - </param>
1446 - <param>
1447 - <key>iq_balance_mode27</key>
1448 - <value>0</value>
1449 - </param>
1450 - <param>
1451 - <key>gain27</key>
1452 - <value>10</value>
1453 - </param>
1454 - <param>
1455 - <key>ant28</key>
1456 - <value></value>
1457 - </param>
1458 - <param>
1459 - <key>bb_gain28</key>
1460 - <value>20</value>
1461 - </param>
1462 - <param>
1463 - <key>bw28</key>
1464 - <value>0</value>
1465 - </param>
1466 - <param>
1467 - <key>dc_offset_mode28</key>
1468 - <value>0</value>
1469 - </param>
1470 - <param>
1471 - <key>corr28</key>
1472 - <value>0</value>
1473 - </param>
1474 - <param>
1475 - <key>freq28</key>
1476 - <value>100e6</value>
1477 - </param>
1478 - <param>
1479 - <key>gain_mode28</key>
1480 - <value>False</value>
1481 - </param>
1482 - <param>
1483 - <key>if_gain28</key>
1484 - <value>20</value>
1485 - </param>
1486 - <param>
1487 - <key>iq_balance_mode28</key>
1488 - <value>0</value>
1489 - </param>
1490 - <param>
1491 - <key>gain28</key>
1492 - <value>10</value>
1493 - </param>
1494 - <param>
1495 - <key>ant29</key>
1496 - <value></value>
1497 - </param>
1498 - <param>
1499 - <key>bb_gain29</key>
1500 - <value>20</value>
1501 - </param>
1502 - <param>
1503 - <key>bw29</key>
1504 - <value>0</value>
1505 - </param>
1506 - <param>
1507 - <key>dc_offset_mode29</key>
1508 - <value>0</value>
1509 - </param>
1510 - <param>
1511 - <key>corr29</key>
1512 - <value>0</value>
1513 - </param>
1514 - <param>
1515 - <key>freq29</key>
1516 - <value>100e6</value>
1517 - </param>
1518 - <param>
1519 - <key>gain_mode29</key>
1520 - <value>False</value>
1521 - </param>
1522 - <param>
1523 - <key>if_gain29</key>
1524 - <value>20</value>
1525 - </param>
1526 - <param>
1527 - <key>iq_balance_mode29</key>
1528 - <value>0</value>
1529 - </param>
1530 - <param>
1531 - <key>gain29</key>
1532 - <value>10</value>
1533 - </param>
1534 - <param>
1535 - <key>ant2</key>
1536 - <value></value>
1537 - </param>
1538 - <param>
1539 - <key>bb_gain2</key>
1540 - <value>20</value>
1541 - </param>
1542 - <param>
1543 - <key>bw2</key>
1544 - <value>0</value>
1545 - </param>
1546 - <param>
1547 - <key>dc_offset_mode2</key>
1548 - <value>0</value>
1549 - </param>
1550 - <param>
1551 - <key>corr2</key>
1552 - <value>0</value>
1553 - </param>
1554 - <param>
1555 - <key>freq2</key>
1556 - <value>100e6</value>
1557 - </param>
1558 - <param>
1559 - <key>gain_mode2</key>
1560 - <value>False</value>
1561 - </param>
1562 - <param>
1563 - <key>if_gain2</key>
1564 - <value>20</value>
1565 - </param>
1566 - <param>
1567 - <key>iq_balance_mode2</key>
1568 - <value>0</value>
1569 - </param>
1570 - <param>
1571 - <key>gain2</key>
1572 - <value>10</value>
1573 - </param>
1574 - <param>
1575 - <key>ant30</key>
1576 - <value></value>
1577 - </param>
1578 - <param>
1579 - <key>bb_gain30</key>
1580 - <value>20</value>
1581 - </param>
1582 - <param>
1583 - <key>bw30</key>
1584 - <value>0</value>
1585 - </param>
1586 - <param>
1587 - <key>dc_offset_mode30</key>
1588 - <value>0</value>
1589 - </param>
1590 - <param>
1591 - <key>corr30</key>
1592 - <value>0</value>
1593 - </param>
1594 - <param>
1595 - <key>freq30</key>
1596 - <value>100e6</value>
1597 - </param>
1598 - <param>
1599 - <key>gain_mode30</key>
1600 - <value>False</value>
1601 - </param>
1602 - <param>
1603 - <key>if_gain30</key>
1604 - <value>20</value>
1605 - </param>
1606 - <param>
1607 - <key>iq_balance_mode30</key>
1608 - <value>0</value>
1609 - </param>
1610 - <param>
1611 - <key>gain30</key>
1612 - <value>10</value>
1613 - </param>
1614 - <param>
1615 - <key>ant31</key>
1616 - <value></value>
1617 - </param>
1618 - <param>
1619 - <key>bb_gain31</key>
1620 - <value>20</value>
1621 - </param>
1622 - <param>
1623 - <key>bw31</key>
1624 - <value>0</value>
1625 - </param>
1626 - <param>
1627 - <key>dc_offset_mode31</key>
1628 - <value>0</value>
1629 - </param>
1630 - <param>
1631 - <key>corr31</key>
1632 - <value>0</value>
1633 - </param>
1634 - <param>
1635 - <key>freq31</key>
1636 - <value>100e6</value>
1637 - </param>
1638 - <param>
1639 - <key>gain_mode31</key>
1640 - <value>False</value>
1641 - </param>
1642 - <param>
1643 - <key>if_gain31</key>
1644 - <value>20</value>
1645 - </param>
1646 - <param>
1647 - <key>iq_balance_mode31</key>
1648 - <value>0</value>
1649 - </param>
1650 - <param>
1651 - <key>gain31</key>
1652 - <value>10</value>
1653 - </param>
1654 - <param>
1655 - <key>ant3</key>
1656 - <value></value>
1657 - </param>
1658 - <param>
1659 - <key>bb_gain3</key>
1660 - <value>20</value>
1661 - </param>
1662 - <param>
1663 - <key>bw3</key>
1664 - <value>0</value>
1665 - </param>
1666 - <param>
1667 - <key>dc_offset_mode3</key>
1668 - <value>0</value>
1669 - </param>
1670 - <param>
1671 - <key>corr3</key>
1672 - <value>0</value>
1673 - </param>
1674 - <param>
1675 - <key>freq3</key>
1676 - <value>100e6</value>
1677 - </param>
1678 - <param>
1679 - <key>gain_mode3</key>
1680 - <value>False</value>
1681 - </param>
1682 - <param>
1683 - <key>if_gain3</key>
1684 - <value>20</value>
1685 - </param>
1686 - <param>
1687 - <key>iq_balance_mode3</key>
1688 - <value>0</value>
1689 - </param>
1690 - <param>
1691 - <key>gain3</key>
1692 - <value>10</value>
1693 - </param>
1694 - <param>
1695 - <key>ant4</key>
1696 - <value></value>
1697 - </param>
1698 - <param>
1699 - <key>bb_gain4</key>
1700 - <value>20</value>
1701 - </param>
1702 - <param>
1703 - <key>bw4</key>
1704 - <value>0</value>
1705 - </param>
1706 - <param>
1707 - <key>dc_offset_mode4</key>
1708 - <value>0</value>
1709 - </param>
1710 - <param>
1711 - <key>corr4</key>
1712 - <value>0</value>
1713 - </param>
1714 - <param>
1715 - <key>freq4</key>
1716 - <value>100e6</value>
1717 - </param>
1718 - <param>
1719 - <key>gain_mode4</key>
1720 - <value>False</value>
1721 - </param>
1722 - <param>
1723 - <key>if_gain4</key>
1724 - <value>20</value>
1725 - </param>
1726 - <param>
1727 - <key>iq_balance_mode4</key>
1728 - <value>0</value>
1729 - </param>
1730 - <param>
1731 - <key>gain4</key>
1732 - <value>10</value>
1733 - </param>
1734 - <param>
1735 - <key>ant5</key>
1736 - <value></value>
1737 - </param>
1738 - <param>
1739 - <key>bb_gain5</key>
1740 - <value>20</value>
1741 - </param>
1742 - <param>
1743 - <key>bw5</key>
1744 - <value>0</value>
1745 - </param>
1746 - <param>
1747 - <key>dc_offset_mode5</key>
1748 - <value>0</value>
1749 - </param>
1750 - <param>
1751 - <key>corr5</key>
1752 - <value>0</value>
1753 - </param>
1754 - <param>
1755 - <key>freq5</key>
1756 - <value>100e6</value>
1757 - </param>
1758 - <param>
1759 - <key>gain_mode5</key>
1760 - <value>False</value>
1761 - </param>
1762 - <param>
1763 - <key>if_gain5</key>
1764 - <value>20</value>
1765 - </param>
1766 - <param>
1767 - <key>iq_balance_mode5</key>
1768 - <value>0</value>
1769 - </param>
1770 - <param>
1771 - <key>gain5</key>
1772 - <value>10</value>
1773 - </param>
1774 - <param>
1775 - <key>ant6</key>
1776 - <value></value>
1777 - </param>
1778 - <param>
1779 - <key>bb_gain6</key>
1780 - <value>20</value>
1781 - </param>
1782 - <param>
1783 - <key>bw6</key>
1784 - <value>0</value>
1785 - </param>
1786 - <param>
1787 - <key>dc_offset_mode6</key>
1788 - <value>0</value>
1789 - </param>
1790 - <param>
1791 - <key>corr6</key>
1792 - <value>0</value>
1793 - </param>
1794 - <param>
1795 - <key>freq6</key>
1796 - <value>100e6</value>
1797 - </param>
1798 - <param>
1799 - <key>gain_mode6</key>
1800 - <value>False</value>
1801 - </param>
1802 - <param>
1803 - <key>if_gain6</key>
1804 - <value>20</value>
1805 - </param>
1806 - <param>
1807 - <key>iq_balance_mode6</key>
1808 - <value>0</value>
1809 - </param>
1810 - <param>
1811 - <key>gain6</key>
1812 - <value>10</value>
1813 - </param>
1814 - <param>
1815 - <key>ant7</key>
1816 - <value></value>
1817 - </param>
1818 - <param>
1819 - <key>bb_gain7</key>
1820 - <value>20</value>
1821 - </param>
1822 - <param>
1823 - <key>bw7</key>
1824 - <value>0</value>
1825 - </param>
1826 - <param>
1827 - <key>dc_offset_mode7</key>
1828 - <value>0</value>
1829 - </param>
1830 - <param>
1831 - <key>corr7</key>
1832 - <value>0</value>
1833 - </param>
1834 - <param>
1835 - <key>freq7</key>
1836 - <value>100e6</value>
1837 - </param>
1838 - <param>
1839 - <key>gain_mode7</key>
1840 - <value>False</value>
1841 - </param>
1842 - <param>
1843 - <key>if_gain7</key>
1844 - <value>20</value>
1845 - </param>
1846 - <param>
1847 - <key>iq_balance_mode7</key>
1848 - <value>0</value>
1849 - </param>
1850 - <param>
1851 - <key>gain7</key>
1852 - <value>10</value>
1853 - </param>
1854 - <param>
1855 - <key>ant8</key>
1856 - <value></value>
1857 - </param>
1858 - <param>
1859 - <key>bb_gain8</key>
1860 - <value>20</value>
1861 - </param>
1862 - <param>
1863 - <key>bw8</key>
1864 - <value>0</value>
1865 - </param>
1866 - <param>
1867 - <key>dc_offset_mode8</key>
1868 - <value>0</value>
1869 - </param>
1870 - <param>
1871 - <key>corr8</key>
1872 - <value>0</value>
1873 - </param>
1874 - <param>
1875 - <key>freq8</key>
1876 - <value>100e6</value>
1877 - </param>
1878 - <param>
1879 - <key>gain_mode8</key>
1880 - <value>False</value>
1881 - </param>
1882 - <param>
1883 - <key>if_gain8</key>
1884 - <value>20</value>
1885 - </param>
1886 - <param>
1887 - <key>iq_balance_mode8</key>
1888 - <value>0</value>
1889 - </param>
1890 - <param>
1891 - <key>gain8</key>
1892 - <value>10</value>
1893 - </param>
1894 - <param>
1895 - <key>ant9</key>
1896 - <value></value>
1897 - </param>
1898 - <param>
1899 - <key>bb_gain9</key>
1900 - <value>20</value>
1901 - </param>
1902 - <param>
1903 - <key>bw9</key>
1904 - <value>0</value>
1905 - </param>
1906 - <param>
1907 - <key>dc_offset_mode9</key>
1908 - <value>0</value>
1909 - </param>
1910 - <param>
1911 - <key>corr9</key>
1912 - <value>0</value>
1913 - </param>
1914 - <param>
1915 - <key>freq9</key>
1916 - <value>100e6</value>
1917 - </param>
1918 - <param>
1919 - <key>gain_mode9</key>
1920 - <value>False</value>
1921 - </param>
1922 - <param>
1923 - <key>if_gain9</key>
1924 - <value>20</value>
1925 - </param>
1926 - <param>
1927 - <key>iq_balance_mode9</key>
1928 - <value>0</value>
1929 - </param>
1930 - <param>
1931 - <key>gain9</key>
1932 - <value>10</value>
1933 - </param>
1934 - <param>
1935 - <key>comment</key>
1936 - <value></value>
1937 - </param>
1938 - <param>
1939 - <key>affinity</key>
1940 - <value></value>
1941 - </param>
1942 - <param>
1943 - <key>args</key>
1944 - <value></value>
1945 - </param>
1946 - <param>
1947 - <key>_enabled</key>
1948 - <value>True</value>
1949 - </param>
1950 - <param>
1951 - <key>_coordinate</key>
1952 - <value>(0, 237)</value>
1953 - </param>
1954 - <param>
1955 - <key>_rotation</key>
1956 - <value>0</value>
1957 - </param>
1958 - <param>
1959 - <key>id</key>
1960 - <value>rtlsdr_source_0</value>
1961 - </param>
1962 - <param>
1963 - <key>maxoutbuf</key>
1964 - <value>0</value>
1965 - </param>
1966 - <param>
1967 - <key>clock_source0</key>
1968 - <value></value>
1969 - </param>
1970 - <param>
1971 - <key>time_source0</key>
1972 - <value></value>
1973 - </param>
1974 - <param>
1975 - <key>clock_source1</key>
1976 - <value></value>
1977 - </param>
1978 - <param>
1979 - <key>time_source1</key>
1980 - <value></value>
1981 - </param>
1982 - <param>
1983 - <key>clock_source2</key>
1984 - <value></value>
1985 - </param>
1986 - <param>
1987 - <key>time_source2</key>
1988 - <value></value>
1989 - </param>
1990 - <param>
1991 - <key>clock_source3</key>
1992 - <value></value>
1993 - </param>
1994 - <param>
1995 - <key>time_source3</key>
1996 - <value></value>
1997 - </param>
1998 - <param>
1999 - <key>clock_source4</key>
2000 - <value></value>
2001 - </param>
2002 - <param>
2003 - <key>time_source4</key>
2004 - <value></value>
2005 - </param>
2006 - <param>
2007 - <key>clock_source5</key>
2008 - <value></value>
2009 - </param>
2010 - <param>
2011 - <key>time_source5</key>
2012 - <value></value>
2013 - </param>
2014 - <param>
2015 - <key>clock_source6</key>
2016 - <value></value>
2017 - </param>
2018 - <param>
2019 - <key>time_source6</key>
2020 - <value></value>
2021 - </param>
2022 - <param>
2023 - <key>clock_source7</key>
2024 - <value></value>
2025 - </param>
2026 - <param>
2027 - <key>time_source7</key>
2028 - <value></value>
2029 - </param>
2030 - <param>
2031 - <key>minoutbuf</key>
2032 - <value>0</value>
2033 - </param>
2034 - <param>
2035 - <key>nchan</key>
2036 - <value>1</value>
2037 - </param>
2038 - <param>
2039 - <key>num_mboards</key>
2040 - <value>1</value>
2041 - </param>
2042 - <param>
2043 - <key>type</key>
2044 - <value>fc32</value>
2045 - </param>
2046 - <param>
2047 - <key>sample_rate</key>
2048 - <value>samp_rate</value>
2049 - </param>
2050 - <param>
2051 - <key>sync</key>
2052 - <value></value>
2053 - </param>
2054 - </block>
2055 - <block>
2056 - <key>wxgui_waterfallsink2</key>
2057 - <param>
2058 - <key>avg_alpha</key>
2059 - <value>0</value>
2060 - </param>
2061 - <param>
2062 - <key>average</key>
2063 - <value>False</value>
2064 - </param>
2065 - <param>
2066 - <key>baseband_freq</key>
2067 - <value>0</value>
2068 - </param>
2069 - <param>
2070 - <key>alias</key>
2071 - <value></value>
2072 - </param>
2073 - <param>
2074 - <key>comment</key>
2075 - <value></value>
2076 - </param>
2077 - <param>
2078 - <key>affinity</key>
2079 - <value></value>
2080 - </param>
2081 - <param>
2082 - <key>dynamic_range</key>
2083 - <value>100</value>
2084 - </param>
2085 - <param>
2086 - <key>_enabled</key>
2087 - <value>True</value>
2088 - </param>
2089 - <param>
2090 - <key>fft_rate</key>
2091 - <value>15</value>
2092 - </param>
2093 - <param>
2094 - <key>fft_size</key>
2095 - <value>512</value>
2096 - </param>
2097 - <param>
2098 - <key>freqvar</key>
2099 - <value>None</value>
2100 - </param>
2101 - <param>
2102 - <key>_coordinate</key>
2103 - <value>(232, 580)</value>
2104 - </param>
2105 - <param>
2106 - <key>_rotation</key>
2107 - <value>0</value>
2108 - </param>
2109 - <param>
2110 - <key>grid_pos</key>
2111 - <value></value>
2112 - </param>
2113 - <param>
2114 - <key>id</key>
2115 - <value>wxgui_waterfallsink2_0</value>
2116 - </param>
2117 - <param>
2118 - <key>notebook</key>
2119 - <value></value>
2120 - </param>
2121 - <param>
2122 - <key>ref_scale</key>
2123 - <value>2.0</value>
2124 - </param>
2125 - <param>
2126 - <key>ref_level</key>
2127 - <value>0</value>
2128 - </param>
2129 - <param>
2130 - <key>samp_rate</key>
2131 - <value>samp_rate</value>
2132 - </param>
2133 - <param>
2134 - <key>title</key>
2135 - <value>Waterfall </value>
2136 - </param>
2137 - <param>
2138 - <key>type</key>
2139 - <value>complex</value>
2140 - </param>
2141 - <param>
2142 - <key>win_size</key>
2143 - <value></value>
2144 - </param>
2145 - <param>
2146 - <key>win</key>
2147 - <value>None</value>
2148 - </param>
2149 - </block>
2150 - <connection>
2151 - <source_block_id>analog_wfm_rcv_0</source_block_id>
2152 - <sink_block_id>rational_resampler_xxx_1</sink_block_id>
2153 - <source_key>0</source_key>
2154 - <sink_key>0</sink_key>
2155 - </connection>
2156 - <connection>
2157 - <source_block_id>blocks_multiply_const_vxx_0</source_block_id>
2158 - <sink_block_id>audio_sink_0</sink_block_id>
2159 - <source_key>0</source_key>
2160 - <sink_key>0</sink_key>
2161 - </connection>
2162 - <connection>
2163 - <source_block_id>low_pass_filter_0</source_block_id>
2164 - <sink_block_id>analog_wfm_rcv_0</sink_block_id>
2165 - <source_key>0</source_key>
2166 - <sink_key>0</sink_key>
2167 - </connection>
2168 - <connection>
2169 - <source_block_id>rational_resampler_xxx_0</source_block_id>
2170 - <sink_block_id>low_pass_filter_0</sink_block_id>
2171 - <source_key>0</source_key>
2172 - <sink_key>0</sink_key>
2173 - </connection>
2174 - <connection>
2175 - <source_block_id>rational_resampler_xxx_1</source_block_id>
2176 - <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id>
2177 - <source_key>0</source_key>
2178 - <sink_key>0</sink_key>
2179 - </connection>
2180 - <connection>
2181 - <source_block_id>rtlsdr_source_0</source_block_id>
2182 - <sink_block_id>rational_resampler_xxx_0</sink_block_id>
2183 - <source_key>0</source_key>
2184 - <sink_key>0</sink_key>
2185 - </connection>
2186 - <connection>
2187 - <source_block_id>rtlsdr_source_0</source_block_id>
2188 - <sink_block_id>wxgui_waterfallsink2_0</sink_block_id>
2189 - <source_key>0</source_key>
2190 - <sink_key>0</sink_key>
2191 - </connection>
2192 -</flow_graph>
2193 -