Hi everyone,
I’m using the LimeXTRX from the LimeNET Micro 2.0 DE, and more specifically, I’m using the LimeSuiteNG Sink and Source to transmit and receive on GnuRadio. However, I cannot transmit and receive with 2 different GRC programs, neither with one single program, as it gives me the errors (depending on the situation):
- threads_body_wrapper :error: ERROR thread[threads-per-block[2]: <block sdrdevice_source>]: argument not found
- LimeSuiteNG :error: Failed DMA Enable continous ioctl. errno(16) Device or resource busy.
- header_payload_demux :info: Parser returned #f
- packet_headerparser_b :info: Detected invalid packet at item 15120
Indeed, I am most probably transmitting and receiving on the same channel because I only get the error when I run both at the same time. However, I cannot find a feature to specify the channel, more specifically I would like to receive on the SMA ports RxA and transmit on TxRxB. I tried specifying different channel indexes in the parameter “Data channel indexes” such that the LimeSuiteNG Sink has a Data Channel = [1] and the Source has a Data Channel = [0], but I still get exactly the same error when I run both at the same time.
My question is: Is there a way for me to transmit on TxRxB and receive on RxA, and essentially choose on which port I want my data to flow in GnuRadio? I have tried using Soapy LimeSDR Sink and Source as well, but I get the same error:
- [ERROR] Failed DMA Enable continous ioctl. errno(16) Device or resource busy
I really hope there is a way to choose on which port you transmit and receive data on the LimeXTRX with GnuRadio, as to me this is very important.
Thank you,
Timothee Mac Garry
Two independent programs cannot be using data streaming on the same device at the same time. Technically it’s possible, but due to many possible edge cases of such setup, it would be over complicated to implement a generic solution.
For example each GRC program performs device configuration step, and after that activates streaming of data. On the hardware device, some of the Rx and Tx configuration is coupled together, so to fully configure the device all of it’s expected state has to be known upfront. Because two independent programs do not share their state, the first instance would configure only it’s own half(i.e Rx), and the second instance would configure it’s own half(Tx), but would result in disabling Rx part, in addition it would also be performing reconfiguration while the data stream is already activated by the first instance, that would result in streaming data corruption.
Yes, it’s possible, as long as the Sink and Source block are in the same GRC graph and are given the same device handle, they would be able to use different channel indexes of the same device.
It seems currently there is a bug with channel indexes shuffling, for a case like yours. I’ll fix it.
Hi Ricardas,
Thank you so much for your reply. It helps a lot. When I’m running Tx and Rx from the same program, I get the previously mentioned error:
- header_payload_demux :info: Parser returned #f
- packet_headerparser_b :info: Detected invalid packet at item 15120
When the bug is fixed, I’ll test it out!
Thank you again,
Timothee Mac Garry
Hi Ricardas,
Do you have an estimated timeline for the bug fix? I’d like to get a sense of the expected wait.
Also, a quick question: when setting Channel [0] on a LimeSuiteNG Source block, does this automatically correspond to RxA, and Channel [1] to RxB? If I want to receive via TxRxA using a Source block, how should I configure it?
Thanks, and have a great weekend.
Best,
Timothee Mac Garry
Hi, I don’t have a timeline, it’s not a straight forward fix.
For now the simplest solution for you would be to just enable MIMO, by setting the Source/Sink block’s channel indexes to [0,1], and then in the GRC graph connect the unused channels to Null Sink/Source blocks.
Hi,
Thanks for your reply. The solution you propose indeed solves the errors that I was experiencing previously, namely the following errors:
- header_payload_demux :info: Parser returned #f
- packet_headerparser_b :info: Detected invalid packet at item 15120
When receiving in MIMO, this solution works fine. However, when transmitting on one port with a Signal Source at 250kHz, a sample rate of 2 MHz, and having a Null source linked to the other, I now face the following errors shown in my terminal:
One interesting point I noticed is that it transmits for one frame (as the terminal only displays a trx0 debug message once as you can see), and I indeed receive the signal for a split second before it disappears when the following error displays:
thread_body_wrapper :error: ERROR thread[thread-per-block[2]: <block sdrdevice_sinkLimeSDR XTRX>]: argument not found
I thus only receive the DC signal that is by default and lose my transmitted signal source. Even when I put 2 signal sources on each port, the same error pops up. Do you know why this is and how to fix it this error please?
Thank you,
Timothee Mac Garry