Skip to content

Instantly share code, notes, and snippets.

@sprout42
Last active July 14, 2022 01:37
Show Gist options
  • Save sprout42/bc187f9bfced6cda8e3332fd0060ac11 to your computer and use it in GitHub Desktop.
Save sprout42/bc187f9bfced6cda8e3332fd0060ac11 to your computer and use it in GitHub Desktop.
Getting the LimeSDR Mini working on Linux

Description

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.

Mysteries

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.

Steps that I think should get this to work:

  1. Install the recommended LimeSuite pacakges:
sudo apt install limesuite liblimesuite-dev limesuite-udev limesuite-images soapysdr soapysdr-module-lms7
  1. Install the tools you want to use:
sudo apt install gr-gsm gqrx-sdr
  1. Install the packages to get the uhd-soapy interface working properly
sudo apt install soapysdr-module-audio soapysdr-module-uhd uhd-soapysdr
  1. 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.

Testing

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"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment