Re: [USRP-users] rfnoc_image_builder error with clock domain

2021-02-18 Thread Aaron Rossetto via USRP-users
On Thu, Feb 18, 2021 at 7:28 AM Mike via USRP-users <
usrp-users@lists.ettus.com> wrote:

That is a typo in AN-400 that should probably be fixed.
>

Indeed it is! Good catch, and my apologies for the inconvenience. Glad you
found the resolution.

I've filed an issue on GitHub to update the application note to fix the
typo: https://github.com/EttusResearch/uhd/issues/416

It's obvious now but first time through it tripped me up.
>

Even now, I'd hesitate to call it obvious. :)

Best regards,
Aaron
___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] rfnoc_image_builder error with clock domain

2021-02-17 Thread Aaron Rossetto via USRP-users
On Tue, Feb 16, 2021 at 10:15 AM Mike via USRP-users <
usrp-users@lists.ettus.com> wrote:


> Any ideas?


Try changing the clock domain connection to your FFT block to this:
  - { srcblk: _device_, srcport: rfnoc_chdr,dstblk: fft0,   dstport:ce
}

Does that allow rfnoc_image_builder to complete successfully?

Best regards,
Aaron
___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] RFNoC OTT Block on E320

2021-02-15 Thread Aaron Rossetto via USRP-users
On Fri, Feb 12, 2021 at 5:53 AM Mark D via USRP-users
 wrote:

> So far I’ve got the FPGA built and uploaded to the FPGA. Uhd_usrp_probe shows 
> that the RFNoC routing as expected, but the name of OTT block has been 
> replaced with Block#0. The OOT project appears as a folder in GNU radio with 
> the new block available to be dragged into the project.

The output of '0/Block#{number}' from uhd_usrp_probe for out-of-tree
blocks in UHD 4.0 is a known limitation and expected. When UHD
discovers the topology of the RFNoC graph, it can see that a block is
there, but because it isn't registered with UHD, it is display with
the unimaginative name of 'Block'. Normally, the block controller
class contains the code to register the block with UHD; only in-tree
blocks that are built as a part of UHD have their names displayed in
uhd_usrp_probe.

Best regards,
Aaron

___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] RFNoC 4 rfnocmodtool

2021-02-09 Thread Aaron Rossetto via USRP-users
On Mon, Feb 8, 2021 at 5:35 AM Askar, Ramez via USRP-users
 wrote:

> Is rfnocmodtool made to create a completely new module, or it is also support 
> adding the provided modules from Ettus, such as FIR, FFT, etc to the design? 
> I am asking as I have noticed  that the RFnoC modules are supported for C++ 
> application, however, a limited subset appears in the Gnuradio Ettus OOT 
> module. How do I add the rest to Gnuradio?

rfnocmodtool is intended to help you get started creating a new RFNoC
block. The tool provides some boilerplate Verilog code that provides
the 'shell' of an RFNoC block, some boilerplate C++ code for creating
a block controller and bindings to use the block with GNU Radio, and a
block definition .yml file which is needed to integrate the block into
an RFNoC design.

If you want to use a new IP core in an RFNoC design, you'll first have
to create an RFNoC block and adapt the IP core to the RFNoC block
standards. Integrating that block into an RFNoC signal path requires
modifying the .yml file that describes the collection of blocks for
your radio's FPGA image and the connections between them. (For
example, for the X300 series of radios, see
fpga/usrp3/top/x300/x300_rfnoc_image_core.yml in the UHD repo for how
that is specified.)

Once again, I *highly* recommend watching the RFNoC 4 Workshop video
that I linked in a previous message in this thread, which walks you
through the entire process of creating a new RFNoC block, integrating
it into a radio image, and then interacting with the block controller
from GNU Radio. It essentially details every step that you will need
to perform.

Best regards,
Aaron

___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] RFNoC 4 rfnocmodtool

2021-02-04 Thread Aaron Rossetto via USRP-users
Hi Ramez,

I'd like to recommend a thorough viewing of the excellent RFNoC 4
Workshop video that Jonathon Pendlum and Neel Pandeya from Ettus
Research put together for GRCon 2020, which is available on YouTube at
https://www.youtube.com/watch?v=M9ntwQie9vs. This should walk you
through the process of creating a new out-of-tree RFNoC 4 module and
adding support for it to GNU Radio and your USRP device.

Best regards,
Aaron

On Thu, Feb 4, 2021 at 12:15 PM Askar, Ramez via USRP-users
 wrote:
>
> Dear Sir or Madam,
>
>
>
> I would like to use one of the available FPGA blocks from Ettus – such as FIR 
> filter -- to customize my FPGA image, and add the corresponding control 
> driver for C++ application and Gnuradio. However, after creating newmod with 
> rfnocmodtool, I have tried to add fir filter block, the tool is not aware 
> about the existing blocks. Instead, the rfnocmodtool has created a module 
> from scratch called FIR. In other words, it did not import the FIR module 
> that is offered by Ettus team. Is there any other way of doing this? How can 
> add a OOT RFNoC FIR control module to gnuradio?
>
>
>
> Best regards / Mit freundlichen Grüßen
>
> --
> Askar, Ramez, M.Sc.
> Research Associate / Project Manager / Delegate
>
> Wireless Communications and Networks
> Fraunhofer Institute for Telecommunications, Heinrich Hertz Institute, HHI
> Einsteinufer 37, 10587 Berlin, Germany
> +49 (0)30 31002-628
> ramez.as...@hhi.fraunhofer.de
> www.hhi.fraunhofer.de
>
>
>
> ___
> USRP-users mailing list
> USRP-users@lists.ettus.com
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] DPDK troubles (invalid ELF header loading dpdk library)

2021-02-03 Thread Aaron Rossetto via USRP-users
on at pps edge
> [INFO] [MULTI_USRP] 2) set times next pps (synchronously)
> [WARNING] [0/Radio#0] Attempting to set tick rate to 0. Skipping.
> [WARNING] [0/Radio#1] Attempting to set tick rate to 0. Skipping.
> [WARNING] [0/Radio#1] Attempting to set tick rate to 0. Skipping.
> [WARNING] [0/Radio#0] Attempting to set tick rate to 0. Skipping.
> Setting TX spp to 1989
> [00:00:04.907401082] Testing receive rate 62.50 Msps on 4 channels
> [00:00:04.914615576] Testing transmit rate 62.50 Msps on 4 channels
> [00:00:15.167869894] Benchmark complete.
>
>
> Benchmark rate summary:
>   Num received samples: 2549794336
>   Num dropped samples:  0
>   Num overruns detected:0
>   Num transmitted samples:  2499910452
>   Num sequence errors (Tx): 0
>   Num sequence errors (Rx): 0
>   Num underruns detected:   0
>   Num late commands:0
>   Num timeouts (Tx):0
>   Num timeouts (Rx):0
>
>
> Done!
>
> // Second run fails
> root@irisheyes5-hp-z240-sff:~# benchmark_rate --tx_rate=62.5e6 
> --rx_rate=62.5e6 --channels="0,1,2,3" 
> --args="use_dpdk=1,mgmt_addr=192.168.1.88,addr=192.168.60.2"
>
> [INFO] [UHD] linux; GNU C++ version 9.3.0; Boost_107100; 
> UHD_4.0.0.0-50-ge520e3ff
> EAL: Detected 8 lcore(s)
> EAL: Detected 1 NUMA nodes
> EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
> EAL: No free hugepages reported in hugepages-1048576kB
> EAL: Probing VFIO support...
> EAL: VFIO support initialized
> EAL: PCI device :03:00.0 on NUMA socket -1
> EAL:   Invalid NUMA socket, default to 0
> EAL:   probe driver: 8086:1584 net_i40e
> EAL:   using IOMMU type 1 (Type 1)
> EAL: PCI device :03:00.1 on NUMA socket -1
> EAL:   Invalid NUMA socket, default to 0
> EAL:   probe driver: 8086:1584 net_i40e
> EAL: PCI device :03:00.2 on NUMA socket -1
> EAL:   Invalid NUMA socket, default to 0
> EAL:   probe driver: 8086:1584 net_i40e
> EAL: PCI device :03:00.3 on NUMA socket -1
> EAL:   Invalid NUMA socket, default to 0
> EAL:   probe driver: 8086:1584 net_i40e
> [ERROR] [DPDK] All DPDK links did not report as up!
> EAL: FATAL: already called initialization.
> EAL: already called initialization.
> [ERROR] [UHD] Device discovery error: RuntimeError: DPDK: All DPDK links did 
> not report as up!
> [ERROR] [DPDK] Error with EAL initialization
> [ERROR] [X300] X300 Network discovery error RuntimeError: Error with EAL 
> initialization
> [00:00:00.000122] Creating the usrp device with: 
> use_dpdk=1,mgmt_addr=192.168.1.88,addr=192.168.60.2...
> EAL: FATAL: already called initialization.
> EAL: already called initialization.
> [ERROR] [DPDK] Error with EAL initialization
> [ERROR] [UHD] Device discovery error: RuntimeError: Error with EAL 
> initialization
> EAL: FATAL: already called initialization.
> EAL: already called initialization.
> [ERROR] [DPDK] Error with EAL initialization
> [ERROR] [X300] X300 Network discovery error RuntimeError: Error with EAL 
> initialization
> Error: LookupError: KeyError: No devices found for ->
> Device Address:
> use_dpdk: 1
> mgmt_addr: 192.168.1.88
> addr: 192.168.60.2
>
> // Third run fails
> root@irisheyes5-hp-z240-sff:~# benchmark_rate --tx_rate=62.5e6 
> --rx_rate=62.5e6 --channels="0,1,2,3" 
> --args="use_dpdk=1,mgmt_addr=192.168.1.88,addr=192.168.60.2"
>
> [INFO] [UHD] linux; GNU C++ version 9.3.0; Boost_107100; 
> UHD_4.0.0.0-50-ge520e3ff
> EAL: Detected 8 lcore(s)
> EAL: Detected 1 NUMA nodes
> EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
> EAL: No free hugepages reported in hugepages-1048576kB
> EAL: Probing VFIO support...
> EAL: VFIO support initialized
> EAL: PCI device :03:00.0 on NUMA socket -1
> EAL:   Invalid NUMA socket, default to 0
> EAL:   probe driver: 8086:1584 net_i40e
> EAL:   using IOMMU type 1 (Type 1)
> EAL: PCI device :03:00.1 on NUMA socket -1
> EAL:   Invalid NUMA socket, default to 0
> EAL:   probe driver: 8086:1584 net_i40e
> EAL: PCI device :03:00.2 on NUMA socket -1
> EAL:   Invalid NUMA socket, default to 0
> EAL:   probe driver: 8086:1584 net_i40e
> EAL: PCI device :03:00.3 on NUMA socket -1
> EAL:   Invalid NUMA socket, default to 0
> EAL:   probe driver: 8086:1584 net_i40e
> [ERROR] [DPDK] All DPDK links did not report as up!
> EAL: FATAL: already called initialization.
> EAL: already called initialization.
> [ERROR] [UHD] Device discovery error: RuntimeError: DPDK: All DPDK links did 
> not report as up!
> [ERROR] [DPDK] Error with EAL initialization
> [ERROR] [X300] X300 Network discovery error RuntimeError: Error with EAL 
> initialization
> [00:00:00.000148] Creating the usrp device with: 

Re: [USRP-users] DPDK troubles (invalid ELF header loading dpdk library)

2021-02-02 Thread Aaron Rossetto via USRP-users
On Mon, Feb 1, 2021 at 9:02 PM Rob Kossler via USRP-users
 wrote:

> Has anyone successfully used DPDK with Ubuntu 20.04, UHD 4.0, Intel XL710 
> NIC, and N310 (or X310)?

If I remember correctly, I believe DPDK tries to dlopen() *everything*
in the directory specified by the dpdk_driver parameter in the DPDK
section of uhd.conf, leading to a lot of errors similar to yours
('Invalid ELF header' and the like). Having the correct collection of
.so files in that directory is key.

What's worked for me in the past when using DPDK with an Intel XL710
is creating a directory (I used /usr/local/lib/dpdk-pmds) and copying
a specific set of DPDK .so files into this directory:
* librte_mempool_ring.so
* librte_pdump.so (I think this one is optional--I had been trying to
get packet dumps from DPDK a while back)
* librte_pmd_i40e.so
* librte_pmd_ixgbe.so (may be optional?)
* librte_pmd_pcap.so (this one is also optional, I think)
* librte_pmd_ring.so

(Symlinking to the actual libraries wherever they get installed
instead of copying them into the directory would probably work as
well.)

Then, make sure that the dpdk-driver key in the [use_dpdk=1] section
of uhd.conf points to that directory:
dpdk_driver = /usr/local/lib/dpdk-pmds

Hopefully that will resolve the issue and get you a little further
down the road.

Best regards,
Aaron

___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] Issues getting UHD and DPDK working with Mellanox ConnectX-5

2021-02-01 Thread Aaron Rossetto via USRP-users
Hi Jorge,

The '[WARNING] [DPDK] Detected use_dpdk argument, but DPDK support not
built in' message means that the version of UHD you are using (in this
case, the 3.15.LTS version you installed via PyBOMBS) was not compiled
with DPDK support. For DPDK to be available and usable, the UHD driver
has to be built against the appropriate version of the DPDK libraries
for UHD. If you build the UHD 3.15.LTS branch from source and have the
appropriate DPDK libraries installed, the cmake step prior to
compilation will indicate support for DPDK in the output:

-- Found DPDK: /usr/local/include/dpdk (found version "18.11")  (note:
this is the output for building UHD-4.0, hence the more recent
version)
:
:
-- ##
-- # UHD enabled components
-- ##
:
--   * DPDK
:

Then you should be able to proceed.

Best regards,
Aaron

On Thu, Jan 28, 2021 at 6:48 AM Jorge Arroyo Giganto via USRP-users
 wrote:
>
> Hi,
>
> I am trying to get DPDK and UHD working with a Mellanox ConnectX-5 NIC.
>
> I am using UHD-3.15.LTS (the installation was done with PyBOMBS in order to 
> have RFNoC support, I did it following the RFNoC Getting Started guide), with 
> an X310 and running Ubuntu 16.04 on the Host.
>
> I have followed the guides Getting Started with DPDK and UHD and UHD's manual 
> DPDK page with no luck.
>
> For DPDK, as I am using Ubuntu 16.04, I downloaded from DPDK's download page 
> the recommended DPDK 17.11.10 (LTS) version.
>
> About the ConnectX-5, I installed its drivers (the LTS version of MLNX_OFED) 
> with "./mlnxofedinstall --upstream-libs --dpdk". The drivers seem to work 
> fine as I am able to run UHD applications using the X310 at 10Gb/s, however 
> when setting "use_dpdk=1" I always get the "[WARNING] [DPDK] Detected 
> use_dpdk argument, but DPDK support not built in." message.
>
> My uhd.conf file looks like this:
>
> [use_dpdk=1]
> dpdk-mtu=9000
> dpdk-driver=~/dpdk-stable-17.11.10/build/build/drivers   ; (not sure about 
> this line as I don't have the /usr/lib/x86_64-linux-gnu/dpdk-17.11-drivers/ 
> directory, maybe this is a clue?)
> dpdk-corelist=0,1
> dpdk-num-mbufs=4095
> dpdk-mbufs-cache-size=315
>
> [dpdk-mac=04:3f:72:c3:70:fd]
> dpdk-io-cpu=1
> dpdk-ipv4=192.168.40.1/24
>
> [dpdk-mac=04:3f:72:c3:70:fc]
> dpdk-io-cpu=1
> dpdk-ipv4=192.168.10.1/24
>
>
> If anyone with this setup has gotten DPDK to work I would appreciate the help 
> very much.
>
> Best regards,
>
> Jorge
> ___
> USRP-users mailing list
> USRP-users@lists.ettus.com
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] uhd4.0 and blocks with multiple ports

2021-01-25 Thread Aaron Rossetto via USRP-users
I agree that this question is more in the domain of GNURadio, but I do
want to point out that RFNoC 4.0 blocks most certainly can have
different numbers of inputs and outputs. A good example is the RFNoC
Fosphor block:

https://github.com/EttusResearch/uhd/tree/master/fpga/usrp3/lib/rfnoc/fosphor
https://github.com/EttusResearch/uhd/blob/master/host/include/uhd/rfnoc/blocks/fosphor.yml

The GR 3.8 support for this block (and other UHD 4.0 RFNoC blocks) is
in gr-ettus:

https://github.com/EttusResearch/gr-ettus/blob/master/grc/ettus_rfnoc_fosphor.block.yml

Best regards,
Aaron

On Mon, Jan 25, 2021 at 3:25 PM Marcus D Leech via USRP-users
 wrote:
>
> This is clearly a question for the discuss-gnuradio mailing list.
>
> Sent from my iPhone
>
> > On Jan 25, 2021, at 2:43 PM, dario via USRP-users 
> >  wrote:
> >
> > 
> > Hi,
> > I created a block with two output ports and one input port however when i 
> > try to connect it via stream endpoints gnuradio companion claims it doesn't 
> > know how to handle this. I then added a sexond inout as i recall that on 
> > uhd 3.15 it is necessary to have as many inputs as outputs but it gave back 
> > the same error now saying it doesn't know how to connect blocks with two 
> > inputs and two outputs.
> > I'm a bit confuse because it seems radio for example has two outputs 
> > however it is statically connected. Is it at all possible to have a dynamic 
> > connection of a block with multiple outputs? What is the possible reason 
> > why node manager reports it doesn't support this connection?
> >
> > Thanks,
> >
> > Dario
> >
> > ___
> > USRP-users mailing list
> > USRP-users@lists.ettus.com
> > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>
> ___
> USRP-users mailing list
> USRP-users@lists.ettus.com
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] No streaming using OOT RFNoC Block in UHD4

2021-01-25 Thread Aaron Rossetto via USRP-users
On Mon, Jan 25, 2021 at 11:33 AM Cédric Hannotier via USRP-users
 wrote:

> So the action is propagated by the gain block iif the controller is
> built with UHD and hence recognized by uhd_usrp_probe.
> Building the controller as OOT makes the block unrecognized and
> hence falls back to name 'Block' and controller 'noc_block_base',
> that does not seem to forward issue_stream_cmd.
>
> All of this is quite inconvenient (for me).
> Do you know if there is an internal roadmap to fix this?

Thanks for taking the time to build the module with UHD and discover
the inconsistent (and I agree inconvenient) behavior. I would like to
encourage you to file an issue about this on the UHD issues page at
https://github.com/EttusResearch/uhd/issues. That way we can ensure
that it is on our radar.

Best regards,
Aaron

___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] No streaming using OOT RFNoC Block in UHD4

2021-01-22 Thread Aaron Rossetto via USRP-users
On Thu, Jan 21, 2021 at 4:49 PM Cédric Hannotier via USRP-users
 wrote:

> On a side note:
> Are we forced to implement a custom controller for each RFNoC block?
> I was expecting that I could just write the verilog part
> and use the basic noc_block_base controller to manage my blocks in C++,
> using regs()->peek32/poke32 to set my registers etc.
> But from above, it seems that it does not forward the issue_stream_cmd
> by default? Is that correct?

For very basic RFNoC block prototyping, you should be able to use the
default noc_block_base implementation if you are willing to access
your NoC block's functionality via register reads and writes and deal
with some additional complications when dealing with multiple custom
RFNoC blocks. You should be able to get a reference to the block by
calling get_block() on your rfnoc_block object--this method returns a
noc_block_base::sptr.

The bit that's complicated is that get_block() takes a block_id_t,
which consists of the device number, block name, and instance (e.g.,
'0/MyBlock#0' when represented as a string). Generally, the name is
assigned to the block in the custom block controller via the
UHD_RFNOC_BLOCK_REGISTER_DIRECT() macro. If the block is not
registered via this macro, as is the case when using noc_block_base
directly, the block will be assigned the unimaginative but technically
correct name of 'Block'. Thus, if you want to use multiple different
custom RFNoC blocks without custom block controllers in this manner,
you will need to verify that when you call get_block("0/Block#n"), it
is the block that you expect. You can call get_noc_id() on the
noc_block_base that is returned and ensure that the 32-bit ID indeed
represents the block that you wish to control.

Unless specifically overridden, the default behavior of a
noc_block_base-derived object, I believe, is to forward actions
(stream commands) using the ONE_TO_ONE forwarding policy, which means
to forward the action to the same port on the opposite edge (so to
output port #N if the action is received on input port #N, and vice
versa). Consult the documentation of uhd::rfnoc::node_t and
forwarding_policy_t for more details.

Best regards,
Aaron

___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] DPDK runtime error

2020-01-08 Thread Aaron Rossetto via USRP-users
Hello Florian,

I believe in UHD 3.15, the keys in the uhd.conf file use dashes (-), not 
underscores between words, e.g.:

[dpdk-mac=00:11:22:33:44:55]
dpdk-io-cpu = 1
dpdk-ipv4 = 192.168.10.1/24

Hope that helps,
Aaron



From: USRP-users  On Behalf Of Florian 
Kaltenberger via USRP-users
Sent: Wednesday, January 8, 2020 10:10 AM
Subject: [EXTERNAL] Re: [USRP-users] DPDK runtime error

Hi, 
we now installed DPDK 17.11 but I still have exactly the same problem. 
I have a feeling the problem is that I am not addressing the device correctly. 
Here is what I did:
The USRP is connected to ethernet interfaces "p1p2" (mac_addr 
64:9d:99:b1:1e:8d) and "p1p4" (mac_addr 64:9d:99:b1:1e:8f) which are originally 
configured with IP addresses 192.168.10.1 and inet_addr 192.168.20.1. This 
configuration works fine without dpdk.
Then I deactivate these two interfaces using "ifconfig p1p2 down" "ifconfig 
p1p4 down"and do "dpdk-devbind --bind=vfio-pci 01:00.1" and "dpdk-devbind 
--bind=vfio-pci 01:00.3". The status of "dpdk-devbind -s" is below.
In the file /etc/uhd/uhd.conf I specify
[dpdk_mac=64:9d:99:b1:1e:8d]
dpdk_io_cpu = 1
dpdk_ipv4 = 192.168.10.1/24

[dpdk_mac=64:9d:99:b1:1e:8f]
dpdk_io_cpu = 2
dpdk_ipv4 = 192.168.20.1/24
Is this the correct way of specifying it? What surprises me is that DPDK 
requires to address the device by its PCI address while UHD still requires to 
set the IP addresses. 
Florian.

___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com