Discussion and technical support related to USRP, UHD, RFNoC
View all threadsHello!
We have an X410 connected to a host computer through two QSFP28-to-QSFP28 connections with IPs 192.168.10.2 and 192.168.20.2 for interfaces 0 and 1 respectively. The X410 also has an ethernet connection to a router with an IP 192.168.1.19, which the host computer is also connected to.
When the X410 is loaded with the UC_200 image, everything seems to work as desired and running "uhd_find_devices" on its own produces:
[INFO] [UHD] linux; GNU C++ version 9.4.0; Boost_107100; DPDK_19.11; UHD_4.5.0.0-0-g471af98f
--------------------------------------------------
-- UHD Device 0
--------------------------------------------------
Device Address:
serial: 326E872
addr: 192.168.20.2
claimed: False
fpga: UC_200
mgmt_addr: 192.168.1.19
mgmt_addr: 192.168.20.2
name: ni-x4xx-326E872
product: x410
type: x4xx
When I try to change images with "uhd_image_loader --args type=x4xx,mgmt_address=192.168.1.19,fpga=CG_400 ", it seems to work but then errors out:
[INFO] [UHD] linux; GNU C++ version 9.4.0; Boost_107100; DPDK_19.11; UHD_4.5.0.0-0-g471af98f
[INFO] [MPMD] Initializing 1 device(s) in parallel with args: mgm_addr=192.168.1.19,addr0=192.168.20.2,mgmt_addr=192.168.1.19,type=x4xx,product=x410,serial=326E872,name=ni-x4xx-326E872,fpga=UC_200,claimed=False,addr=192.168.1.19,skip_init=1
[INFO] [MPMD] Claimed device without full initialization.
[INFO] [MPMD IMAGE LOADER] Starting update. This may take a while.
[INFO] [MPM.PeriphManager] Installing component `fpga'
[INFO] [MPM.PeriphManager] Installing component `dts'
[INFO] [MPM.RPCServer] Resetting peripheral manager.
[INFO] [MPM.PeriphManager] Device serial number: 3263584
[INFO] [MPM.PeriphManager.ClkMgr] Using Clock Configuration:
DB0: Master Clock Rate: 491.52 MSps @Converter Rate 2.94912 GHz
DB1: Master Clock Rate: 491.52 MSps @Converter Rate 2.94912 GHz
[INFO] [MPM.PeriphManager] Initialized 2 daughterboard(s).
[INFO] [MPM.PeriphManager] init() called with device args `boot_init=True,clock_source=internal,time_source=internal,initializing=True'.
[ERROR] [RPC] Someone tried to claim this device again (From: 192.168.1.20)
[INFO] [MPMD IMAGE LOADER] Update component function succeeded.
[INFO] [MPMD] Initializing 1 device(s) in parallel with args: mgm_addr=192.168.1.19,addr0=192.168.20.2,mgmt_addr=192.168.20.2,type=x4xx,product=x410,serial=326E872,name=ni-x4xx-326E872,fpga=CG_400,claimed=False,addr=192.168.20.2,mgmt_address=192.168.1.19,find_all=1
[INFO] [MPM.PeriphManager] init() called with device args `addr0=192.168.20.2,find_all=1,fpga=CG_400,mgm_addr=192.168.1.19,mgmt_addr=192.168.20.2,mgmt_address=192.168.1.19,name=ni-x4xx-326E872,product=x410,clock_source=internal,time_source=internal,initializing=True'.
[ERROR] [RFNOC::MGMT] EnvironmentError: IOError: recv error on socket: Connection refused
[ERROR] [RFNOC::GRAPH] IO Error during GSM initialization. EnvironmentError: IOError: recv error on socket: Connection refused
[ERROR] [RFNOC::GRAPH] Caught exception while initializing graph: EnvironmentError: IOError: recv error on socket: Connection refused
Error: RuntimeError: Failure to create rfnoc_graph.
But if I run uhd_find_devices again I get what I expect :
--------------------------------------------------
-- UHD Device 0
--------------------------------------------------
Device Address:
serial: 326E872
addr: 192.168.20.2
claimed: False
fpga: CG_400
mgmt_addr: 192.168.1.19
mgmt_addr: 192.168.10.2
mgmt_addr: 192.168.20.2
name: ni-x4xx-326E872
product: x410
type: x4xx
If I try and run any script though, even specifying the addresses, I get the same errors as when changing the image. An example is with 'uhd_usrp_probe --args "mgmt_addr=192.168.1.19,type=x4xx" ' even without any arguements:
INFO] [UHD] linux; GNU C++ version 9.4.0; Boost_107100; DPDK_19.11; UHD_4.5.0.0-0-g471af98f
[INFO] [MPMD] Initializing 1 device(s) in parallel with args: mgm_addr=192.168.1.19,addr0=192.168.20.2,mgmt_addr=192.168.1.19,type=x4xx,product=x410,serial=326E872,name=ni-x4xx-326E872,fpga=CG_400,claimed=False
[INFO] [MPM.PeriphManager] init() called with device args `addr0=192.168.20.2,fpga=CG_400,mgm_addr=192.168.1.19,mgmt_addr=192.168.1.19,name=ni-x4xx-326E872,product=x410,clock_source=internal,time_source=internal,initializing=True'.
[ERROR] [RFNOC::MGMT] EnvironmentError: IOError: recv error on socket: Connection refused
[ERROR] [RFNOC::GRAPH] IO Error during GSM initialization. EnvironmentError: IOError: recv error on socket: Connection refused
[ERROR] [RFNOC::GRAPH] Caught exception while initializing graph: EnvironmentError: IOError: recv error on socket: Connection refused
Error: RuntimeError: Failure to create rfnoc_graph.
The errors disappear when I use addr0 instead of mgmt_addr or addr. Since this option is not listed in the wiki (https://files.ettus.com/manual/page_usrp_x4xx.html#x4xx_usage_args) I am curious if I am using it correctly. At the end of the day, I want to make sure that when using the CG_400 image that both QSFP28 interfaces are operating, and that I can switch between the two images without errors. Previously we used to only have a single connection.
Thanks!
Zack
Hi Zack,
I cannot say from the top of my head what exactly the difference between addr and addr0 is internally. Usually, addr0, addr1 etc. are used for addressing multiple devices but /should/ be equivalent to just using addr.
When looking at the output of uhd_find_devices we see that with the 400 MHz FPGA image, both QSFP ports seem to be present, that's already good. However, when looking at the error message this indicates that something might be wrong with some network connection. Can you verify that the QSFP ports on your computer are both configured properly? The last time I saw this error was when someone set up a new host computer, forgot to configure his 10 Gbps interface to match the physically connected X410 and wanted to run an application that relied on that connection.
/Martin
From: zackkomo@utexas.edu zackkomo@utexas.edu
Sent: Monday, November 13, 2023 7:54 PM
To: usrp-users@lists.ettus.com
Subject: [USRP-users] X410 recv error on socket: Connection refused
You don't often get email from zackkomo@utexas.edumailto:zackkomo@utexas.edu. Learn why this is importanthttps://aka.ms/LearnAboutSenderIdentification
Hello!
We have an X410 connected to a host computer through two QSFP28-to-QSFP28 connections with IPs 192.168.10.2 and 192.168.20.2 for interfaces 0 and 1 respectively. The X410 also has an ethernet connection to a router with an IP 192.168.1.19, which the host computer is also connected to.
When the X410 is loaded with the UC_200 image, everything seems to work as desired and running "uhd_find_devices" on its own produces:
[INFO] [UHD] linux; GNU C++ version 9.4.0; Boost_107100; DPDK_19.11; UHD_4.5.0.0-0-g471af98f
-- UHD Device 0
Device Address:
serial: 326E872
addr: 192.168.20.2
claimed: False
fpga: UC_200
mgmt_addr: 192.168.1.19
mgmt_addr: 192.168.20.2
name: ni-x4xx-326E872
product: x410
type: x4xx
When I try to change images with "uhd_image_loader --args type=x4xx,mgmt_address=192.168.1.19,fpga=CG_400 ", it seems to work but then errors out:
[INFO] [UHD] linux; GNU C++ version 9.4.0; Boost_107100; DPDK_19.11; UHD_4.5.0.0-0-g471af98f
[INFO] [MPMD] Initializing 1 device(s) in parallel with args: mgm_addr=192.168.1.19,addr0=192.168.20.2,mgmt_addr=192.168.1.19,type=x4xx,product=x410,serial=326E872,name=ni-x4xx-326E872,fpga=UC_200,claimed=False,addr=192.168.1.19,skip_init=1
[INFO] [MPMD] Claimed device without full initialization.
[INFO] [MPMD IMAGE LOADER] Starting update. This may take a while.
[INFO] [MPM.PeriphManager] Installing component `fpga'
[INFO] [MPM.PeriphManager] Installing component `dts'
[INFO] [MPM.RPCServer] Resetting peripheral manager.
[INFO] [MPM.PeriphManager] Device serial number: 3263584
[INFO] [MPM.PeriphManager.ClkMgr] Using Clock Configuration:
DB0: Master Clock Rate: 491.52 MSps @Converter Rate 2.94912 GHz
DB1: Master Clock Rate: 491.52 MSps @Converter Rate 2.94912 GHz
[INFO] [MPM.PeriphManager] Initialized 2 daughterboard(s).
[INFO] [MPM.PeriphManager] init() called with device args `boot_init=True,clock_source=internal,time_source=internal,initializing=True'.
[ERROR] [RPC] Someone tried to claim this device again (From: 192.168.1.20)
[INFO] [MPMD IMAGE LOADER] Update component function succeeded.
[INFO] [MPMD] Initializing 1 device(s) in parallel with args: mgm_addr=192.168.1.19,addr0=192.168.20.2,mgmt_addr=192.168.20.2,type=x4xx,product=x410,serial=326E872,name=ni-x4xx-326E872,fpga=CG_400,claimed=False,addr=192.168.20.2,mgmt_address=192.168.1.19,find_all=1
[INFO] [MPM.PeriphManager] init() called with device args `addr0=192.168.20.2,find_all=1,fpga=CG_400,mgm_addr=192.168.1.19,mgmt_addr=192.168.20.2,mgmt_address=192.168.1.19,name=ni-x4xx-326E872,product=x410,clock_source=internal,time_source=internal,initializing=True'.
[ERROR] [RFNOC::MGMT] EnvironmentError: IOError: recv error on socket: Connection refused
[ERROR] [RFNOC::GRAPH] IO Error during GSM initialization. EnvironmentError: IOError: recv error on socket: Connection refused
[ERROR] [RFNOC::GRAPH] Caught exception while initializing graph: EnvironmentError: IOError: recv error on socket: Connection refused
Error: RuntimeError: Failure to create rfnoc_graph.
But if I run uhd_find_devices again I get what I expect :
-- UHD Device 0
Device Address:
serial: 326E872
addr: 192.168.20.2
claimed: False
fpga: CG_400
mgmt_addr: 192.168.1.19
mgmt_addr: 192.168.10.2
mgmt_addr: 192.168.20.2
name: ni-x4xx-326E872
product: x410
type: x4xx
If I try and run any script though, even specifying the addresses, I get the same errors as when changing the image. An example is with 'uhd_usrp_probe --args "mgmt_addr=192.168.1.19,type=x4xx" ' even without any arguements:
INFO] [UHD] linux; GNU C++ version 9.4.0; Boost_107100; DPDK_19.11; UHD_4.5.0.0-0-g471af98f
[INFO] [MPMD] Initializing 1 device(s) in parallel with args: mgm_addr=192.168.1.19,addr0=192.168.20.2,mgmt_addr=192.168.1.19,type=x4xx,product=x410,serial=326E872,name=ni-x4xx-326E872,fpga=CG_400,claimed=False
[INFO] [MPM.PeriphManager] init() called with device args `addr0=192.168.20.2,fpga=CG_400,mgm_addr=192.168.1.19,mgmt_addr=192.168.1.19,name=ni-x4xx-326E872,product=x410,clock_source=internal,time_source=internal,initializing=True'.
[ERROR] [RFNOC::MGMT] EnvironmentError: IOError: recv error on socket: Connection refused
[ERROR] [RFNOC::GRAPH] IO Error during GSM initialization. EnvironmentError: IOError: recv error on socket: Connection refused
[ERROR] [RFNOC::GRAPH] Caught exception while initializing graph: EnvironmentError: IOError: recv error on socket: Connection refused
Error: RuntimeError: Failure to create rfnoc_graph.
The errors disappear when I use addr0 instead of mgmt_addr or addr. Since this option is not listed in the wiki (https://files.ettus.com/manual/page_usrp_x4xx.html#x4xx_usage_args) I am curious if I am using it correctly. At the end of the day, I want to make sure that when using the CG_400 image that both QSFP28 interfaces are operating, and that I can switch between the two images without errors. Previously we used to only have a single connection.
Thanks!
Zack
National Instruments Dresden GmbH; Gesch?ftsf?hrer (Managing Directors): John Stanton McElroy, Albert Edward Percival III, Kathleen Spurck; Sitz (Registered Office): Dresden; HRB (Commercial Register No.): 22081; Registergericht (Registration Court): Dresden
This email and any attachments are intended only for the person to whom this email is addressed and may contain confidential and/or privileged information. If you received this email in error, please do not disclose the contents to anyone, but notify the sender by return email and delete this email (and any attachments) from your system.
I can verify that the QSFP ports on my host computer are both configured properly. Before we moved to using both QSFP28 interfaces on the x410, we only using a single one, indexed 1 on the x410, with IP 192.168.20.2. This worked with both images, as long as I specified the addr to be that IP. Once I plugged in the second port is when I started having these issues. If I only have interface 0 plugged in (192.68.10.2), the UC_200 doesn’t work, which is expected after reading the wiki, and the CG_400 image does works. This makes me believe that they are configured correctly.