Usrp initialization

Hi,

Please help me figure out the strange problem I’m having.

In my system, the software is receiving four interleaved streams of
complex
data from the usrp. I am trying to receive two channels on each input
of
the usrp, so I setup the usrp to ddc the center of the two channels down
to
zero frequency and then (in gnuradio) I seperate the channels by doing
another ddc to bring each channel to zero hz and then a low pass filter.
The second channel requires a conjugation before the ddc to flip it to
the
positive side of the freq spectrum.

I’m getting a strange behavior only on RX1 (input A of the Basic RX in
position1 of the usrp). If I input a signal only on channel 1, to all
four
usrp inputs it bleeds over to channel 2 at about 60% amplitude only on
RX1.
The same thing happens if I input a signal only on channel 2 – it
bleeds
over about 60% to channel 1.

This behavior does not happen on the other three receivers at all and
continues to present itself only on RX1 even if I swap the cables
providing
signals to the four usrp inputs. I have even tried swapping the usrp,
both
basic RX boards, and the cables inside the usrp enclosure. The problem
always stays with RX1. I know the problem is somewhere in the usrp, the
way
I initialize the usrp, or in my software.

I don’t think the problem is in my software because I simply use four
instances of the same code to process all four inputs. But I’m not sure
yet.

I’m using the following python to initialize the usrp, then I pass the
usrp
to c++ code via sm.Run_SM1680(adc._u).

Please tell me if you see anything wrong with this.

Thanks,
Hans

#!/usr/bin/env python
from gnuradio import usrp, gru
from gnuradio import sm
def main():
nchan = 4
adc = usrp.source_c(0, 250, fpga_filename=“std_4rx_0tx.rbf”)
if not adc.set_nchannels(nchan):
sys.stderr.write(‘set_nchannels(%d) failed to set number of
channels\n’
% (nchan,))
raise SystemExit
adc._write_oe( 0, 0xffff, 0xffff )
adc.write_io( 0, 0xfff7, 0xffff )
gain = 0
subdev = adc.db[0] + adc.db[1]
subdev[0].set_gain(gain)
subdev[1].set_gain(gain)
adc.set_mux(gru.hexint(0xf3f2f1f0))
target_freq = sm.Get_Center()
for i in range(len(subdev)):
r = usrp.tune(adc, i, subdev[i], target_freq)
if not r:
print “set_freq: failed to set subdev[%d] freq to %f” % (i,
target_freq)
raise SystemExit
sm.Run_SM1680(adc._u)

if name == “main”:
main()