Changes for page SDR
Last modified by Administrator on 10-03-2021, 11:01
edited by Jean-Yves Dupertuis
on 27-03-2018, 10:42
on 27-03-2018, 10:42
edited by Jean-Yves Dupertuis
on 27-03-2018, 21:22
on 27-03-2018, 21:22
Change comment:
GQRX-SDR
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Attachments (0 modified, 6 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -27,6 +27,436 @@ 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 + 30 30 Avec copier - coller, je l'ai sauvé sur mon PC. 31 31 32 32 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 ! ... ... @@ -146,11 +146,59 @@ 146 146 = Linux = 147 147 148 148 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. 149 -Je suis sur une machine Dell Optiplex 780 64 bits. De base une windows 7 est installé, j'ai placé mon Ubuntu dessus. 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. 150 150 151 - ~$ //sudo apt update//152 - ~$ //sudo apt install gnuradio//581 +$ //sudo apt update// 582 +$ //sudo apt install gnuradio// 153 153 154 154 le programme GNURadio ce trouve dans le lanceur ( logo ubuntu ), suffit de faire une recherche avec gnu, et il apparaît. Je le lance : 155 155 586 +[[image:gnuradio-1.png]] 156 156 588 +python 2.7.12 c'est aussi installé ! 589 + 590 +{{info}} 591 +C'est pas merveilleux LINUX !! 592 +{{/info}} 593 + 594 +Je profite pour installer directement GQRX : 595 + 596 +~~$//sudo apt install gqrx-sdr// 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,0 +1,1 @@ 1 +XWiki.Dupertuis - Size
-
... ... @@ -1,0 +1,1 @@ 1 +7.3 KB - Content
-
... ... @@ -1,0 +1,220 @@ 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,0 +1,1 @@ 1 +XWiki.Dupertuis - Size
-
... ... @@ -1,0 +1,1 @@ 1 +107.0 KB - Content
- gqrx-iq.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Dupertuis - Size
-
... ... @@ -1,0 +1,1 @@ 1 +37.4 KB - Content
- terminalDirectPython.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Dupertuis - Size
-
... ... @@ -1,0 +1,1 @@ 1 +46.8 KB - Content
- testRadioSDR.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Dupertuis - Size
-
... ... @@ -1,0 +1,1 @@ 1 +279.5 KB - Content
- testSDR.grc
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.Dupertuis - Size
-
... ... @@ -1,0 +1,1 @@ 1 +41.3 KB - Content
-
... ... @@ -1,0 +1,2193 @@ 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 +