Tuesday, January 27, 2015

[Discuss-gnuradio] B210 two-channel operation

#!/usr/bin/env python
##################################################
# Gnuradio Python Flow Graph
# Title: Top Block
# Generated: Tue Jan 27 14:20:47 2015
##################################################

from gnuradio import eng_notation
from gnuradio import gr
from gnuradio import uhd
from gnuradio import wxgui
from gnuradio.eng_option import eng_option
from gnuradio.fft import window
from gnuradio.filter import firdes
from gnuradio.wxgui import fftsink2
from gnuradio.wxgui import forms
from grc_gnuradio import wxgui as grc_wxgui
from optparse import OptionParser
import time
import wx

class top_block(grc_wxgui.top_block_gui):

def __init__(self):
grc_wxgui.top_block_gui.__init__(self, title="Top Block")
_icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png"
self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY))

##################################################
# Variables
##################################################
self.size = size = 1024
self.samp_rate = samp_rate = 1000000
self.gain = gain = 20
self.freq = freq = 1150000000
self.FFT_refresh = FFT_refresh = 10
self.BW = BW = 1000000

##################################################
# Blocks
##################################################
self._gain_text_box = forms.text_box(
parent=self.GetWin(),
value=self.gain,
callback=self.set_gain,
label="RF Gain",
converter=forms.float_converter(),
)
self.Add(self._gain_text_box)
self._freq_text_box = forms.text_box(
parent=self.GetWin(),
value=self.freq,
callback=self.set_freq,
label="Center Frequency",
converter=forms.float_converter(),
)
self.Add(self._freq_text_box)
self.wxgui_fftsink2_0_0_0 = fftsink2.fft_sink_c(
self.GetWin(),
baseband_freq=freq,
y_per_div=10,
y_divs=10,
ref_level=-20,
ref_scale=2.0,
sample_rate=samp_rate,
fft_size=size,
fft_rate=FFT_refresh,
average=False,
avg_alpha=0.1,
title="FFT Plot",
peak_hold=False,
)
self.Add(self.wxgui_fftsink2_0_0_0.win)
self.wxgui_fftsink2_0_0 = fftsink2.fft_sink_c(
self.GetWin(),
baseband_freq=freq,
y_per_div=10,
y_divs=10,
ref_level=-20,
ref_scale=2.0,
sample_rate=samp_rate,
fft_size=size,
fft_rate=FFT_refresh,
average=False,
avg_alpha=0.1,
title="FFT Plot",
peak_hold=False,
)
self.Add(self.wxgui_fftsink2_0_0.win)
self.uhd_usrp_source_0 = uhd.usrp_source(
",".join(("", "")),
uhd.stream_args(
cpu_format="fc32",
channels=range(2),
),
)
self.uhd_usrp_source_0.set_subdev_spec("A:A", 0)
self.uhd_usrp_source_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS)
self.uhd_usrp_source_0.set_samp_rate(samp_rate)
self.uhd_usrp_source_0.set_center_freq(freq, 0)
self.uhd_usrp_source_0.set_gain(gain, 0)
self.uhd_usrp_source_0.set_antenna("RX2", 0)
self.uhd_usrp_source_0.set_bandwidth(BW, 0)
self.uhd_usrp_source_0.set_center_freq(freq, 1)
self.uhd_usrp_source_0.set_gain(gain, 1)
self.uhd_usrp_source_0.set_antenna("RX2", 1)
self.uhd_usrp_source_0.set_bandwidth(BW, 1)

##################################################
# Connections
##################################################
self.connect((self.uhd_usrp_source_0, 0), (self.wxgui_fftsink2_0_0, 0))
self.connect((self.uhd_usrp_source_0, 1), (self.wxgui_fftsink2_0_0_0, 0))



def get_size(self):
return self.size

def set_size(self, size):
self.size = size

def get_samp_rate(self):
return self.samp_rate

def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.wxgui_fftsink2_0_0.set_sample_rate(self.samp_rate)
self.wxgui_fftsink2_0_0_0.set_sample_rate(self.samp_rate)
self.uhd_usrp_source_0.set_samp_rate(self.samp_rate)

def get_gain(self):
return self.gain

def set_gain(self, gain):
self.gain = gain
self._gain_text_box.set_value(self.gain)
self.uhd_usrp_source_0.set_gain(self.gain, 0)
self.uhd_usrp_source_0.set_gain(self.gain, 1)

def get_freq(self):
return self.freq

def set_freq(self, freq):
self.freq = freq
self._freq_text_box.set_value(self.freq)
self.wxgui_fftsink2_0_0.set_baseband_freq(self.freq)
self.wxgui_fftsink2_0_0_0.set_baseband_freq(self.freq)
self.uhd_usrp_source_0.set_center_freq(self.freq, 0)
self.uhd_usrp_source_0.set_center_freq(self.freq, 1)

def get_FFT_refresh(self):
return self.FFT_refresh

def set_FFT_refresh(self, FFT_refresh):
self.FFT_refresh = FFT_refresh

def get_BW(self):
return self.BW

def set_BW(self, BW):
self.BW = BW
self.uhd_usrp_source_0.set_bandwidth(self.BW, 0)
self.uhd_usrp_source_0.set_bandwidth(self.BW, 1)
self.uhd_usrp_source_0.set_bandwidth(self.BW, 4)

if __name__ == '__main__':
import ctypes
import sys
if sys.platform.startswith('linux'):
try:
x11 = ctypes.cdll.LoadLibrary('libX11.so')
x11.XInitThreads()
except:
print "Warning: failed to XInitThreads()"
parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
(options, args) = parser.parse_args()
tb = top_block()
tb.Start(True)
tb.Wait()
Hello,

   OS: Ubuntu 14.01.1 
   gnu-radio:  3.7.6
   Dell Optiplex 765    

   I am having trouble using the B210 USRP in two channel mode.    Things work well when I use grc to configure the B210 with one channel, but when I try using two channels, I get the error shown below.     This is quite similar to a problem I had earlier with a TVRX2, which was fixed with a "-M build."    I am still using the same build and the TVRX2 continues to work fine.    Perhaps I am not configuring the B210 properly?    I attach the .grc and top_block.py files.

   Any suggestions would be most welcome.

Sincerely,
Dan Marlow


No comments:

Post a Comment