Two RX channels in GNU Radio


I am trying very unsuccessfully to use both receivers at the same time on my LimeSDR board using gr-osmosdr. I can receive fine off of any of the RX1 ports. I haven’t been able to activate any of the RX2 ports.
When I choose two channels in the gr-osmosdr block, and set the parameters for the second channel, the flow graph fails to start. If I use two gr-osmosdr blocks and set the device args in one to something like “soapy=0,driver=lime” and the other to “soapy=1,driver=lime” I just get the same signal from both blocks.
I can’t find any documentation on the subject, so any guidance would be appreciated.


This says that two channels on the one block should work.

What are the parameters that you are setting on the second channel. The two channels are linked and have restrictions, so there are probably very few parameters that can be changed.

Reading through the source code for gr-osmosdr (gr-osmosdr/lib/soapy) it just hands everything back to Soapy, so it would be whatever the SoapySDR bindings for LimeSuite devices using the LMS7 API says that the device can handle (LimeSuite/SoapyLMS7), And speed-reading through Settings.cpp, SoapyLMS7.h and Streaming.cpp it looks to me if you specify bad parameters you will get no feedback on the B channel (with regard to frequency anyhow).

EDIT: Sorry was speed reading a bit too fast, that is only when applying corrections. But the A and B channels are linked, you are probably going to have to dig through the datasheet, examining it in great detail and with great care, to find which parameters can be tweaked and by how much. Reading through the code everything is passed back to the LimeSDR API.

EDIT TWO: After reading through LimeSuite/SoapyLMS7/Settings.cpp and LimeSuite/src/lms7002/LMS7002M.cpp I am guessing that if you are trying to use two different frequencies then you need to set both to the exact same frequency and adjust the NCO Rx/Tx for channel A and NCO Rx/Tx for channel B to offset from that centre frequency. I would start by looking at the RXTSG_NCO/TXTSG_NCO parameter for each channel.

EDIT THREE: There does not appear to be any option in the osmocom source/sink block in gnuradio companion to pass the RXTSG_NCO/TXTSG_NCO parameters per channel. So if you want access you will need to be editing the python code by hand and ignore the gui.


@ckoval7 You’re going to need to upconvert one channel and downconvert the other channel to an IF if they are more than 60 / 120 MHz apart. This is done with NCOs and, as far as I know, only in Limesuite, unless you write your own plugin for pothos/gnu radio. I managed to Rx on two channels ok in limesuite in this way. Pothos/GNU radio were both a PITA.


I just reread your original post, maybe I misread it the first time, anyhow I started to wonder if you are using Device Arguments of ‘soapy=0,driver=lime,nchan=2’ and set the Num channels to 2 in the osmocom Source/Sink blocks. Or are you doing something else.

Multichannel (simultaneous) RX using LimeSDR