LimeSDR Mini V2 reading samples from RX FIFO

Hello everyone,

I am running into an interesting quirk with the LimeSDR Mini V2.0: LMS_RecvStream() times out and returns nothing until either of the following is done:

  • The LMS_SetLPFBW() is called after the LMS_StartStream(), or
  • The transmit channel is enabled LMS_EnableChannel(device, LMS_CH_TX, 0, true)

Initially I’ve run into this issue when attempting to use SDR++, but seems the same behavior is easy to reproduce with the singleRX example from the LimeSuite.

Using the LimeSuit from the current latest Git (hash 38efe960). Building it and running the singleRX ends up in RX data rate: 0 MB/s and RX fifo: 0% printed every second. If the transmit channel is enabled right after the receive channel, then the data is properly received and logs are then state RX data rate: 32.1454 MB/s.

It is a bit hard for me to tell for sure, but it seems that the LimeSuiteGUI experiences similar problem of not receiving data. At least I’ve run several times into situation when the configuration looks fine, but the fftViewer does not show anything until something is re-configured in the interface. That was with 22.09 version, did not have chance to dig into the GUI from the latest Git yet.

The LimeQuickTest succeeds, and the basicRX is working as well (the latter one has an explicit code which enables TX channel for the v2).

For the details of the software/hardware:

->LimeSuite version: 22.09.1-g38efe960
->Device: LimeSDR Mini, media=USB 3.0, module=FT601, addr=24607:1027, serial=1D90EBBA46D10C, HW=5, GW=2.1

What is the correct/expected behavior and the usage of API?
Is it something that could/will be fixed with the next version of the gateway? Or, shall the software to enable both RX and TX channels even for the RX-only usage?

Yes, you have to enable both RX and TX channels even only RX is used. This is because of gateware implementation.

Thanks for the information!

There is one thing which got me confused a bit. Does enabling TX channel (without creation of the TX stream) affect on the amount data transferred via USB?

As in, does the LMS_EnableChannel(device, LMS_CH_TX, 0, true) lead to transfer of data from the host computer to the LimeSDR radio? Or is the transfer to the radio is only actually happening when LMS_SendStream is used?

It doesn’t affect amount of data transferred via USB. It just enables required clock.

Thanks for the clarification! :slight_smile: