Re: USRP B210 Dual-Channel 30.72 Msps: Underflows in GRC, but benchmark_rate works fine

"Marcus D. Leech" <[email protected]> Fri, 24 Apr 2026 18:28:18 -0400
Newsgroups gmane.comp.gnu.radio.general
Message-ID <[email protected]>
On 2026-04-24 17:27, Marcus Müller wrote:
> Dear Yunxi Chen,
>
> UHD's benchmark rate doesn't try to read data from a file, copy it 
> through buffers and put it on the line; it's really a lower CPU load 
> problem than what you showed here. Still, what you want typically works.
>
> You would want to make sure you have enabled "realtime scheduling" in 
> the "Options" (pseudo-)Block in GRC.
>
> Other than that, hah! I didn't realize that /dev/shm is still a thing 
> :) nowadays, it's just a regular tmpfs mount, so make sure your two 
> files actually fit fully in your RAM, and you're not "Swapping" RAM to 
> disk. 2 files of 10 ms of 30.72 MSam/s with each sample being 8 B, 
> that's 2 · 10·10⁻³ s · 30.72·10⁶ Sam/s · 8 B/Sam = 4915200 B = 4.7 MB, 
> so that's probably not the problem, unless you have much other things 
> in RAM. Check with `free -m` how many megabytes are currently "used" 
> in "Swap".
>
> Best regards,
> Marcus
Gah!  I should have paid more attention to the filenames.

Another parameter that can be tweaked in the device arguments, 
num_send_frames, is described here, and MIGHT help (or might not):

https://files.ettus.com/manual/page_transport.html


>
> On 2026-04-24 4:33 PM, Yunxi Chen wrote:
>> Hi,
>>
>> I am working on a 5G PRS localization project and encountering 
>> persistent Underflow issues when attempting to transmit at 30.72 Msps 
>> using both channels on a USRP B210.
>>
>> *The Setup:*
>>
>>   * *Hardware:*USRP B210 connected via USB 3.0.
>>   * *Host PC:*Dell G15 Laptop (13th Gen Intel(R) Core(TM) i7-13650HX 
>> (20 cores), 64 GB RAM).
>>   * *OS:*Ubuntu 22.04.
>>   * *Software:*GNU Radio 3.10.7.0, UHD 4.1.0.5.
>>
>> *The Experiment:*I am transmitting a 5G PRS signal (mu=1, 30kHz SCS) 
>> with a slot-level TDM pattern (alternating between Ant A and Ant B). 
>> The frames are pre-calculated and zero- padded to exactly 307,200 
>> samples (10ms @ 30.72 MHz) to ensure perfect timing alignment.
>>
>> *The Flowgraph:*
>>
>> *The Problem:*Despite these optimizations, I get immediate and 
>> constant Underflows. However, when I run the official UHD benchmark 
>> tool: |benchmark_rate --args="type=b200" -- channels="0,1" --tx_rate 
>> 30.72e6 | It completes successfully without a single dropped packet.
>>
>> *My Questions:*Since |benchmark_rate| works, it seems the 
>> hardware/USB controller is physically capable of this rate. Why does 
>> the GNU Radio flowgraph fail even with a simple File Source -> USRP 
>> Sink architecture? Are there specific buffer or scheduler tunings in 
>> GRC that I am missing to handle 2x2 MIMO at the 30.72 Msps limit?
>>
>> Any advice or insights would be greatly appreciated.
>>
>> Best regards,
>>
>> Yunxi Chen
>>
>
>