LimeSDR base commands


Did software developer build some “base” command line utility, something like HackRF one


Hi Robin,

Yes, there is plenty of software support for LimeSDR.

The Lime Suite GUI provides low level device access and Lime Suite also includes a number of command line utilities. See the wiki page and GitHub repo for details.

This together with SoapySDR also enables use with a vast array of SDR ecosystem apps that use either the SoapySDR or UHD API. It can be used within GNU Radio vi the GrOsmoSDR blocks. Support was added to LuaRadio and @jocover has developed support for use with MATLAB and Simulink.




Thanks for quick replay, will look that link, but can be more specific. Does it have command line utility for transceiver option.


Command line utility to do what?


Command similary to this;

hackrf_transfer -t test.bin -f 2462000000 -s 20000000 -x 47

basically to transmit something on specified frequency…


I have a similar question too.
I have been playing with limesdr/MATLAB, trying to figure out how it would be possible to configure device parameters. Is there any reference where a list of system parameters are summarised?

For example, in MATLAB files, I come across numerous parameters like “timestamp_out”, “timeout_ms”, “timestamp_in”. In particular, I am implementing some basic MIMO and I need to make sure which samples are transmitted/received simultaneously from the two TX/RX antennas. I assume there should be some counters.

Many thanks

This is one for @joshblum :slight_smile:

I’m not familiar with the matlab bindings. But in terms of the sample alignment:

Receive samples from the LimeSDR from both channels A and B always come together aligned in pairs. And the same in the transmit direction; the user generates samples for both A and B samples which are sent together to the device.

For handling relative alignment between receive and transmit streams, the device uses timestamps. So in the LimeSDR FPGA there is an internal counter. The value of this counter is sent along with the receive samples so that for each receive call the counter value is the value of the first received sample in that call.

And then in the transmit direction, a timestamp value can be sent along with the transmit data. The FPGA will wait for the internal timestamp to match the user’s transmit timestamp before actually sending the samples to the Lime RFIC for transmit. So thats how transmit timing can be tightly controlled.


Great information…Can you send some example commands that one would send to the FPGA to initiate, sustain, and end a transmit session with the LimeSDR? I think that’s what Otpisani is looking for. Additionally, how does one send that information to the FPGA (App?). I’m certain that LimeSuite can do this easier, but I think there are developers that are wanting to crawl first with the simple commands and want to perform that using either an app they’re creating or can do that from existing LimeSDR code segments that already exist. Everyone is trying to relate this to HackRF (since it can be controlled from a command line environment) and I think everyone is ready to play with the LimeSDR the same way.

Anything you can provide to shed light on that, briefly, will be greatly appreciated.


Marty (KN0CK)


LimeSuite at present doesnt have any bundled command line utilities to transmit and receive from files at present. But command line utilities like rx_tools and uhd examples like rx_samples_to_file and tx_samples_from_file can be used. With both of these options relying on the SoapySDR bindings.

Although there are a myriad of GUI and API options, I had not considered the command line examples. Just as sort of a poll, what would be useful and what might people be looking for? For example: demonstrating the hardware with command line utilities, or using those utilities as examples to create future applications and demonstrations of the APIs? Because I would be interested to know in what direction to take these examples. Because we can use C or C++ limesuite APIs, or we can do something similarly in SoapySDR with C/C++, or for that matter some python examples.

Just curious :slight_smile: Anyone feel free to chime in, think of this as sort of a helpful poll/feature wishlist.

1 Like


If I can be the first to weigh-in, here’s my take on it:

1.) A command line tool for the LimeSDR that can operate much like the other command line utilities that exist for the RTL-SDR and HackRF. People seem to gravitate toward those tools for the purpose of seeing how the LimeSDR will react when a command is sent in and what to expect from the LimeSDR. Again, this will give developers a way to write their applications knowing what the outcome will be based on calls (because of the command) to the LimeSDR. If SoapySDR is a companion to that because of ease of developing a command line tool, then that’s fine, but clear guidance (and the documentation for SoapySDR exists, but may not be clear how it would relate to the command line tool) should be available to the developers to give them the entire scope of how the command line tool and SoapySDR make the LimeSDR perform as intended.

2.) A simpler form of LimeSuite that has a way to show FFTs like LimeSuite does, but incorporates a tab on the app for command line operation so you can do a command and then see in the GUI what’s happening. It’s like a step-up of the command line tool that incorporates the graphical elements of LimeSuite.

Having typed all that, think we’re all in agreement that GNU Radio Companion or Pothos gives us some power of doing things with the LimeSDR, too - - but what it doesn’t do is give us any insight into the API or the calls to/from the API if someone is trying to develop their own apps - the command line tool would REALLY help there. GRC is great for quick research, can compile the flowgraph to Python so it can be exposed that way, but doesn’t help when someone is ‘rolling their own’ C/C++ code for Linux or Windows apps.

Just my 42 cents on the matter… 73 de Marty, KN0CK

I would like to be able using command line utilities too. especially I would like to know how to align the two channel for tx/rx.
The problem I am having with LimeSuite is numerous parameters that I don’t know their functions. Is there any manual/data sheet with explanation about the LimeSuite parameters?

Following up on Josh’s comments relating to timestamps:

Is it possible to use timestamps to define the transmit time of a waveform, AND then control the point at which data collection begins in relation to the Tx start.
The context for this question is requiring the ability to Tx & Rx with maximum bandwidth, but only collect & return a very limited number of contiguous samples back to the PC, maybe 10% of the total available sample points.
The data collection needs to be configurable such that it can start at the same time as transmission, or at some time later, but it still consists of a limited number of samples.


@joshblum I would like to see a really simple example - in any language, preferably using ASCII characters, as quoted above - please show us how to read the RSSi on an antenna input with an app and how to upload it or how/whatever :penguin:

As @martywittrock said, once we’ve got started, there will be no stopping us!

1 Like


Having just picked up Gnuradio recently and fumbling my way around it I’m no expert. But I think Gnuradio could be used to create something close to this. What Gnuradio does is generate a (you can call it what you want but that’s the default). The is just a python script.

Once it’s generated by Gnuradio you could just edit the script to take those command line options above and use them in the script. I am fairly certain this would work.

BTW I heard M. Ossmann designed/developed Hackrf using Gnuradio. If you’re serious about RF Gnuradio is a good tool to learn.

Once I get mine, I’ll code up a few examples. The SoapySDR Python API looks pretty straightforward.

1 Like


Good use of the SoapySDR, may fit the need here:

Just tested rx_tools/rx_fm with limesdr and I cannot get any audio out when piped to applay to work. It does work with a rtlsdr. Anybody else tried ?