NOOB Question: Getting started with Lime APi and pyPLS7002M library

Can anybody please explain to me how to get started with the Lime APi and pyPLS7002M library? I’m thinking that it’s more flexible than Pothos/GNU radio?


USB communications

USB communication can be established in two ways.


Python communicates directly to the USB driver. This is the simplest and recommended option.
•Pros: Lightweight solution, simple installation
•Cons: Windows users - other applications that are communicating with LimeSDR (such as LimeSuiteGUI and PothosSDR) use LimeSDR-USB Windows driver. The pyLMS7002M cannot use this driver. This means that the user has to change the driver each time he/she switches from using pyLMS7002M library to using e.g. LimeSuiteGUI, and vice versa.

With Linux use there are no problems, since all applications use the same driver.-

Via LimeAPI

Python communicates to the LimeAPI library, which communicates to the USB driver.
•Pros: Windows users: No need to change the drivers. LimeSDR-USB Windows drivers can be used both for pyPLS7002M library, and other applications such as LimeSuiteGUI and PothosSDR.
•Cons: More complicated installation and setup.

With Linux use there is no advantage, since all applications use the same driver.

Hello @TegwynTwmfatt,

Maybe this will be useful for you. Check lms7_api_quick_start_guide.pdf for more information, please.

Perfect … Thanks!


When I set this up in my Visual Studio 2013 environment using the CMake app, I get an error about CyAPI…

…and about 772 warnings, too…

…I know that I’ll have to add the Cypress USB drivers to this somehow (if you can tell where to put those where the compiler won’t whine at me that would be great), but does this happen on a fresh install based on the instructions in the compiling guide?

Please let me know - I’d really like to get this going to play with this at the source level - thanks,

73 de Marty, KN0CK

if you followed compilation instructions, I assume you have Cypress SDK installed somewhere.
So lets check if the CMake is able to find Cypress include paths. They should be displayed in CMake GUI like this:

If those entries are not filled/incorrect, fill in the correct paths of files and click ‘configure’ and ‘generate’.

1 Like


I redirected the CyAPI.h and .lib file to the appropriate spot where the SDK is installed (same location as you have) and it compiles fine now albeit with some warnings. I see the console apps in the build subdirectory and will check those out later this evening.

What MSVC compiler is considered to be the cutoff for working with LimeSuite and other side apps? 2013? 2012? 2010? Earlier? Please let me know that, too - I’m doing this initial compile at work and have earlier versions of MSVC at the house - just wondering what I can and cannot use.

Please advise at your soonest - thanks,

73 de Marty, KN0CK

I haven’t tested earlier versions, so I would recommend to use Visual Studio 2013. LimeSuite code uses features from C++11 that may be missing in 2010 and earlier versions. I think 2012 version should work but I haven’t tested it so I cant say for sure.

1 Like


All good - I’m actually on the hunt now for a full-up version of MSVC 2013 for the house, but also going to try the 2015 Express version (for now) to see what the results are for console apps…Stay tuned and thanks for checking back.

73 de Marty, KN0CK


Just one ‘programming note’ (no pun intended)…I found that the Visual Studio Express 2013 version that Microsoft provides at no cost works perfect for building the source after it’s been processed by CMake to create the build environment. I had no trouble building all the examples and running them on my Lime with the exception of the dualRXTX…that one, when it runs, throws an exception that causes it to quit JUST when it gets into transmit. The basicRX and singleRX apps work fine - but GEEZ do they zip along FAST in the console window. You can see things happening, but within 5 seconds the window closes and all you know is that the Lime opened up right and samples were streamed. I may throw on the debugger to see the transactions manually for a few…But the good news is, it’s up and running at the house too on the FREE version of MSVC 2013 for Win64 that’s at this link:

More to follow as I dig further into this…Stay tuned…

73 de Marty, KN0CK


Thanks for your feedback. I will check dualRXTX example.
To prevent console window from closing, you can run it from console: ‘shift+right clock’ -> ‘open command window’.
But I think the best way to investigate is to look at source code comments and use debugger. Once you get a rough idea of what is going on, try changing / adding something.

1 Like


Thanks for the suggestion…The first thing I did was change the receive LO to 146.475 MHz by setting it as: 146745e3 in the frequency setting command so I could pull samples from my local Weather Radio station WXL74 (Cedar Rapids, Iowa). I may have to readjust the bandwidth, too, since it’s at 8 MHz now to something smaller, so I’ll play with that, too.

One question - - I know that the code in basicRX uses GNUPlot but I’ve also seen references to wxWidgets for plotting. For plotting support in Windows, what’s your suggestion to compile-in? wxWidgets or GNUPlot? And is that source just added to the project or are there just .lib and .exe additions in CMake? Let me know on that at your soonest, too.

73 de Marty, KN0CK

1 Like

Hi Marty,

Currently, these examples don’t have plotting support on Windows (although I don’t think it would be hard to make them work with GNUPlot on Windows). Their purpose is to show how to receive or send samples using LimeSDR keeping extra code that is not related to LimeSDR minimal. Its up to you what you do with received samples or how you generate samples to be transmitted.

LimeSuiteGUI uses wxWidgets so you can try checking its FFTviewer code but most of it is not related to using LImeSDR.

1 Like