The LimeSDR application ecosystem

When the new Lime SDR arrives at your doorstep, you will find that its immediately usable within a variety of existing SDR applications and software stacks. We also provide packages and installers for commonly used software packages and operating systems.

In my previous blog post on the Lime Suite driver architecture, I covered how Lime Suite supports the LimeSDR and how it fits into the ecosystem of SDR applications. Now let’s cover in more detail the available software platforms and demonstrate using LimeSDR in some of these environments.

The SoapySDR glue layer

SoapySDR is the glue layer that sits between the LimeSDR’s driver and SDR applications. With one simple wrapper (SoapyLMS7), LimeSDR can be used in any application supported by SoapySDR or GrOsmoSDR. This includes programming environments like the Pothos framework and GNU Radio; as well as graphical applications like GQRX and CubicSDR.

The following diagram, though not by any means complete, should give an idea of how these various software packages fit together with LimeSuite and SoapySDR:limesdr_soapy_graph

Installing Lime Suite

Lime Suite is an open source package that supports the LimeSDR via the SoapyLMS7 module. The suite can be built with CMake and standard compilers on a number of operating systems. Software dependencies and build instructions are documented on the Lime Suite wiki. For those not interested in source builds — I would like to mention some of the major packaging efforts that now include support for the LimeSDR.

Drivers and GNU Radio PPA

and I started a Ubuntu packaging effort for SDR drivers and GNURadio/GrOsmoSDR. The goal is to streamline installing common SDR dependencies, as well as to provide up-to-date packages across several recent releases of Ubuntu. The Lime Suite packages are available on the MyriadRF PPA, and simple apt-get instructions can be found on the Packaging wiki.

PothosSDR Windows installerpothos_sdr_start_menu

Lime Suite is now bundled with the PothosSDR Windows installer. The installer is a simple one-click solution to using a myriad of SDR device drivers, development toolkits, and graphical applications. Notable applications bundled with the installer include:

  • Device drivers including Lime Suite
  • SoapySDR + HW support modules
  • GNU Radio and Pothos framework
  • PothosGUI, GRC, GQRX, CubicSDR
  • Checkout the full bundled software list

Developing IP: Development headers and libraries are included for most of the software mentioned. Users will be able to develop custom hardware modules and processing blocks. And with a few additional dependencies that were too large to include in the installer, users can develop custom GNU Radio blocks as well.

Using the LimeSDR

Lets demonstrate using LimeSDR in some basic receive only applications. We are going to use the available binary packages and document the exact setup procedure. Ideally, new LimeSDR users will be able to try these exact steps and to replicate the example.

Building a simple FM receiver

In this example, we will listen to live FM audio from LimeSDR using the Windows installer and Pothos GUI. Follow the instructions for LimeSDR and the CyUSB driver and the instructions for the Pothos SDR installer. The LimeSDR should now be properly configured in the device manager and enumerable by the LimeSuite and SoapySDR tools. Now we can open up Pothos GUI from the start menu and run the FM demodulation demo.

Note: The device argument {“driver” : “lime”} is passed to the SDR source block. This pair tells SoapySDR to use the lime support module (SoapyLMS7). Its important to narrow down the device when multiple are present.

Decoding RDS with LimeSDR

For a more complicated example, we will decode RDS from a live source using the same Windows installation and GNU Radio Companion. Follow the additional notes about GNU Radio to use GNU Radio Companion (you will need Python 2.7). Now open up GNURadio Companion from the start menu and run the rds_rx example.

Note: the device arguments “soapy=0,driver=lime” is passed to the Osmo source block. The pair “soapy=0” tells GrOsmoSDR to use the first such device supported by its SoapySDR support blocks. And the pair “driver=lime” tells SoapySDR to use the lime support module (SoapyLMS7).

Experimenting in Python

SoapySDR comes with Python bindings which can be used to test and develop with the LimeSDR. But don’t underestimate Python just yet. It may not be the language of choice for performance, but we can do many things that don’t involve sustained high rate streaming, such as:

  • Basic signal generator with constant test level and CORDIC
  • Experimenting with device settings such as filters and gains
  • Receive periodic high-rate bursts for plotting purposes
  • Timed transmit bursts for scheduled communications

Wrapping up…

Hopefully, new LimeSDR owners will have a running-start with familiar applications and APIs to choose from. I know that ultimately, not every application is going to be ready for LimeSDR, and it may take some time to close the gap. In the meantime, I will continue to improve the driver and application software. My next post will demonstrate bidirectional communication with the LoRa protocol through the LimeSDR. Stay tuned!

Leave a Reply