From version < 30.4 >
edited by Jean-Yves Dupertuis
on 27-03-2018, 17:58
To version < 24.2 >
edited by Jean-Yves Dupertuis
on 27-03-2018, 10:44
< >
Change comment: SDR-linux

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 !
... ... @@ -576,7 +576,7 @@
576 576  = Linux =
577 577  
578 578  Cette partie explique mon installation sur une distribution Ubuntu 16.04.4. Pour info j'ai créé une clef USB avec cette version avec le logiciel "RUFUS2.18" sous window XP.
579 -Je suis sur une machine Dell Optiplex 780 64 bits. De base une windows 7 est installée, j'ai placé mon Ubuntu dessus.
149 +Je suis sur une machine Dell Optiplex 780 64 bits. De base une windows 7 est installé, j'ai placé mon Ubuntu dessus.
580 580  
581 581  $ //sudo apt update//
582 582  $ //sudo apt install gnuradio//
... ... @@ -591,44 +591,3 @@
591 591  C'est pas merveilleux LINUX !!
592 592  {{/info}}
593 593  
594 -Je profite pour installer directement GQRX :
595 -
596 -~~$//sudo apt install gqrx//
597 -
598 -Ensuite je branche ma clef DVB-t, et je regarde si le programme GQRX la trouve.
599 -
600 -{{warning}}
601 -Ma clef fonctionnait déjà ! sous SDR#
602 -{{/warning}}
603 -
604 -je la trouve dans les entrées du programme :
605 -
606 -[[image:gqrx-iq.png]]
607 -
608 -Après scan, je trouve une radio sur 98,2 MHz
609 -
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"]]
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
gqrx-iq.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Dupertuis
Size
... ... @@ -1,1 +1,0 @@
1 -37.4 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 -