Still not working with 2 DBSRX... :(

Wow. I’m still not able to get data out of my 2nd DBSRX. I have
verified the board is good. I modified multi-antenna/multi-fft.py to
use 2 DBSRX board and the 2rx 2tx fpga build. It works, and I can point
the boards at different frequencies and see good data. So I know the
hardware is working. Ergo, the problem is with my code, and I’m not
sure what to do next. I’ve debugged this ad nauseum. I’ve verified
that I setup r, n, gc1, gc2… all correctly. I rebuilt
usrp_standard.cc with debugging info as well as db_dbs_rx.py. My code
does the same things in setup. I think I’m setting up each dbsrx
correctly. They return success on tune, and return successfully from
all of the write_i2c commands. I’m using I2C_ADDR 0x67 for subdev A,
and I2C_ADDR 0x65 for subdev B. I’ve changed those randomly and found
that it correctly fails. So I’m fairly confident that the commands are
getting down to the DBSRXs.

When I call

usrp_standard_rx::make(0, decim=64, nchannels=2, mux=0x32103210,
fpga_mode=0x00, fusb_block_size=0, fusb_nblocks=0, “std_2rxhb_2tx.rbf”,
“std.ihx”)

it returns a valid usrp device, and when I query the number of channels,
it says 2. But when I do a

dev->start(); followed by
nRead = dev->read(arr, buf_size, &bOverrun); and
fwrite(arr,1,nRead, USRPfid);

I get perfect data for channel 0 (RXA) , but channel 1 (RXB) is just the
noise floor. Loading it into Matlab and looking at the fft shows RXA is
doing perfectly, while RXB has no signal magnitude. (This is when I
point it at two known frequencies where both are looking at signals with
good power… and even when I point them at the same frequency.) Using
ASCII art…

FFT_RXA is like…

   |||||
 |||||||

|||||||||_

and FFT_RXB is just…

_____________.

I’m brainstorming and I wonder if I setup RXB correctly, but haven’t
sent some command to gate the data through. Or if there is an
additional step when using 2 channels that isn’t documented. Any ideas
of things I could look at?

Like I said, gnuradio is able to talk to both boards and get good data,
but my C++ code isn’t. I can only get good data from RXA. RXB is flat.
(Well… there’s low magnitude white noise, but no significant power.)

Am I missing a step? All was well until I added a second DBSRX to the
system, and now I can’t get data from that new board.
Save me Eric/Matt/anyone better at this than I! </Homer S.>

Jared

On Wed, Oct 24, 2007 at 02:29:31PM -0400, Jared J. wrote:

return successfully from all of the write_i2c commands. I’m using
I2C_ADDR 0x67 for subdev A, and I2C_ADDR 0x65 for subdev B. I’ve
changed those randomly and found that it correctly fails. So I’m
fairly confident that the commands are getting down to the DBSRXs.

_____________.

I’m brainstorming and I wonder if I setup RXB correctly, but haven’t
sent some command to gate the data through. Or if there is an
additional step when using 2 channels that isn’t documented. Any
ideas of things I could look at?

No magic that isn’t contained in db_dbs_rx.py

Can your code, in single channel mode, properly talk to the DBSRX on
the B side? Do you get good data from it? Be sure to remove the
DBSRX on the A side just to be sure that you’re really talking to the
B side :wink:

If not, I suspect that there is some usage of “self._which” in the
python
code that you haven’t properly mapped to your C++ code.

Eric

On Wed, Oct 24, 2007 at 12:16:53PM -0700, Eric B. wrote:

On Wed, Oct 24, 2007 at 02:29:31PM -0400, Jared J. wrote:

I’m brainstorming and I wonder if I setup RXB correctly, but haven’t
sent some command to gate the data through. Or if there is an
additional step when using 2 channels that isn’t documented. Any
ideas of things I could look at?

No magic that isn’t contained in db_dbs_rx.py

You’re looked at the code in db_base.py too, right?

Eric

HA! REFCLK_REG = 43 for RXB, and 41 for RXA. I had hard-coded 41.
Thank you! I had looked at db_base.py a long time ago when I got one
board working, but I completely forgot about it until your e-mail.
Thanks a lot. Now the data looks good. :smiley: I’ll tell our accountant to
send you a consulting check. :wink:

Jared