Ubuntu packages...
No -dev, => no includes:(
The ICMP test is fine for testing physical wear (line, connectors OSI layer
2)
Ofc a dedicated usrp benchmark is better for application (layer 4)
benchmark:)

PS. If this conversation is getting long, we can switch to private mail...

On Mon, Apr 28, 2025 at 2:45 AM Marcus D. Leech <patchvonbr...@gmail.com>
wrote:

> On 27/04/2025 19:34, Nikos Balkanas wrote:
>
> For that i will need the sources.
> Do you know where can I download the UHD 4.6.0 sources?
>
> TIA
> Nikos
>
> If you have an installed version of UHD on your system, then the examples
> should also have been installed.  How did you install
>   UHD?
>
> You might need to install "uhd-host" if you installed from packaged
> binaries, but all the examples and utilities should be
>   there along with the libraries.
>
> But the GIT repo for the UHD source is here:
>
> https://github.com/EttusResearch/uhd
>
> These days, most distros package UHD, so in many cases you don't need to
> build from source.
>
>
>
>
> On Mon, Apr 28, 2025 at 12:39 AM Marcus D. Leech <patchvonbr...@gmail.com>
> wrote:
>
>> On 27/04/2025 17:37, Nikos Balkanas wrote:
>>
>> Hi Marcus,
>>
>> You were right. No need to change NIC:)
>> This is not a software issue. uhd_rx_streamer_max_num_samps runs right
>> after uhd initialization before
>> any other code had the chance to run.
>> Link capacity doesn't seem to be the issue either...
>> Running pchar on the link, descendant of pathchar, reports a throughput
>> of 5.619 Kb/s requesting ICMP replies,
>> to varying packet sizes (32->9000 (MTU), incr by 32).
>> sudo pchar -m 9000 -p ipv4icmp usrp
>> https://www.kitchenlab.org/www/bmah/Software/pchar/
>>
>> It corresponds to 351.218.019 16-bit samples or 175,609.044 32-bit
>> samples, if each sample is 32-bit(real + imag)
>> Seems that uhd is not running at link capacity but is doing smt else.
>> I will have  to download and check with the sources...
>> The package version for Ubuntu 24.04 is uhd 4.6.0.
>> Where can I download the sources for uhd 4.6.0?
>>
>> BR
>> Nikos
>>
>> YOu CANNOT use ICMP tests to determine link capacity with a USRP -- ICMP
>> is processed via  completely different
>>   "stack" in the radio.
>>
>> Use "benchmark_rate" instead.
>>
>>
>>
>> On Sat, Apr 26, 2025 at 7:02 AM Nikos Balkanas <nbalka...@gmail.com>
>> wrote:
>>
>>> Thanks for your time.
>>> I will check out the example.
>>> This is not a buffer problem. I just need 1024 Samples (real+imaginary)
>>> for FFT...
>>> I should be able to get them in a single pass.
>>> You saw my code, not a smoking gun there.
>>>
>>> This is probably is a physical problem.
>>> Cable is an SFP fiber dedicated line. Cannot go bad.
>>> Maybe the connections are not sitting right :(...
>>>
>>> BR
>>> Nikos
>>>
>>> On Sat, Apr 26, 2025 at 6:45 AM Marcus D. Leech <patchvonbr...@gmail.com>
>>> wrote:
>>>
>>>> On 25/04/2025 23:33, Nikos Balkanas wrote:
>>>>
>>>> Actually MTU is 9000. This is one of the recommendations...
>>>> I tried it with MTU 1500. It was worse:(
>>>> maxsamples dropped to 364...
>>>>
>>>> Right, 9000, rather than 8000.
>>>>
>>>> Upgrading to 10Gbit wont' give you larger MTU.
>>>>
>>>> What you're trying to do, I think, is to solve a buffer-management
>>>> problem in your *application* at entirely the wrong
>>>>   level in the stack.
>>>>
>>>> It is EXCEEDINGLY COMMON for hardware drivers to only be able to
>>>> deliver in chunks that may not be perfectly adapted to
>>>>   the requirements of your application.  So, a common programming
>>>> pattern is to deal with this in your application.
>>>>
>>>> You should probably look at example code like rx_samples_to_file
>>>>
>>>>
>>>>
>>>> [INFO] [UHD] linux; GNU C++ version 13.2.0; Boost_108300;
>>>> UHD_4.6.0.0+ds1-5.1ubuntu0.24.04.1
>>>> [INFO] [X300] X300 initialization sequence...
>>>> [INFO] [X300] Maximum frame size: 1472 bytes.
>>>> [WARNING] [X300] For the 192.168.40.2 connection, UHD recommends a send
>>>> frame size of at least 8000 for best
>>>> performance, but your configuration will only allow 1472.This may
>>>> negatively impact your maximum achievable sample rate.
>>>> Check the MTU on the interface and/or the send_frame_size argument.
>>>> [WARNING] [X300] For the 192.168.40.2 connection, UHD recommends a
>>>> receive frame size of at least 8000 for best
>>>> performance, but your configuration will only allow 1472.This may
>>>> negatively impact your maximum achievable sample rate.
>>>> Check the MTU on the interface and/or the recv_frame_size argument.
>>>> [INFO] [GPS] No GPSDO found
>>>> [INFO] [X300] Radio 1x clock: 200 MHz
>>>> [WARNING] [UDP] The send buffer could not be resized sufficiently.
>>>> Target sock buff size: 24912805 bytes.
>>>> Actual sock buff size: 1048576 bytes.
>>>> See the transport application notes on buffer resizing.
>>>> Please run: sudo sysctl -w net.core.wmem_max=24912805
>>>> Sat Apr 26 06:30:34 2025 [00] [+] Created USRP with args
>>>> Sat Apr 26 06:30:34 2025 [00] [+] Master clock is at 200 Mhz
>>>> Sat Apr 26 06:30:34 2025 [00] [+] Tuner[0] gain set to 30 (30) dB
>>>> [WARNING] [UDP] The send buffer could not be resized sufficiently.
>>>> Target sock buff size: 24912805 bytes.
>>>> Actual sock buff size: 1048576 bytes.
>>>> See the transport application notes on buffer resizing.
>>>> Please run: sudo sysctl -w net.core.wmem_max=24912805
>>>> Sat Apr 26 06:30:34 2025 [00] [*] scanner.l:1446:main Incorrect
>>>> maxsamples (364). Expected 19960.
>>>> Sat Apr 26 06:30:34 2025 [00] [+] Max samples/buffer[0]: 364
>>>> [WARNING] [0/Radio#0] Ignoring stream command for finite acquisition of
>>>> zero sam
>>>>
>>>> Nikos
>>>>
>>>> On Sat, Apr 26, 2025 at 5:46 AM Marcus D. Leech <
>>>> patchvonbr...@gmail.com> wrote:
>>>>
>>>>> On 25/04/2025 22:26, Nikos Balkanas wrote:
>>>>>
>>>>> Thanks Marcus,
>>>>>
>>>>> for your fast reply.
>>>>>
>>>>> On Sat, Apr 26, 2025 at 4:08 AM Marcus D. Leech <
>>>>> patchvonbr...@gmail.com> wrote:
>>>>>
>>>>>> On 25/04/2025 20:50, Nikos Balkanas wrote:
>>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I need to buy a new NIC. What would you suggest?
>>>>>> The one I use is an old Mellanox 10 Gbs, before the Connect-4 series.
>>>>>> It can only do 1996 S/s, need 19960 (10x more) to work with latest
>>>>>> uhd.
>>>>>> Using Ubuntu 24.04 and uhd 4.6.0
>>>>>>
>>>>>> So, 1.996ksps vs 19.960ksps?   You hardly need a 10Gbit link to
>>>>>> support that.  So, perhaps something
>>>>>>   is being lost here in your requirements?
>>>>>>
>>>>>
>>>>> True. Can't explain it in terms of bandwidth. 16 * 1996 = 31.936 Kbps,
>>>>> 16 * 19960 = 319.360 Kbps well short of a 10 Gbps line:(
>>>>> Does a complex pair count as 1 sample, or 2?
>>>>> I have followed all the instructions in
>>>>> https://kb.ettus.com/USRP_Host_Performance_Tuning_Tips_and_Tricks,
>>>>> Even installed the DPDK drivers. My Mellanox is too old to use their
>>>>> OFED drivers:(
>>>>>
>>>>>>
>>>>>> On a related question. it seems that the streamer doesn't crash
>>>>>> anymore
>>>>>> when receiving less than MAXSPS samples, instead it reads 0:(
>>>>>> This was due to the sse2 code not aligned in convert.
>>>>>> I change my stream args to cpu_format=sc16, otw=sc16, so no
>>>>>> conversion required.
>>>>>> Streamer still doesn't read anything. Is there a reason for it?
>>>>>>
>>>>>> You'd need to share more of your code.  This should just work as far
>>>>>> as I can tell.
>>>>>>
>>>>>> Thanks. these are just the usrp code:
>>>>>
>>>>> int main()
>>>>> {
>>>>>       uhd_stream_args_t stream_args =
>>>>>                                                            {
>>>>>
>>>>> .cpu_format = "sc16",
>>>>>
>>>>> .otw_format = "sc16",
>>>>>                                                               .args =
>>>>> "",
>>>>>
>>>>> .n_channels = 1,
>>>>>
>>>>>  .channel_list = &channel
>>>>>                                                              };
>>>>> ..uhd_stream_cmd_t stream_cmd =
>>>>>                                                              {
>>>>>
>>>>>  .stream_mode = UHD_STREAM_MODE_NUM_SAMPS_AND_DONE,
>>>>>
>>>>> .stream_now = true
>>>>>                                                               };
>>>>>
>>>>>     if (uhd_init(0, 0, gain)) do_exit(20);
>>>>>>     if ((err = uhd_usrp_get_rx_stream(dev[0], &stream_args,
>>>>>> rx_streamer[0])))
>>>>>>     {
>>>>>>          uhd_get_last_error(errmsg, 127);
>>>>>>          error(log, "Failed to get streamer[0] (%d). %s.\n", 0, FL,
>>>>>> LN, FN, err, errmsg);
>>>>>>         uhd_rx_streamer_free(&rx_streamer[0]);
>>>>>>          rx_streamer[0] = NULL;
>>>>>>          uhd_rx_metadata_free(&md[0]);
>>>>>>         md[0] = NULL;
>>>>>>         do_exit(30);
>>>>>>     }
>>>>>>      if ((err = uhd_rx_streamer_max_num_samps(rx_streamer[0],
>>>>>> &maxsamps)))
>>>>>>
>>>>>      {
>>>>>>          uhd_get_last_error(errmsg, 127);
>>>>>>          error(log, "Failed to get max samples/buffer[0] (%d).
>>>>>> %s.\n", 0, FL, LN, FN, err,
>>>>>>            ..errmsg);
>>>>>>         do_exit(35);
>>>>>>     }
>>>>>>     if (maxsamps != MAXSMPS)
>>>>>>         warn(log, "Incorrect maxsamples (%ld). Expected %d.\n", 0,
>>>>>> FL, LN, FN, maxsamps,
>>>>>>               MAXSMPS);
>>>>>>      info(log, "Max samples/buffer[0]: %ld\n", 0, maxsamps);
>>>>>>
>>>>>>     if ((err = uhd_rx_streamer_issue_stream_cmd(rx_streamer[0],
>>>>>> &stream_cmd)))
>>>>>>
>>>>>     {
>>>>>>         uhd_get_last_error(errmsg, 127);
>>>>>>         error(log, "Failed to start streamer[0] (%d). %s.\n", 0, FL,
>>>>>> LN, FN, err, errmsg);
>>>>>>        do_exit(40);
>>>>>>      }
>>>>>>
>>>>>          [...]
>>>>>          do_exit(0)
>>>>>      }
>>>>>
>>>>>
>>>>>> bool uhd_init(size_t channel, double srate, double gain)
>>>>>> {
>>>>>>     double tmp;
>>>>>>     uhd_rx_metadata_error_code_t err;
>>>>>>
>>>>>>      if ((err = uhd_set_thread_priority(uhd_default_thread_priority,
>>>>>> true)))
>>>>>>             warn(log, "Unable to set  main thread priority (%d).
>>>>>> %s.\n", 0, FL, LN, FN,
>>>>>>                   err, uhdError(err));
>>>>>>       /* Create USRP */
>>>>>>       f ((err = uhd_usrp_make(&dev[channel], "type=x300")))
>>>>>>       {
>>>>>>           error(log, "Failed to create USRP (%d). %s.\n", 0, FL, LN,
>>>>>> FN, err,
>>>>>>                uhdError(err));
>>>>>>            dev[channel] = NULL;
>>>>>>             return(FAIL);
>>>>>>
>>>>>          }
>>>>>>          info(stderr, "Created USRP with args\n", 0);
>>>>>>
>>>>>>     /* Create RX streamer */
>>>>>>     if ((err = uhd_rx_streamer_make(&rx_streamer[channel])))
>>>>>>     {
>>>>>>         error(log, "Failed to create rx_streamer[%d] (%d). %s.\n",
>>>>>> 0, FL, LN, FN,
>>>>>>             channel, err, uhdError(err));
>>>>>>          return(FAIL);
>>>>>>     }
>>>>>>     /* Create RX metadata */
>>>>>>     if ((err = uhd_rx_metadata_make(&md[channel])))
>>>>>>    {
>>>>>>        error(log, "Failed to create md[%d] (%d). %s.\n", 0, FL, LN,
>>>>>> FN, channel,
>>>>>>            err, uhdError(err));
>>>>>>         return(FAIL);
>>>>>>      }
>>>>>>
>>>>>>     /* Get master clock rate */
>>>>>>      if ((err = uhd_usrp_get_master_clock_rate(dev[channel], 0,
>>>>>> &tmp)))
>>>>>>
>>>>>       {
>>>>>>            error(log, "Failed to set master clock to %.0lf Mhz (%d).
>>>>>> %s.\n", 0, FL,
>>>>>>                LN, FN, tmp/1000000, err, uhdError(err));
>>>>>>             return(FAIL);
>>>>>>       }
>>>>>>       info(stderr, "Master clock is at %.0lf Mhz\n", 0, tmp/1000000);
>>>>>>       /* Set the sample rate */
>>>>>>      if (srate && !uhd_set_rx_rate_check(channel, srate))
>>>>>> return(FAIL);
>>>>>>      /* Set the tuner gain SBX-120 is 0-31.5 in .5 db steps */
>>>>>>
>>>>>        if ((err = uhd_usrp_set_rx_gain(dev[channel], gain, channel,
>>>>>> "")))
>>>>>>        {
>>>>>>             error(log, "Failed to set tuner[%d] gain to %.0lf db
>>>>>> (%d). %s.\n", 0, FL,
>>>>>>                  LN, FN, channel, gain, err, uhdError(err));
>>>>>>             return(FAIL);
>>>>>>          }
>>>>>>          if (!(err = uhd_usrp_get_rx_gain(dev[channel], channel, "",
>>>>>> &tmp)))
>>>>>>               info(log, "Tuner[%d] gain set to %.0lf (%.0lf) dB\n",
>>>>>> 0, channel, tmp, gain);
>>>>>>
>>>>>         ./* Set channel bw to conserve tuner resources. Not needed,
>>>>> set by srate */
>>>>>              uhd_usrp_set_rx_bandwidth(dev[channel], srate, channel);
>>>>>          ./* Disable subtracting constant averaged background. Signal
>>>>> looks cleaner */
>>>>>             if ((err =
>>>>> uhd_usrp_set_rx_dc_offset_enabled(dev[channel], false, channel)))
>>>>>              {
>>>>>                  warn(log, "Failed to disable FPGA DC offset on
>>>>> channel %d(%d). %s.\n", 0,
>>>>>                      FL, LN, FN, channel, err, uhdError(err));
>>>>>                }
>>>>>                info(stderr, "Disabled FPGA DC offset on channel
>>>>> %d\n", 0, channel);
>>>>>                return(SUCCESS);
>>>>>          }
>>>>>
>>>>> This is the generated output:
>>>>>
>>>>> [INFO] [UHD] linux; GNU C++ version 13.2.0; Boost_108300;
>>>>> UHD_4.6.0.0+ds1-5.1ubuntu0.24.04.1
>>>>> [INFO] [X300] X300 initialization sequence...
>>>>> [INFO] [X300] Maximum frame size: 8000 bytes.
>>>>> [INFO] [X300] Radio 1x clock: 200 MHz
>>>>> Sat Apr 26 03:33:48 2025 [00] [+] Created USRP with args
>>>>> Sat Apr 26 03:33:48 2025 [00] [+] Master clock is at 200 Mhz
>>>>> Sat Apr 26 03:33:48 2025 [00] [+] Tuner[0] gain set to 30 (30) dB
>>>>> Sat Apr 26 03:33:48 2025 [00] [*] scanner.l:1446:main Incorrect
>>>>> maxsamples (1996). Expected 19960.
>>>>> Sat Apr 26 03:33:48 2025 [00] [+] Max samples/buffer[0]: 1996
>>>>> [WARNING] [0/Radio#0] Ignoring stream command for finite acquisition
>>>>> of zero samples
>>>>> I hope this reads OK. Maybe next time I should attach the code:)
>>>>>
>>>>>> TIA
>>>>>> Nikos
>>>>>>
>>>>>> _______________________________________________
>>>>>> USRP-users mailing list -- usrp-users@lists.ettus.com
>>>>>> To unsubscribe send an email to usrp-users-le...@lists.ettus.com
>>>>>>
>>>>>>
>>>>>> I believe that max number of samples-per-buffer is limited by MTU
>>>>> size.   Which is typically around 8000 or so for "jumbo frames".
>>>>>
>>>>>
>>>>>
>>>>
>>
>
_______________________________________________
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