LimeSDR Examples for Tuning and I/Q Capture/Sending

I’m in search of some information pertaining to how the LimeSDR is tuned for transmit and receive and how the I/Q is captured and sent to the LimeSDR. The documentation (as I’ve heard from many others) is pretty scattered and not all in one place to know where to begin. Also, I’m assuming that calls into SoapySDR are the means how some of this happens, as it appears to be the API or middleware to LimeSuite, but let me know if there’s merit to calling right into LimeSuite, too.

Overall, does anyone have links or examples how to perform the following on the LimeSDR?

1.) Simple control and monitoring of Frequency, Bandwidth adjustment, TIA PGA and LNA Gain settings, etc (what calls accomplish this?)
2.) How to obtain the receive I/Q stream (what call is performed to obtain the I/Q receive stream?)
3.) How to modulate the LimeSDR for transmit I/Q stream (what call sends the I/Q data for transmit?)

Anything pointing me to the above will be greatly appreciated - thanks for reviewing this request for info,

73 de Marty, KN0CK

@martywittrock my understanding is that this can all be done within the Limesuite GUI panels which are basically hundreds of buttons and sliders sending info to the LMS7002 every time they are moved or pressed. The Soapy drivers are not involved at this basic level.

Yes, there needs to be some more examples of how to set the LimeSDR up in this way - it’s basically just a .ini file but a bit of explanation would be useful.

My plan, with many thanks to @Zack, is to build a simple control system with an Arduino, which is capable of doing exactly what we do manually in the Limesuite GUI and, crucially, remembering the settings on subsequent boot ups. The Arduino works through the SPI bus and the commands / programming is all fairly simple. The hard bit is understanding the workings of the LMS7002.

1 Like

@TegwynTwmfatt,

Thanks for the information, Tegwin - While LimeSuite will help and I’ve used it to tweak the Lime while it’s running, I want more concrete programming (code) examples and any calls we make to do that. That was the intent of my post.

As you work through your Arduino example please post that such that all of us can learn from the examples, too.

Thanks for writing back - but I’m looking for code and how to call it and how it’ll affect the Lime’s operation.

73 de Marty, KN0CK

Hello @martywittrock
It’s my understanding the with LimeSuite also a set of Python APIs is installed as SoapySDR library.

Here in the forum you will find several posts by @mikos that is the author of soapy_power that allows many operations in addition to reading the IQ stream and processing that with FFTs.

If you are familiar with Python, main source for that program is here https://github.com/xmikos/soapy_power/blob/master/soapypower/power.py

You will see that it uses simplesoapy that is a wrapper for SoapySDR library. Main source here: https://github.com/xmikos/simplesoapy/blob/master/simplesoapy.py

I think you could get a very very good example of how calls are done to the board. More macro level in first source and probably with finer detail in the second one.

It’s a wonderful piece of work also used by QSpectrumAnalyzer by the same author.

This should answer your questions 1 and 2. About number 3… probably you will find the needed functions in the second source. But for a usage example I guess you will have to search in PhotosSDR by @joshblum I think … not sure, have a look here: https://github.com/pothosware/PothosSDR or here: https://github.com/pothosware/pothos-sdr/wiki

mario

1 Like

I’m an old school C person, so this would be where I would start looking:
It is not for the LimeSDR explicitly, but at least 99% of the code would be exactly the same for most SDR devices.

Once you have access to an IQ stream, that is the battle almost won.

And there are lots of useful wrapper functions like get a list of available antenna ports:


Set the active antenna port:

1 Like

@mariocannistra,

Thanks VERY MUCH for the links and info - - I’ll look it over this evening and will check back if I have any further questions - thanks again…!

73 de Marty, KN0CK

@mzs,

Many thanks for the links and actual snippets - there’s a few of us here in Cedar Rapids, Iowa that want to get a simplified - and real, meaning shaft encoded knobs - user interface put together along with a simple display to show the spectra of the LimeSDR such that the LimeSDR doesn’t have to be tethered to a PC or screen. So we’re trying to gather information from known examples and will share that info once we have something a little more ‘put together’ here. But I greatly appreciate the info and the known examples from Pothos - that’ll help.

73 de Marty, KN0CK

Hello @martywittrock,

I would suggest to check this document. It explains on how to use LimeSuite API. You will find the references to example source files in the document as well. i think this should be useful for your application.

1 Like

Zack,

Thanks very much for the info - Now that I look at it, I think that was on the jump drive that was with my first LimeSDR (then SoDeRa) and I didn’t realize what I had (then). I will DEFINITELY look this over tonight - thanks again for the API doc and examples…!

73 de Marty, KN0CK