Lime Suite
Introduction
Lime Suite is a collection of software which provides drivers and tools for the LMS7002M transceiver RFIC, along with support for LimeSDR boards which are based on this.
Installing Lime Suite enables many SDR applications to be used with supported hardware, through both the native APIs and provided plug-ins, such as for SoapySDR and GNU Radio.
Versions
There are two major development branches of Lime Suite:
- Lime Suite NG
- Classic Lime Suite
The Lime Suite codebase has grown over the years to incorporate many improvements and become the foundation for various SDR boards and modules that utilise Lime chipsets. The software collection has also grown to include numerous examples, utilities — such as for testing and programming firmware/gateware — and plug-ins for applications such as the SoapySDR framework and GNU Octave.
After many years of development it became clear that Lime Suite would benefit from certain architectural changes, such as improved support for boards with more than one transceiver. Furthermore, these improvements would result in breaking API changes, hence it was decided to implement them via a new project, Lime Suite NG (Next Generation).
The original Lime Suite project is now transitioning to maintenance mode, where it will continue to receive critical fixes, new issues and pull requests are still welcomed, and new releases will be made as and when appropriate. However, all architectural improvements, new features and support for new SDR boards will be implemented via Lime Suite NG.
Given the breaking API changes and a desire to ease transition from Lime Suite to Lime Suite NG, the latter has been developed such that it can coexist alongside the former; both Lime Suite variants may be installed at the same time and applications may make use of either one or both.
In addition, Lime Suite NG has a compatibility wrapper, which provides the legacy LMS API and allows applications to be used with the new version largely unmodified. However, it is recommended that applications eventually migrate to using the new SDRDevice API.
For further details, see the blog post Introducing Lime Suite NG.
Which version should I use?
Users with fairly recent hardware have no option but to use Lime Suite NG. This includes:
- LimeSDR XTRX
- And platforms which build on this, such as LimeNET Micro 2.0.
- LimeSDR X3
Users with the following older designs may also use Lime suite NG:
- LimeSDR Mini 2.0
- LimeSDR Mini 1.0
- LimeSDR USB
At the time of writing (6th June 2024) it is likely that support for older boards will not be as thoroughly tested as support for boards which may only be used with Lime Suite NG. However, feedback is welcomed via the forums, along with issues and PRs via the Github repo.
Note that application developers should plan to migrate to the new SDRDevice API provided by Lime Suite NG, as the compatibility wrapper will not be maintained indefinitely and Classic Lime Suite will not receive new features or be extended to provide support for new LimeSDR boards and LimeNET systems.
Lime Suite NG
Please see the dedicated Lime Suite NG documentation.
Classic Lime Suite
This wiki page will guide users through available binary packages, obtaining dependencies, compiling the suite, basic testing with hardware, and upgrading firmware.
Please note that you should either install Lime Suite via a pre-built package/installer (2) or build it from source (3) and not do both.
- Interested in software or hardware development? Learn more about the Lime Suite driver architecture.
Supported hardware
- LimeSDR-Mini
- LimeSDR-QPCIe
- LimeNET Micro
- LimeSDR-PCIe
- LimeSDR-USB
- LimeSDR GPIO Board
- STREAM with LMS7002M UNITE (EVB7)
- LMS7002M UNITE (EVB7) through COM port
- Novena Laptop with LMS7 RF board
Installers and packages
We have support for a select number of platforms and package managers. If your platform isn't supported, follow the next sections for getting the dependencies and building LimeSuite.
Note: either install Lime Suite via a package/installer or source code and do not do both!
Ubuntu PPA
The drivers PPA for Ubuntu has a recent build of LimeSuite:
sudo add-apt-repository -y ppa:myriadrf/drivers sudo apt-get update sudo apt-get install limesuite liblimesuite-dev limesuite-udev limesuite-images sudo apt-get install soapysdr-tools soapysdr-module-lms7 #soapysdr-tools use to be called just soapysdr on older packages sudo apt-get install soapysdr soapysdr-module-lms7
We currently package for Ubuntu releases:
- 22.04
Windows
LimeSuite is bundled with the PothoSDR development environment to use supported hardware in an ecosystem of SDR applications like GQRX, Pothos, CubicSDR, and GNU Radio.
OSX homebrew
The pothosware homebrew tap has a build recipe for LimeSuite. Also checkout the dholm homebrew tap for other SDR related software. To install LimeSuite:
- install the Xcode Command Line Tools,
- then install homebrew from http://brew.sh/,
- and run the following commands:
brew tap pothosware/homebrew-pothos brew update brew install limesuite
FreeBSD
FreeBSD "Port" for LimeSuite exists that automates the build, install, and packaging process. You can either build a package yourself with different options or use the default binary package. You need to be logged in as root to install packages.
To install the default system provided package:
pkg install limesuite
To build the port yourself:
cd /usr/ports/comms/limesuite make config make install make package ; pkg install work/pkg/<your_package_is_here>
Building from source
Note: either install Lime Suite via a package/installer or source code and do not do both!
Get the dependencies
Before building LimeSuite from source, several dependencies must be installed. However, the dependencies required change based on how much of the suite will be used. LimeSuite will automatically try and build all components that it can satisfy the dependencies for. The following table is a guide to the the requirements for various components.
Component | Dependencies | Notes |
---|---|---|
Build system | Git & CMake | |
Core library | sqlite3 | Has embedded copy for windows |
LMS7 GUI | wx widgets & OpenGL | Has embedded GL for windows |
LimeSDR | libusb 1.0/CyAPI | Use CyAPI for windows |
NovenaRF7 | i2c and spi dev | Linux only device |
SoapyLMS7 | SoapySDR | SDR app ecosystem support |
Ubuntu
#packages for soapysdr available at myriadrf PPA sudo add-apt-repository -y ppa:myriadrf/drivers sudo apt-get update #install core library and build dependencies sudo apt-get install git g++ cmake libsqlite3-dev #install hardware support dependencies sudo apt-get install libsoapysdr-dev libi2c-dev libusb-1.0-0-dev #install graphics dependencies sudo apt-get install libwxgtk3.0-dev freeglut3-dev
Other Linux distributions
Ubuntu derivatives should be able to use the same instructions above.
Other distributions, e.g. RPM-based, will not be able use the myriadrf/drivers PPA, and O/S packaged dependencies may be different versions and use slightly different naming. However, it should be possible to use the above as a guide and it is likely that, at the most, SoapySDR would have to be built from source.
Windows
Users building LimeSuite on windows will need a recent visual studio compiler, preferable 2015. Other dependencies can be obtained from the following download links:
- Git for windows - https://git-for-windows.github.io/
- CMake - https://cmake.org/download/
- wxWidgets - https://www.wxwidgets.org/downloads/
- CyUSB - http://www.cypress.com/documentation/software-and-drivers/ez-usb-fx3-software-development-kit
- It may be easier to download "cy_ssusbsuite_*.zip" rather than the full SDK
FreeBSD
FreeBSD "Port" for LimeSuite exists that automates the build, install, and packaging process for you.
cd /usr/ports/comms/limesuite make config make install
Building LimeSuite
Unix makefiles
The following commands will clone the LimeSuite repository, configure the project using CMake, build the project, and install it. The output of the cmake command will show enabled and disabled components. Pay careful attention to this before building with make.
git clone https://github.com/myriadrf/LimeSuite.git cd LimeSuite git checkout stable mkdir builddir && cd builddir cmake ../ make -j4 sudo make install sudo ldconfig
Linux-only post install step: Install the udev rules to enable non-root users to access usb-based devices like the LimeSDR:
cd LimeSuite/udev-rules sudo ./install.sh
Visual Studio
After installing the dependencies, open a cmd prompt and run the following command to clone the repository:
git clone https://github.com/myriadrf/LimeSuite.git
Complete command line example with cmake for MSVC 2015 64-bit (your dependency directories may vary):
cd LimeSuite git checkout stable mkdir builddir cd builddir cmake ../ -G "Visual Studio 14 2015 Win64" ^ -DWX_ROOT_DIR=C:/wxWidgets-3.1.0 ^ -DwxWidgets_ROOT_DIR=C:/wxWidgets-3.1.0 ^ -DwxWidgets_LIB_DIR=C:/wxWidgets-3.1.0/lib/vc140_x64_lib ^ -DFX3_SDK_PATH="C:/EZ-USB FX3 SDK/1.3" ^ -DSoapySDR_DIR=C:/PothosSDR cmake --build . --config Release #installs files to CMAKE_INSTALL_PREFIX cmake --build . --config Release --target install
Or use cmake-gui to configure and generate the visual studio project solution. After generating, open the Visual Studio solution file and run the build target.
Hardware notes
LimeSDR-USB
The following post-install tasks are designed to get users up and running with the LimeSDR USB 3.0 device. Lets check that any necessary drivers are installed and that the LimeSuite utilities can find the LimeSDR attached to your system. We will also cover using the LMS7 GUI to update the firmware and FPGA images stored in the board's flash memory.
USB driver
Windows only, OSX and Linux users do not need to install drivers for USB support. Download the LimeSDR USB driver and unzip the package. LimeSDR should appear as an unrecognised device in the device manager. Use the device properties dialogue to specify the path to the LimeSDR USB drivers directory. Once the proper directory is specified, the driver installation should complete successfully.
Device enumeration
Open the lms7suite GUI and check for the LimeSDR in the connection settings dialogue:
From the command line run LimeUtil to get a list of available devices:
#make sure that STREAM is one of the available connections LimeUtil --info #now run LimeUtil with --find to locate devices on the system LimeUtil --find #Example print output from LimeUtil * [module=STREAM, media=USB, name=USB 3.0 (LimeSDR-USB), addr=241:1204]
Similarly, when working with SDR ecosystem applications, its also good to verify that the LimeSDR can be found by SoapySDRUtil:
#make sure that lime is one of the available factories SoapySDRUtil --info #now run SoapySDRUtil with --find to locate devices on the system SoapySDRUtil --find="driver=lime" #Example print output from LimeUtil Found device 0 addr = 241:1204 driver = lime media = USB module = STREAM name = USB 3.0 (LimeSDR-USB)
Flashing images
You may need to update the FX3 firmware or FPGA bitstream stored in the flash memory of the LimeSDR. Using the programming dialogue, LimeSuiteGUI can automatically download and flash the correct images on the LimeSDR.
- Users may also obtain the image binaries manually by visiting downloads.myriadrf.org
|