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