Gr-limesuiteng TX error with XTRX

My XTRX accepts a stream from a file with limeTRX without an error and LimeSuiteNG sink will transmit data from the same file with radio limeSDR-USB. However, LimeSuiteNG sink does not work (same file again) using radio limeSDR XTRX and produces the following error:
“LimeSuiteNG :info: Sampling rate set(50.000 MHz): CGEN:400.000 MHz, Decim: 2^1, Interp: 2^1
thread_body_wrapper :error: ERROR thread[thread-per-block[2]: <block sdrdevice_sinkLimeSDR XTRX>]: argument not found”

limeSuiteNG (commit cc7bc6fed420361fe7307b9e1299c4f2df398ce2), gnuradio gnuradio v3.10.12.0-rc1 (35b0664) .

The flow graph below tested combinations of LimeSDR-USB and LimeSDR XTRX as sink or source. The results are:
(1) USB source and sink works as expect.
(2) XTRX source with USB sink produces a highly distorted spectrum and logs repeated warnings that I don’t understand at this time:
swFIFO:512
LimeSuiteNG :warning: USB ep:81 Rx0: 20.079 MB/s | TS:9999060 pkt:9803 o:9291(+4902) l:0(+0) dma:9803/9804(+1) swFIFO:512
LimeSuiteNG :warning: USB ep:81 Rx0: 20.079 MB/s | TS:15000120 pkt:14706 o:14194(+4903) l:0(+0) dma:14706/14706(+0) swFIFO:512

(3) Both XTRX and USB sources with USB sink works as expected with the warning only sent once:
LimeSuiteNG :warning: USB ep:81 Rx0: 20.079 MB/s | TS:5000040 pkt:4902 o:2091(+2091) l:0(+0) dma:4902/4902(+0) swFIFO:0

This comes from GNURadio, not sure what could cause that, did you compile GNURadio from source? There can be GNURadio companion python bindings issues if GNURadio and LimeSuiteNG is compiled with different C++ compiler versions.

This indicates Rx data overrun, meaning, the data is received, but is not consumed for processing fast enough.
TS: last packet timestamp
pkt: total received packets count
o: overrruns, data had been received but there is no more room in the FIFO, so data is dropped
l: loss, there has been a discontinuity in the received data.
dma: buffer reading/writing indexes
swFIFO: data chunks count in software FIFO

I’ll have to check the order of operations of GNURadio using multiple devices, it could be that one device gets data streaming started, while the other is still being configured.

Hello!
Any update ?
I’m facing exactly the same issue :confused:

If you are referring to the XTRX sink error: thread_body_wrapper :error: ERROR thread[thread-per-block[2]: ]: argument not found , no, I haven’t seen or made progress on this. Running the LimeSDR-USB and LimeSDR XTRX source blocks together (in parallel), I am discovering differences between the two which I am trying to understand. I have placed priority on getting the LimeSDR sink and source blocks working and will be doing what I can to facilitate progress. I expect to be spending significant time testing them.

Usage of multiple devices issue has been fixed. Data streaming of all devices will now start as close as possible in time to each other.

I cannot reproduce this error, please send me your .grc file

The two flow graph images attached are essentially identical except for the device handle in the sink; one is the USB device, the other is XTRX. I require another communication channel (like email) to send you the *.grc files.


Excerpts from the console log for the USB device:
sdrdevice_sink[LimeSDR-USB] :info: set_lo_frequency 800000000.000000
sdrdevice_sink[LimeSDR-USB] :info: set_antenna auto
sdrdevice_sink[LimeSDR-USB] :info: auto selected antenna: Band1
sdrdevice_sink[LimeSDR-USB] :info: set_lpf_bandwidth 5000000.000000
sdrdevice_sink[LimeSDR-USB] :info: set_antenna auto
sdrdevice_sink[LimeSDR-USB] :info: auto selected antenna: Band1
sdrdevice_sink[LimeSDR-USB] :info: set_gain_generic 10.000000
sdrdevice_sink[LimeSDR-USB] :info: set_gain_generic gain range: 0.000000:52.000000
sdrdevice_sink[LimeSDR-USB] :info: set_nco_frequency 0.000000
LimeSuiteNG :warning: lms7002m_set_rx_lpf: modifying G_PGA_RBB 0 → 12
LimeSuiteNG :warning: lms7002m_set_tx_lpf: requested bandwidth(5000000), set to 5000000.
LimeSuiteNG :info: Sampling rate set(5.000 MHz): CGEN:640.000 MHz, Decim: 2^5, Interp: 2^5
LimeSuiteNG :info: Sampling rate set(5.000 MHz): CGEN:640.000 MHz, Decim: 2^5, Interp: 2^5
sdrdevice_sink[LimeSDR-USB] :info: Device configured and ready.
sdrdevice_source[LimeSDR XTRX] :info: Device configured and ready.
sdrdevice_source[LimeSDR XTRX] :info: RFStream Start()
sdrdevice_sink[LimeSDR-USB] :info: RFStream Start()

Excerpts from the console log for the XTRX device:
sdrdevice_sink[LimeSDR XTRX] :info: set_lo_frequency 800000000.000000
sdrdevice_sink[LimeSDR XTRX] :info: set_antenna auto
sdrdevice_sink[LimeSDR XTRX] :info: auto selected antenna: Band2
sdrdevice_sink[LimeSDR XTRX] :info: set_lpf_bandwidth 5000000.000000
sdrdevice_sink[LimeSDR XTRX] :info: set_antenna auto
sdrdevice_sink[LimeSDR XTRX] :info: auto selected antenna: Band2
sdrdevice_sink[LimeSDR XTRX] :info: set_gain_generic 10.000000
sdrdevice_sink[LimeSDR XTRX] :info: set_gain_generic gain range: 0.000000:52.000000
sdrdevice_sink[LimeSDR XTRX] :info: set_nco_frequency 0.000000
LimeSuiteNG :warning: lms7002m_set_rx_lpf: modifying G_PGA_RBB 0 → 12
LimeSuiteNG :warning: lms7002m_set_tx_lpf: requested bandwidth(5000000), set to 5000000.
LimeSuiteNG :info: Sampling rate set(5.000 MHz): CGEN:640.000 MHz, Decim: 2^5, Interp: 2^5
sdrdevice_source[LimeSDR XTRX] :info: Device configured and ready.
sdrdevice_source[LimeSDR XTRX] :info: RFStream Start()
thread_body_wrapper :error: ERROR thread[thread-per-block[1]: <block sdrdevice_sinkLimeSDR XTRX>]: argument not found

The *.grc files for the above flow graphs may be found in:

Hi aardric,
I am also experiencing the same error:
thread_body_wrapper :error: ERROR thread[thread-per-block[2]: <block sdrdevice_sinkLimeSDR XTRX>]: argument not found

It happens specifically when I try to transmit using 2 channels with the LimeXTRX using the LimeSuiteNG Sink block by specifying the Data Channel Indexes to [0, 1].

Do you have any updates on this since you posted? Could you find a solution?
Thank you,
Timothee Mac Garry

Timothee
Thank you for this information. I still receive this error but I can’t say whether it’s consistent. I have assembled a very simple flow graph to investigate this particular issue further by identifying conditions and sink block settings under which the error in question consistently occurs. I am using an older build (6f4c28d3) of LimeSuiteNG but will now rebuild before continuing. I’ll provide more detail and progress update later today or tomorrow. Please keep me posted with whatever you discover about the XTRX operation with gr-limesdrng. I am very interested in having this device working properly within gnuradio.

Rick

Timothee
Thank you for this information. The only flow graph (of many attempts) for which I have had success with the sink block using the XTRX is a very simple flow graph created specifically to investigate this particular issue by identifying conditions and sink block settings under which the error in question consistently occurs. I don’t understand why this works but the input selector block is necessary; feeding the signal source directly into the XTRX only or both the USB device and XTRX in parallel consistently results in the XTRX thread_body_wrapper error. I have just started experimenting but switching between the null sink and XTRX repeatedly will work anywhere from 1 to a half dozen times before the error occurs. Switching from the XTRX to the USB device will work only once; switching back from USB to XTRX fails. The latest build of LimeSuiteNG was used and the XTRX TX is connected to the USB RX. Perhaps I have created an invalid flow graph so please inspect and comment while I continue exploring this. I have place a copy of TxRx_loop.grc on github link sent on the April 16 post.

Rick

This error comes from GNURadio, depending on system load and channels count, the graph starts feeding Sink 1 sample at a time, and that for some reason makes the GNU radio work thread to die. I’ve updated the Sink to work in 256 sample chunks gr-limesuiteng: Set Sink to work with 256 sample chunks. · myriadrf/LimeSuiteNG@ef75a77 · GitHub, that seems to fix this issue. But further investigation is needed to figure out what’s going on with GNU Radio’s thread scheduling.

Hi Ricardas,

Thank you so much for your help, that did the trick for me!

Have a good weekend,
Timothee Mac Garry

Hi Rick,

Thank you for your reply and your time. I installed the latest LimeSuiteNG repo from source, and I do not get the thread_body_wrapper error anymore when the sink transmits in 256 sample chunks, I hope this fixes it for you too.

Have a good day,
Timothee Mac Garry

This fix worked for me and I’m relived that the problem was not due to some peculiarity in my build environment. Thank you Ricardas. I’ll continue to validate gr-limesdrng in particular with the XTRX from basic operation to eventually more subtle features on the basis of my expectations of how it should work and either report differences or review my expectations.

The fix worked for me also. I welcome your gesture of appreciation but to be honest it was not an unselfish act as I had hoped to benefit (and I did) from the result. I thank you for reaching out and encouraging me to move ahead.

1 Like