Thanks Tom, Quick update here... I've found a set of options that will control the E300 receive channel using rfnoc software:
rfnoc_rx_to_file --freq <frequency> --rate <sample rate> --ant TX/RX --radio-chan 0 rfnoc_rx_to_file --freq <frequency> --rate <sample rate> --ant RX2 --radio-chan 0 rfnoc_rx_to_file --freq <frequency> --rate <sample rate> --ant TX/RX --radio-chan 1 rfnoc_rx_to_file --freq <frequency> --rate <sample rate> --ant RX2 --radio-chan 1 Tracking where/how rfnoc_rx_to_file sets the appropriate channel, it appears that it simply sets the "block_port" streamer args: streamer_args["block_port"] = str(boost::format("%d") % radio_chan); Or, alternatively, if there's a block inserted via the command line, then the correct port is connected in the rx_graph: rx_graph->connect(radio_ctrl_id, radio_chan, blk_ctrl->get_block_id(), uhd::rfnoc::ANY_PORT); Interestingly, this seems to suggest an approach closest to my "test 3" earlier. I'll look for how this can tie into python rfnoc software now... EJ On Thu, Sep 21, 2017 at 4:24 PM, Tom Bereknyei <t...@dds.mil> wrote: > EJ, > > I went through that same sequence of attempts and never got a solution > other than using TX/RX and RX2 on the same A channel. > > On Thu, Sep 21, 2017 at 14:05 EJ Kreinar via USRP-users < > usrp-users@lists.ettus.com> wrote: > >> Hi all, >> >> I'm trying to specify exactly which channel to record from an RFNoC >> flowgraph on the E310, but I cant seem to get this to work.... >> >> Typically, in non-RFNoC applications, or in the "legacy_compat" mode, you >> can use the following options: >> >> uhd_rx_cfile -r <sample rate> -f <frequency> -A TX/RX --spec=A:A >> recording.c32 >> uhd_rx_cfile -r <sample rate> -f <frequency> -A RX2 --spec=A:A >> recording.c32 >> uhd_rx_cfile -r <sample rate> -f <frequency> -A TX/RX --spec=A:B >> recording.c32 >> uhd_rx_cfile -r <sample rate> -f <frequency> -A RX2 --spec=A:B >> recording.c32 >> >> And each option, in turn, records data from a different receive port on >> the E310. >> >> >> But, I cant figure out the correct combination to get the rfnoc_radio >> software to support recording on channel B. A few things I've tried: >> >> 1. Changing the rfnoc_radio dropdown to "Radio Select = B". This errors >> like this: >> >> Traceback (most recent call last): >> File "/home/root/test_rx.py", line 138, in <module> >> main() >> File "/home/root/test_rx.py", line 127, in main >> tb = top_block_cls(args=options.args, freq=options.freq, >> gain=options.gain, rate=options.rate) >> File "/home/root/test_rx.py", line 52, in __init__ >> 1, -1 >> File "/usr/lib/python2.7/site-packages/ettus/ettus_swig.py", line >> 1980, in make >> return _ettus_swig.rfnoc_radio_make(*args, **kwargs) >> RuntimeError: Cannot find a block for ID: Radio_1 >> -- Loading FPGA image: /boot/system_top.bit... done >> >> >> 2. Adding a FIFO to the FPGA on the second channel, and "dropping" the >> samples from the first channel. >> [image: Inline image 1] >> >> But this fails like so: >> >> -- [0/FIFO_0] source_node_ctrl::set_rx_streamer() 0 -> 1 >> -- [0/Radio_0] radio_ctrl_impl::set_rx_streamer() 1 -> 1 >> -- [0/Radio_0] e3xx_radio_ctrl_impl::_update_enables() >> -- [0/Radio_0] e3xx_radio_ctrl_impl::_update_gpio_state() >> -- [Device3] updating RX streamer to RX Terminator 0 >> -- New tick_rate == 250000 New samp_rate == 250000 New scaling == >> 3.05185e-05 >> -- [0/FIFO_0] source_block_ctrl_base::issue_stream_cmd() >> -- [0/Radio_0] radio_ctrl_impl::issue_stream_cmd() 0 a >> -- [0/Radio_0] radio_ctrl_impl::issue_stream_cmd() called on inactive >> channel. Skipping. >> timeout on chan 0 >> timeout on chan 0 >> >> And no data is recorded. >> >> 3. I also tried (foolishly) manually editing the generated python to >> connect the File Sink to port 1 of the rfnoc_radio, rather than port 0. >> >> I used this flowgraph: >> [image: Inline image 3] >> And then I manually changed the following lines: >> >> self.connect((self.uhd_rfnoc_streamer_radio_0, 0), >> (self.blocks_file_sink_0_0, 0)) >> =becomes==> >> self.connect((self.uhd_rfnoc_streamer_radio_0, 1), >> (self.blocks_file_sink_0_0, 0)) >> >> I was hopeful that port 1 actually existed and was initialized correctly >> in UHD, but alas, port 1 clearly does not exist for me to attach the file >> sink to: >> >> Traceback (most recent call last): >> File "/home/root/test_rx.py", line 138, in <module> >> main() >> File "/home/root/test_rx.py", line 128, in main >> tb.start() >> File "/usr/lib/python2.7/site-packages/gnuradio/gr/top_block.py", line >> 109, in start >> top_block_start_unlocked(self._impl, max_noutput_items) >> File "/usr/lib/python2.7/site-packages/gnuradio/gr/runtime_swig.py", >> line 3671, in top_block_start_unlocked >> return _runtime_swig.top_block_start_unlocked(*args, **kwargs) >> RuntimeError: rfnoc_radio(1): missing connection from output port 0 >> -- Loading FPGA image: /boot/system_top.bit... done >> >> >> I cant seem to figure this out.. Any suggestions?? Am I missing something >> obvious, or is RFNoC missing this support? >> >> (by the way, I am admittedly still behind on my UHD version. So perhaps >> there's updates that resolve this issue recently?) >> >> Thanks! >> EJ >> _______________________________________________ >> USRP-users mailing list >> USRP-users@lists.ettus.com >> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com >> > -- > Maj Tom Bereknyei > Defense Digital Service > t...@dds.mil > (571) 225-1630 >
_______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com