Anyone tried a LimeSDR USB/mini with a RPi4

#1

Looking at the information I could find about the new RPi4, it does not technically have full USB 3.0 throughput.
“USB is provided via an external VLI controller, connected over a single PCI Express Gen 2 lane, and providing a total of 4Gbps of bandwidth, shared between the four ports.”

The VLI chip (VL805-Q6) can support PCIe version 2 x16, I’ve seen PCIe x16 cards using this chip that support 4 full speed USB3.0 ports, but at a guess the SoC (BCM2711B0) in the RPi4B can only provide x1.

So anyhow instead of the typical 5Gbps for a single USB 3.0 port there is only 4Gbps shared between all 4 USB ports. I’m curious if anyone has tried a LimeSDR with this, using only one USB 3.0 port (for maximum performance) with nothing else in the other three USB ports.

So far I’ve read that the:
Airspy works, the
SDRplay works,
HackRF no information yet,
USRP no information yet,
BladeRF 2.0 no information yet,
RTL-SDR dongles, some people have reported that they can not get them to work and only see the following error messages “rtlsdr_read_reg failed with -7” and “rtlsdr_write_reg failed with -7”. But traditionally register read and write errors are associated with low voltage and the latest RPi4B uses a more power than the previous RPi hardware, so it could well just be a power issue.

Baseline (no external hardware connected, no overclocking)

Raspberry Pi 2 B  1.6 watts (idle) to 3.7 watts (stress --cpu 4)
Raspberry Pi 3 A+ 1.2 watts (idle) to 5.4 watts (stress --cpu 4)
Raspberry Pi 3 B  2.1 watts (idle) to 5.9 watts (stress --cpu 4)
Raspberry Pi 3 B+ 2.9 watts (idle) to 6.4 watts (stress --cpu 4)
Raspberry Pi 4 B  3.4 watts (idle) to 7.6 watts (stress --cpu 4)

The current recommended RPi4B power supply should output at least 3A@5V which should be enough to also power a LimeSDR (which I would guess would need 4.5 to 5.5 watts).

Anyhow quickly circling back to my original question, do you own a RPi4, if so does it work with the LimeSDR (USB or mini) ?
And with the “USB 3.0 port” (at least 20% lower maximum throughput on the RPi4, if only one device is connected) was there any issues, say running two RX channels at the maximum sample rate (2RX x 61.44MSPS x 2IQ x 12bits / 8bits = 368.64 MB/sec) ?
Any issue if you used a few low traffic devices on the other USB ports at the same time, say a keyboard and a mouse, did that cause any samples to drop.

#2

This!! I’m currently trying to setup my RPI4 with GNURadio and the LimeSDR Mini for wide-bandwidth RX reception, so hopefully that works fine.

#3

It works, however i was unable to set srsLTE or any LTE setup on the RapI 4,4GB with limesdr mini. do you have luck

#4

How did you set up the LimeSDR source block with GNU Radio? Also, what OS did you use? I installed raspbian, is that ok?

#5

I would probably use pybombs (it is how I install on x86_32/x86_64):
https://www.gnuradio.org/blog/pybombs-the-what-the-how-and-the-why has a good overview, but I would use the manual commands from the current README.md at https://github.com/gnuradio/pybombs

Basically pybombs looks at your system, determines what is missing and installs required packages (git, compilers,…), and then almost everything else is downloaded, compiled and installed from the latest source code using the current release/maintenance branch. It is slower to compile everything from source code, but the folder where everything is installed will be in a known good working state. Pybombs may have problems with some unique/uncommon distributions, but it should work for anything based on Debian (deb e.g. Ubuntu, Raspbian), Fedora (rpm e.g. RedHat, CentOS), Arch (pacman) and probably OSX (port).

You could even use pybombs to install the just released (well about 3 weeks ago) gnuradio 3.8 (“pybombs install gnuradio38”) if you really want lots of new and unexplored problems to deal with, since they have a recipe for that, but the default install is gnuradio37 (https://github.com/gnuradio/gr-recipes), and every module still expects to use that as the default. There is a lot of wisdom in picking the well travelled path of least resistance, where most problems have been found, fully dissected and solved. And with a standard “pybombs install gnuradio” you know that a simple “pybombs install gr-limesdr” will add all required dependencies. to get a lime board working with gnuradio 3.7.

The only thing that confused me about pybombs initially when I used it was that before I could use any of the installed programs (grc,gqrx,limesuite,), either after a reboot or on opening a new terminal was that I needed to do something like the following (depending on which directory you initially picked to install) to modify my environment to see that executables:

$ source ~/prefix/setup_env.sh
$ gnuradio-companion
1 Like
Ubuntu 19.04 support?
#6

I successfully connected my LimeSDR mini to a Raspberry PI 4 (4GB). It was very simple. However, even with the USB3 port used, and no other peripherals connected, 2MSPS was the maximum I could use without dropping samples.

I imagine that USB is not the bottleneck here. USB 2.0 should be able to handle 8MSPS. When I have some more time I’ll investigate the USB speeds on the Pi4 further, although there seems to be a lot of discussion regarding this:

https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=245931
https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=244421

1 Like
#7

@mzs It was a bit of a pain to actually get this to work, but I finally did it. Thanks!

@frog I was able to reach 20 MSPS having the LimeSDR Mini plugged into the USB3 port, but no more than that (I also had a keyboard plugged into the other USB3 port but I don’t assume that matters?). Let me know if you figure something out!

#8

A data point for whoever is interested. I used the ubuntu image at

https://github.com/TheRemote/Ubuntu-Server-raspi4-unofficial/releases/download/v8/ubuntu-18.04.3-preinstalled-server-arm64+raspi4.img.xz

to run the LimeSuiteGUI on my new RPi4 using the LimeSDR USB unit. I was able to get a data rate of around 200MB/s receive.

gnuradio-companion maxed out at a sample rate of about 2MS/s on the same system.

#9

@biffwhiffle Thanks for your input. Any idea how I can max out the bandwidth/sample rate in GRC? I can get it to 30.72 MSPS no problem, but the edges of the spectrum are pretty flat (practically completely deaf). I lose 10 MHz of bandwidth in total, whereas if I input 20 MSPS (20 MHz bandwidth) I don’t have much loses… Any idea how to get around this?

EDIT: This is my GRC output:

---------------------------------------------------------------
LimeSuite Source (RX) info

##################
Connecting to device
##################
LimeSuite version: 19.04.0-gabf82140
gr-limesdr version: 2.1.4
##################
Device list:
Nr.:0 device:LimeSDR Mini, media=USB 2.0, module=FT601, addr=24607:1027, serial=1D424AFA04BBCD
##################
INFO: device_handler::open_device(): no serial number. Using first device in the list.
Use "LimeUtil --find" in terminal to find prefered device serial.
Reference clock 40.00 MHz
Using device: LimeSDR-Mini(1D424AFA04BBCD) GW: 1.28 FW: 6
##################

INFO: device_handler::enable_channels(): SISO CH0 set for device number 0.
INFO: device_handler::set_samp_rate(): set sampling rate: 8 MS/s.
Selected RX path: LNAW
INFO: device_handler::set_rf_freq(): RF frequency set [RX]: 1420 MHz.
INFO: device_handler::set_gain(): set gain [RX] CH0: 30 dB.
INFO: device_handler::set_antenna(): CH0 antenna set [RX]: LNAW.
INFO: source_impl::init_stream(): source channel 0 (device nr. 0) stream setup done.

##################
INFO: device_handler::close_device(): Disconnected from device number 0.
##################

The media=USB 2.0 seems a bit concerning, considering I’ve plugged the Lime into the USB3 port of the RPI 4.

#10

@Coto 31 MSPS would be awesome to see on my board. Are you using the ubuntu image I mentioned or something else? The default raspian (debian base, I guess) had an issue with the apt-add-repository command with the Myriad repository - it objected to my os version and I’m not skilled enough to do a workaround.

If you got around that problem, I’d love to hear how.

#11

I used Raspbian and I also had an issue executing apt-add-repository. Instead, I ended up deleting the previous LimeSuite installations (whatever I had tried at least), and built from source: https://wiki.myriadrf.org/Lime_Suite (doesn’t require you to run this command). It was definitely a hassle and took quite some time but I eventually got fortunate and it ended up installing fine.

#12

I’ll give it a try. Thanks.

#13

After going round and round doing installs of Limesuite, SoapySDR and PothosWare, I did a reset and reinstalled my OS (2019-07-10-raspbian-buster-full) and built SoapySDR from sources. This is the result of --info:

~/SoapySDR/build $ SoapySDRUtil --info
######################################################

Soapy SDR – the SDR abstraction library

######################################################

Lib Version: v0.8.0-g189bc692
API Version: v0.8.0
ABI Version: v0.8
Install root: /usr/local
Search path: /usr/local/lib/SoapySDR/modules0.8 (missing)
No modules found!
Available factories… No factories found!
Available converters…

  • CF32 -> [CF32, CS16, CS8, CU16, CU8]
  • CS16 -> [CF32, CS16, CS8, CU16, CU8]
  • CS32 -> [CS32]
  • CS8 -> [CF32, CS16, CS8, CU16, CU8]
  • CU16 -> [CF32, CS16, CS8]
  • CU8 -> [CF32, CS16, CS8]
  • F32 -> [F32, S16, S8, U16, U8]
  • S16 -> [F32, S16, S8, U16, U8]
  • S32 -> [S32]
  • S8 -> [F32, S16, S8, U16, U8]
  • U16 -> [F32, S16, S8]
  • U8 -> [F32, S16, S8]
    pi@raspberrypi:~/SoapySDR/build $

Here it is for --make:

:~/SoapySDR/build $ SoapySDRUtil --make
######################################################

Soapy SDR – the SDR abstraction library

######################################################

Make device
Error making device: SoapySDR::Device::make() no match
pi@raspberrypi:~/SoapySDR/build $

Since for raspian, I can’t use PPA’s, how am I do add a LimeSDR Usb module?
Also, the modules0,8 (missing) concerns me.

Any suggestions will be appreciated!

Biff

#14

Update: went ahead and built LimeSuite from sources. Now the SoapySDRUtil --info yields this:

pi@raspberrypi:~/LimeSuite/builddir $ SoapySDRUtil --info
######################################################

Soapy SDR – the SDR abstraction library

######################################################

Lib Version: v0.8.0-g189bc692
API Version: v0.8.0
ABI Version: v0.8
Install root: /usr/local
Search path: /usr/local/lib/SoapySDR/modules0.8
Module found: /usr/local/lib/SoapySDR/modules0.8/libLMS7Support.so (19.04.0-abf82140)
Available factories… lime
Available converters…

  • CF32 -> [CF32, CS16, CS8, CU16, CU8]
  • CS16 -> [CF32, CS16, CS8, CU16, CU8]
  • CS32 -> [CS32]
  • CS8 -> [CF32, CS16, CS8, CU16, CU8]
  • CU16 -> [CF32, CS16, CS8]
  • CU8 -> [CF32, CS16, CS8]
  • F32 -> [F32, S16, S8, U16, U8]
  • S16 -> [F32, S16, S8, U16, U8]
  • S32 -> [S32]
  • S8 -> [F32, S16, S8, U16, U8]
  • U16 -> [F32, S16, S8]
  • U8 -> [F32, S16, S8]

The plot thickens…

#15

Since it sees the lime as a possible factory, what happens if you type:
$ SoapySDRUtil --find=“driver=lime”
Or
$ SoapySDRUtil --probe=“driver=lime”
Or any of the other supported options
$ SoapySDRUtil --help

#16

pi@raspberrypi:~/PothosFlow $ SoapySDRUtil --find=“driver=lime”
######################################################

Soapy SDR – the SDR abstraction library

######################################################

No devices found!

pi@raspberrypi:~/PothosFlow $ SoapySDRUtil --probe=“driver=lime”
######################################################

Soapy SDR – the SDR abstraction library

######################################################

Probe device driver=lime
[INFO] Make connection: ‘’
Error probing device: Failed to make connection with ‘’

BUT

pi@raspberrypi:~/PothosFlow $ LimeUtil --info
######################################################

LimeSuite information summary

######################################################

Version information:
Library version: v19.04.0-gabf82140
Build timestamp: 2019-10-02
Interface version: v2019.1.0
Binary interface: 19.04-1

System resources:
Installation root: /usr/local
User home directory: /home/pi
App data directory: /home/pi/.local/share/LimeSuite
Config directory: /home/pi/.limesuite
Image search paths:
- /home/pi/.local/share/LimeSuite/images
- /usr/local/share/LimeSuite/images

Supported connections:

  • PCIEXillybus

doesn’t show FX3 as supported.

#17

Fixed the FX3 issue by reading the part about dependencies. Should have followed instructions better.

2 Likes
#18

I have used LimeSDR-USB and Mini on RPi4. I installed gnuradio and osmocom gsm stack. Most of them is installed using apt.