Ok Rob, I will check everything you've said and give you an answer if I
find the solution.
Many thanks for the help!

Maria


El lun., 21 feb. 2022 18:25, Rob Kossler <rkoss...@nd.edu> escribió:

> I'm not sure. Yes, it seems the first line could be a problem. Maybe your
> OOT rfnoc_mod_tool is correctly registering your block AND the in-tree
> block is being registered. I don't see why that would be a problem (given
> that they should both be the same anyway), but you should probably try to
> fix it.
>
> Another idea is to enable UHD "debug" logging by setting environment
> variables as shown here
> <https://files.ettus.com/manual/log_8hpp.html#loghpp_levels>. This may
> show useful information.
>
> Another idea is to specifically set the policy to ONE_TO_ONE in your
> custom block controller constructor as is done with several Ettus RFNoC
> blocks like this
> <https://github.com/EttusResearch/uhd/blob/master/host/lib/rfnoc/fft_block_control.cpp>FFT
> controller. But, really, this shouldn't be needed since it should be the
> default.
>
> And, again, maybe see about calling issue_stream_cmd()  from the DDC
> controller instead of the rx_streamer.
>
> Rob
>
>
>
> On Mon, Feb 21, 2022 at 11:52 AM Maria Muñoz <mamuk...@gmail.com> wrote:
>
>> This is my output for gnuradio:
>>
>> *REGISTRY] WARNING: Attempting to overwrite previously registered RFNoC
>> block with noc_id,device_id: 0x29106060, 0xffff*
>> [INFO] [UHD] linux; GNU C++ version 9.3.0; Boost_107100;
>> UHD_4.0.0.HEAD-0-g90ce6062
>> [INFO] [MPMD] Initializing 1 device(s) in parallel with args:
>> mgmt_addr=192.168.1.23,type=e3xx,product=e320,serial=31DFBB7,claimed=False,addr=192.168.1.23
>> [INFO] [MPM.main] Launching USRP/MPM, version: 4.0.0.0-g57ca4235
>> [INFO] [MPM.main] Spawning RPC process...
>> [INFO] [MPM.PeriphManager] Device serial number: 31DFBB7
>> [INFO] [MPM.PeriphManager] Found 1 daughterboard(s).
>> [INFO] [MPM.RPCServer] RPC server ready!
>> [INFO] [MPM.RPCServer] Spawning watchdog task...
>> [INFO] [MPM.PeriphManager] iniciando mpm
>> [INFO] [MPM.PeriphManager] init() called with device args
>> `mgmt_addr=192.168.1.23,product=e320'.
>> [INFO] [0/DmaFIFO#0] BIST passed (Estimated Minimum Throughput: 1361 MB/s)
>> [INFO] [0/DmaFIFO#0] BIST passed (Estimated Minimum Throughput: 1361 MB/s)
>> [INFO] [0/Radio#0] Performing CODEC loopback test on channel 0 ...
>> [INFO] [0/Radio#0] CODEC loopback test passed
>> [INFO] [0/Radio#0] Performing CODEC loopback test on channel 1 ...
>> [INFO] [0/Radio#0] CODEC loopback test passed
>> gr::log :DEBUG: rfnoc_rx_streamer0 - Committing graph...
>> [WARNING] [0/Radio#0] Attempting to set tick rate to 0. Skipping.
>> gr::log :DEBUG: rfnoc_rx_streamer0 - Sending start stream command...
>> Ogr::log :DEBUG: rfnoc_rx_streamer0 - UHD recv() call timed out.
>>
>> Seems that the first line is the problem. The 0x29106060 is my rfnoc
>> block. Should I recompile also gnuradio to catch the controller I install
>> in UHD?
>>
>> El lun, 21 feb 2022 a las 17:38, Rob Kossler (<rkoss...@nd.edu>)
>> escribió:
>>
>>> This looks all correct when using uhd_usrp_probe.  How about when you
>>> run from gnuradio - does the UHD console log show "anc2#0" or "Block#0" (or
>>> neither)?
>>>
>>> Regarding your question about issue_stream_cmd() from the DDC controller
>>> in gnuradio, I've forgotten how things are done in gnuradio - could you
>>> send your python file and maybe I can suggest a modification?
>>>
>>> By the way, each FPGA block (such as DDC) has a corresponding UHD block
>>> controller (running on the host side). So, it is possible to run
>>> issue_stream_cmd from the DDC controller rather than the rx_streamer.  I
>>> just don't remember how exactly to do that from gnuradio.
>>> Rob
>>>
>>> On Mon, Feb 21, 2022 at 11:27 AM Maria Muñoz <mamuk...@gmail.com> wrote:
>>>
>>>> Hi Rob,
>>>>
>>>> I have compiled the default cpp and hpp files in-tree, as I read that
>>>> this could be the issue. And uhd_usrp_probe identifies my block controller
>>>> name (anc2):
>>>>
>>>> uhd_usrp_probe
>>>> [INFO] [UHD] linux; GNU C++ version 9.3.0; Boost_107100;
>>>> UHD_4.0.0.HEAD-0-g90ce6062
>>>> [INFO] [MPMD] Initializing 1 device(s) in parallel with args:
>>>> mgmt_addr=,type=e3xx,product=e320,serial=31DFBB7,claimed=False,addr=
>>>> [INFO] [MPM.PeriphManager] iniciando mpm
>>>> [INFO] [MPM.PeriphManager] init() called with device args
>>>> `mgmt_addr=,product=e320'.
>>>> [INFO] [0/DmaFIFO#0] BIST passed (Estimated Minimum Throughput: 1361
>>>> MB/s)
>>>> [INFO] [0/DmaFIFO#0] BIST passed (Estimated Minimum Throughput: 1361
>>>> MB/s)
>>>> [INFO] [0/Radio#0] Performing CODEC loopback test on channel 0 ...
>>>> [INFO] [0/Radio#0] CODEC loopback test passed
>>>> [INFO] [0/Radio#0] Performing CODEC loopback test on channel 1 ...
>>>> [INFO] [0/Radio#0] CODEC loopback test passed
>>>>   _____________________________________________________
>>>>  /
>>>> |       Device: E300-Series Device
>>>> |     _____________________________________________________
>>>> |    /
>>>> |   |       Mboard: ni-e320-31DFBB7
>>>> |   |   eeprom_version: 3
>>>> |   |   fs_version: 20200914014807
>>>> |   |   mender_artifact: v4.0.0.0_e320
>>>> |   |   mpm_sw_version: 4.0.0.0-g57ca4235
>>>> |   |   pid: 58144
>>>> |   |   product: e320
>>>> |   |   rev: 5
>>>> |   |   rpc_connection: remote
>>>> |   |   serial: 31DFBB7
>>>> |   |   type: e3xx
>>>> |   |   MPM Version: 3.0
>>>> |   |   FPGA Version: 6.0
>>>> |   |   FPGA git hash: 90ce606.dirty
>>>> |   |
>>>> |   |   Time sources:  internal, external, gpsdo
>>>> |   |   Clock sources: external, internal, gpsdo
>>>> |   |   Sensors: ref_locked, gps_locked, fan, temp_fpga, temp_internal,
>>>> temp_rf_channelA, temp_rf_channelB, temp_main_power, gps_gpgga, gps_sky,
>>>> gps_time, gps_tpv
>>>> |     _____________________________________________________
>>>> |    /
>>>> |   |       RFNoC blocks on this device:
>>>> |   |
>>>> |   |   * 0/DDC#0
>>>> |   |   * 0/DUC#0
>>>> |   |   * 0/DmaFIFO#0
>>>> |   |   * 0/Radio#0
>>>> |   |   ** 0/anc2#0*
>>>> |     _____________________________________________________
>>>> |    /
>>>> |   |       Static connections on this device:
>>>> |   |
>>>> |   |   * 0/SEP#0:0==>0/DUC#0:0
>>>> |   |   * 0/DUC#0:0==>0/Radio#0:0
>>>> |   |   * 0/Radio#0:0==>0/DDC#0:0
>>>> |   |   * 0/DDC#0:0==>0/SEP#0:0
>>>> |   |   * 0/SEP#1:0==>0/DUC#0:1
>>>> |   |   * 0/DUC#0:1==>0/Radio#0:1
>>>> |   |   * 0/Radio#0:1==>0/DDC#0:1
>>>> |   |   * 0/DDC#0:1==>0/SEP#1:0
>>>> |   |   * 0/SEP#2:0==>0/DmaFIFO#0:0
>>>> |   |   * 0/DmaFIFO#0:0==>0/SEP#2:0
>>>> |   |   * 0/SEP#3:0==>0/DmaFIFO#0:1
>>>> |   |   * 0/DmaFIFO#0:1==>0/SEP#3:0
>>>> |   |   * 0/SEP#4:0==>0/anc2#0:0
>>>> |   |   * 0/anc2#0:0==>0/SEP#4:0
>>>> |     _____________________________________________________
>>>> |    /
>>>> |   |       TX Dboard: dboard
>>>> |   |     _____________________________________________________
>>>> |   |    /
>>>> |   |   |       TX Frontend: 0
>>>> |   |   |   Name: E3xx
>>>> |   |   |   Antennas: TX/RX
>>>> |   |   |   Freq range: 47.000 to 6000.000 MHz
>>>> |   |   |   Gain range PGA: 0.0 to 89.8 step 0.2 dB
>>>> |   |   |   Bandwidth range: 20000000.0 to 40000000.0 step 0.0 Hz
>>>> |   |   |   Connection Type: IQ
>>>> |   |   |   Uses LO offset: No
>>>> |   |     _____________________________________________________
>>>> |   |    /
>>>> |   |   |       TX Frontend: 1
>>>> |   |   |   Name: E3xx
>>>> |   |   |   Antennas: TX/RX
>>>> |   |   |   Freq range: 47.000 to 6000.000 MHz
>>>> |   |   |   Gain range PGA: 0.0 to 89.8 step 0.2 dB
>>>> |   |   |   Bandwidth range: 20000000.0 to 40000000.0 step 0.0 Hz
>>>> |   |   |   Connection Type: IQ
>>>> |   |   |   Uses LO offset: No
>>>> |     _____________________________________________________
>>>> |    /
>>>> |   |       RX Dboard: dboard
>>>> |   |     _____________________________________________________
>>>> |   |    /
>>>> |   |   |       RX Frontend: 0
>>>> |   |   |   Name: E3xx
>>>> |   |   |   Antennas: RX2, TX/RX
>>>> |   |   |   Freq range: 70.000 to 6000.000 MHz
>>>> |   |   |   Gain range PGA: 0.0 to 76.0 step 1.0 dB
>>>> |   |   |   Bandwidth range: 20000000.0 to 40000000.0 step 0.0 Hz
>>>> |   |   |   Connection Type: IQ
>>>> |   |   |   Uses LO offset: No
>>>> |   |     _____________________________________________________
>>>> |   |    /
>>>> |   |   |       RX Frontend: 1
>>>> |   |   |   Name: E3xx
>>>> |   |   |   Antennas: RX2, TX/RX
>>>> |   |   |   Freq range: 70.000 to 6000.000 MHz
>>>> |   |   |   Gain range PGA: 0.0 to 76.0 step 1.0 dB
>>>> |   |   |   Bandwidth range: 20000000.0 to 40000000.0 step 0.0 Hz
>>>> |   |   |   Connection Type: IQ
>>>> |   |   |   Uses LO offset: No
>>>>
>>>>
>>>>
>>>> But besides that, Radio does not stream anything. I attach my block
>>>> controller (which I haven't modified and has been generated with
>>>> rfnocmodtool).
>>>> I guess the problem could be what you said about the forwarding policy
>>>> set as drop by default, but I do not see any parameter like "one-to-one" or
>>>> "drop" anywhere. I use UHD 4.0 but not sure if this issue was fixed when I
>>>> installed it.
>>>> Do you see any problem with the controller I am using?
>>>>
>>>> Thanks again for the help,
>>>>
>>>> Maria.
>>>>
>>>> El lun, 21 feb 2022 a las 16:49, Rob Kossler (<rkoss...@nd.edu>)
>>>> escribió:
>>>>
>>>>> Hi Maria,
>>>>> A few remarks:
>>>>>
>>>>>    - If you wrote a custom block controller for your custom block,
>>>>>    then the forwarding policy should already be correct (one-to-one) by
>>>>>    default (unless your custom block controller specifically set the 
>>>>> policy to
>>>>>    DROP). On the other hand, if you did not write a custom block 
>>>>> controller
>>>>>    (thus relying on the UHD default block controller), then this explains 
>>>>> the
>>>>>    issue because in that case the default policy is "drop" (which will 
>>>>> cause
>>>>>    the issue you are seeing). Note that the default behavior of DROP for 
>>>>> the
>>>>>    default block controller has been changed to ONE_TO_ONE on the 'master'
>>>>>    branch of UHD but has not yet been changed on branch UHD-4.1.
>>>>>    - So, you don't need to implement "issue_stream_cmd". You just
>>>>>    need to verify that your block's action & properties forwarding 
>>>>> policies
>>>>>    are ONE_TO_ONE (which as I mentioned should be automatic if you create 
>>>>> your
>>>>>    own custom controller).
>>>>>    - You mentioned that you used rfnocmodtool to create your block
>>>>>    controller. But, my concern is that this block controller is not really
>>>>>    being used.  If you run uhd_usrp_probe, does your block show up with a
>>>>>    custom name (that you specified) or does it show up as "Block#0". If it
>>>>>    shows with the generic name "Block#0" it means that UHD is not using 
>>>>> your
>>>>>    block controller and instead using the default block controller (which
>>>>>    DROPs forwarding on UHD 4.1).  So, if this is the case for you, that 
>>>>> is the
>>>>>    issue that needs to be solved.  Unfortunately, I don't know the best 
>>>>> way to
>>>>>    solve this because I don't use rfnoc_mod_tool.  Take a look at the gain
>>>>>    block controller
>>>>>    
>>>>> <https://github.com/EttusResearch/uhd/blob/UHD-4.1/host/examples/rfnoc-example/lib/gain_block_control.cpp>
>>>>>    in the uhd/host/examples/rfnoc-example/ folder.  Note that this example
>>>>>    does very little (empty constructor).  At the bottom is a string
>>>>>    identifying the block which is the string that will be shown with
>>>>>    uhd_usrp_probe if UHD is using your block controller.
>>>>>
>>>>> Let me know if this is the issue. Once you get uhd_usrp_probe to "see"
>>>>> your block controller, your problem should be solved. If you can't get 
>>>>> this
>>>>> to work, let me know.
>>>>> Rob
>>>>>
>>>>> On Mon, Feb 21, 2022 at 4:41 AM Maria Muñoz <mamuk...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Hi Rob,
>>>>>>
>>>>>> Thanks for the answer.
>>>>>>
>>>>>> I have checked rfnoc_rx_streamer.cpp, ddc_block_control.cpp and my
>>>>>> custom block controller in uhd/host/lib folder, and I search for
>>>>>> "issue_stream_cmd" in them.
>>>>>>
>>>>>> In the rx_streamer one I see this function:
>>>>>>
>>>>>> void rfnoc_rx_streamer::issue_stream_cmd(const stream_cmd_t&
>>>>>>> stream_cmd)
>>>>>>> {
>>>>>>>     if (get_num_channels() > 1 and stream_cmd.stream_now
>>>>>>>         and stream_cmd.stream_mode !=
>>>>>>> stream_cmd_t::STREAM_MODE_STOP_CONTINUOUS) {
>>>>>>>         throw uhd::runtime_error(
>>>>>>>             "Invalid recv stream command - stream now on multiple
>>>>>>> channels in a "
>>>>>>>             "single streamer will fail to time align.");
>>>>>>>     }
>>>>>>
>>>>>>
>>>>>>     auto cmd        =
>>>>>>> stream_cmd_action_info::make(stream_cmd.stream_mode);
>>>>>>>     cmd->stream_cmd = stream_cmd;
>>>>>>
>>>>>>
>>>>>>     for (size_t i = 0; i < get_num_channels(); i++) {
>>>>>>>         const res_source_info info(res_source_info::INPUT_EDGE, i);
>>>>>>>         post_action(info, cmd);
>>>>>>>     }
>>>>>>> }
>>>>>>
>>>>>>
>>>>>> While in the ddc I see this:
>>>>>>
>>>>>>      void issue_stream_cmd(const uhd::stream_cmd_t& stream_cmd, const
>>>>>>> size_t port)
>>>>>>>     {
>>>>>>>         RFNOC_LOG_TRACE("issue_stream_cmd(stream_mode=" <<
>>>>>>> char(stream_cmd.stream_mode)
>>>>>>>                                                         << ", port="
>>>>>>> << port);
>>>>>>>         res_source_info dst_edge{res_source_info::OUTPUT_EDGE, port};
>>>>>>>         auto new_action        =
>>>>>>> stream_cmd_action_info::make(stream_cmd.stream_mode);
>>>>>>>         new_action->stream_cmd = stream_cmd;
>>>>>>>         issue_stream_cmd_action_handler(dst_edge, new_action);
>>>>>>>     }
>>>>>>
>>>>>>
>>>>>> There's no "issue_stream_cmd" on my block controller, so maybe as you
>>>>>> said the block is not forwarding actions. I'm not very familiar with
>>>>>> controller files, so could you please tell me which changes I must do to
>>>>>> have my block forwarding actions or point me out to any example to take 
>>>>>> as
>>>>>> a reference? I created my block using rfnocmodtool and follow the gain
>>>>>> example, so I guess this example is not forwarding actions either.
>>>>>>
>>>>>> By the way, how can I stream from DDC in a GNURadiograph? If DDC is
>>>>>> on the FPGA side, I have to cross to the host domain through a streamer,
>>>>>> don't I?
>>>>>>
>>>>>> Kind Regards,
>>>>>>
>>>>>> Maria
>>>>>>
>>>>>>
>>>>>>
>>>>>> El vie, 18 feb 2022 a las 15:14, Rob Kossler (<rkoss...@nd.edu>)
>>>>>> escribió:
>>>>>>
>>>>>>> By the way, if your custom FPGA block was truly the problem
>>>>>>> (blocking streaming), the Rx LED should be on and you should be getting
>>>>>>> lots of Overflow. Since this is not happening, it is a good indication 
>>>>>>> that
>>>>>>> the Rx Radio is never starting.
>>>>>>>
>>>>>>> On Fri, Feb 18, 2022 at 9:10 AM Rob Kossler <rkoss...@nd.edu> wrote:
>>>>>>>
>>>>>>>> Hi Maria,
>>>>>>>> The issue is likely related to "action forwarding" of the streaming
>>>>>>>> command. When your application asks to start streaming, it typically 
>>>>>>>> does
>>>>>>>> so by calling rx_streamer->issue_stream_cmd().  This "action" will 
>>>>>>>> then be
>>>>>>>> forwarded to the next upstream block controller (typically DDC block
>>>>>>>> controller) which will see the command and forward it to the next 
>>>>>>>> upstream
>>>>>>>> block controller (typically the Rx radio controller).  The Rx radio 
>>>>>>>> block
>>>>>>>> controller will then start the streaming.  As an example, let's say 
>>>>>>>> your
>>>>>>>> rx_streamer requested a fixed number of samples (say 1000) and assume 
>>>>>>>> that
>>>>>>>> your DDC decimation is 4.  With this architecture, the DDC block 
>>>>>>>> controller
>>>>>>>> can intercept the action and change the requested number of samples 
>>>>>>>> from
>>>>>>>> 1000 to 4000 so that when the radio block controller receives the 
>>>>>>>> command,
>>>>>>>> it will stream for exactly 4000 samples (which will provide 1000 
>>>>>>>> samples
>>>>>>>> out of the DDC). Note that all of this "action" propagation occurs in 
>>>>>>>> UHD
>>>>>>>> land (not on the FPGA).  So, if your custom block controller is not
>>>>>>>> forwarding actions, the Radio controller never gets the action and thus
>>>>>>>> never starts the streaming.  One way you can verify this is if you are 
>>>>>>>> able
>>>>>>>> to call issue_stream_cmd() from the DDC controller rather than the
>>>>>>>> rx_streamer.  This should cause your streaming to start.
>>>>>>>> Rob
>>>>>>>>
>>>>>>>> On Fri, Feb 18, 2022 at 8:13 AM Maria Muñoz <mamuk...@gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi all,
>>>>>>>>>
>>>>>>>>> I'm using a USRP E320 with UHD 4.0 and GNURadio 3.8 for receiving
>>>>>>>>> samples through an RX RFNoC Radio block and performing some 
>>>>>>>>> processing in a
>>>>>>>>> custom RFNoC block.
>>>>>>>>> I have created my block using rfnocmodtool, modifying the Verilog
>>>>>>>>> and yml files for my custom block. I left the cpp and hpp files as 
>>>>>>>>> default,
>>>>>>>>> but I copied them to the UHD install path to see the name of my block 
>>>>>>>>> with
>>>>>>>>> uhd_usrp_probe.
>>>>>>>>> I have tested satisfactorily my custom block with a gnuradio graph
>>>>>>>>> like this:
>>>>>>>>>
>>>>>>>>> Host block => rfnoc tx streamer => custom RFNoC block => rfnoc rx
>>>>>>>>> streamer => Host block
>>>>>>>>>
>>>>>>>>> I have also tested it for transmission through the rfnoc tx radio,
>>>>>>>>> and works fine:
>>>>>>>>>
>>>>>>>>> Host block => rfnoc tx streamer => custom RFNoC block => RFNoC
>>>>>>>>> DUC=> RFNoC TX Radio
>>>>>>>>>
>>>>>>>>> But when I try to receive from the radio with the following graph,
>>>>>>>>> rx led does not light up and gnuradio give time out:
>>>>>>>>> RFNoC RX Radio =>  RFNoC DDC   => custom RFNoC block =>  rfnoc rx
>>>>>>>>> streamer =>Host block
>>>>>>>>>
>>>>>>>>> If I remove my custom block from the last graph, I can receive
>>>>>>>>> samples and the led is on.
>>>>>>>>>
>>>>>>>>> It seems like the custom block is blocking somehow the samples. I
>>>>>>>>> tried with different sampling rates and spp values for the radio but
>>>>>>>>> nothing works.
>>>>>>>>>
>>>>>>>>> Any help on this will be appreciated.
>>>>>>>>>
>>>>>>>>> Kind Regards,
>>>>>>>>>
>>>>>>>>> Maria
>>>>>>>>> _______________________________________________
>>>>>>>>> USRP-users mailing list -- usrp-users@lists.ettus.com
>>>>>>>>> To unsubscribe send an email to usrp-users-le...@lists.ettus.com
>>>>>>>>>
>>>>>>>>
_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com

Reply via email to