I finally figured out how to get the LimeSDR Mini working, and I'm writing it down here so I don't forget how, but also so I can get upset later when I try this again and it doesn't work mysteriously.
This was done on a Dell laptop running Ubuntu 19.10, ymmv on other versions/distros.
As far as I can tell the magic string is using the uhd-soapy driver to interact with the LimeSDR: "driver=lime,soapy=0,nchan=1"
.
Initially I tried installing the SDR drivers and packages through the recommended PPA that MyriadRF lists on their wiki (https://wiki.myriadrf.org/Installing_Lime_Suite_on_Linux) but that didn't work. I removed the ppa, then I was able to install the necessary packages to get the uhd-soapy interface working properly. I have a few packages now showing up as installed,local
and not yet sure if I want to uninstall those. I don't think they should be necessary but it's hard to tell.
Sometimes when it's plugged in, LimeUtil --find
reports
$ LimeUtil --find
* [LimeSDR Mini, media=USB 3.0, module=FT601, addr=24607:1027, serial=1D3AEC399FFA28]
but sometimes it reports
$ LimeUtil --find
* [LimeSDR Mini, media=USB 2.0, module=FT601, addr=24607:1027, serial=1D3AEC399FFA28]
And I have no idea why it might switch because each port I'm plugging it into should be USB 3.0 capable.
- Install the recommended LimeSuite pacakges:
sudo apt install limesuite liblimesuite-dev limesuite-udev limesuite-images soapysdr soapysdr-module-lms7
- Install the tools you want to use:
sudo apt install gr-gsm gqrx-sdr
- Install the packages to get the uhd-soapy interface working properly
sudo apt install soapysdr-module-audio soapysdr-module-uhd uhd-soapysdr
- I also installed the rtl-sdr interface as well:
sudo apt install soapysdr-module-rtlsdr
I'm not entirely sure why the soapysdr-module-audio
module is necessary, but it appears to be necessary for the uhd-soapy interface to work properly.
Run uhd_find_devices
to make sure that your LimeSDR is found by the uhd-soapy interface:
$ uhd_find_devices
[INFO] [UHD] linux; GNU C++ version 8.3.0; Boost_106700; UHD_3.13.1.0-3build1
--------------------------------------------------
-- UHD Device 0
--------------------------------------------------
Device Address:
serial:
default_input: False
default_input: True
default_output: False
default_output: True
device_id: 0
device_id: 6
driver: audio
label: default
label: hw:HDA Intel PCH,0
type: soapy
--------------------------------------------------
-- UHD Device 1
--------------------------------------------------
Device Address:
serial: 1D3AEC399FFA28
addr: 24607:1027
driver: lime
label: LimeSDR Mini [USB 3.0] 1D3AEC399FFA28
media: USB 3.0
module: FT601
name: LimeSDR Mini
type: soapy
Make sure your LimeSDR has the latest firmware:
$ LimeUtil --find
* [LimeSDR Mini, media=USB 3.0, module=FT601, addr=24607:1027, serial=1D3AEC399FFA28]
$ LimeUtil --update
Connected to [LimeSDR Mini [USB 3.0] 1D3AEC399FFA28]
Existing gateware is same as update (1.30)
Programming update complete!
I used grgsm for this, if you don't have any GSM towers in your area you may need to find a different testing mechanism:
grgsm_scanner -v -b GSM850 --args="driver=lime,soapy=0,nchan=1"
I also tested using the LimeSDR Mini in gqrx using the magic string of "driver=lime,soapy=0,nchan=1"
as the driver and it now works correctly! I can change the target frequency without having to exit and re-open the program.
Presumably this would work on a normal LimeSDR with similar arguments, but use the proper receive channel for the full LimeSDR device: "driver=lime,soapy=0,nchan=2"
The only downside to this is now when I use a different SDR I need to explicitly identify the driver I want to use:
grgsm_scanner -v -b GSM850 --args="driver=uhd"