I have had many difficulties getting LimeSDR mini to work with srsLTE. None of the online guides worked for me.
I now have a tested setup that works, for me, which I would like to share with others. Apologies for sharing on the 'issues' list, but this is where most people will look for solutions. Admins, feel free to close - unless others repeat this sequence and have issues, I will be happy to assist resolving.
Setup
My system is an Intel i7-3770T CPU, 8GB RAM, 128GB SSD.
I am running Ubuntu 18.04.3 in a dual boot configuration. The setup described below follows from a fresh installation of the OS, as I wanted a reproducible setup from a clean install. Having worked on this for days, I have got the time for the sequence of "erase old OS, install new OS, build system, get srsLTE running" down to a 25 minute 48 seconds process. I'm sure this time could be improved :)
This setup was created by following and then adjusting the steps from the following two links:
https://docs.srslte.com/en/latest/general/source/1_installation.html
https://en.dlyang.me/limesdr-mini-on-ubuntu/
Setup steps.
Start with the LimeSDR mini not plugged into the PC.
Install Ubuntu 18.04.3 64 bit desktop OS.
Wait for the OS to advise of updates; install these and reboot.
Open a terminal shell. Enter the following commands, one at a time:
sudo add-apt-repository -y ppa:pothosware/framework
sudo add-apt-repository -y ppa:pothosware/support
sudo add-apt-repository -y ppa:myriadrf/drivers
sudo apt-get update
sudo apt-get install pothos-all -y
sudo apt-get install python-pothos -y
sudo apt-get install python3-pothos -y
sudo apt-get install pothos-python-dev -y
sudo apt-get install soapysdr-tools -y
sudo apt-get install python-soapysdr python-numpy -y
sudo apt-get install python3-soapysdr python3-numpy -y
sudo apt-get install soapysdr-module-remote soapysdr-server -y
sudo apt remove limesdr0.6-module-audio -y
sudo apt install soapysdr-module-all -y
sudo add-apt-repository -y ppa:myriadrf/drivers
sudo apt-get update
sudo apt-get install limesuite liblimesuite-dev limesuite-udev limesuite-images -y
sudo apt-get install soapysdr soapysdr-module-lms7 -y
Now plug your LimeSDR mini into a USB3 port, and run the command:
SoapySDRUtil --probe
In the output displayed, confirm the SDR is detected, and that it is on a USB3 port. If not, try another USB port.
Now enter the following commands, one at a time:
sudo apt-get install libsoapysdr-dev cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev git build-essential -y
git clone https://github.com/srsLTE/srsLTE.git
cd srsLTE
mkdir build
cd build
cmake ../
make
sudo make install
sudo ldconfig
sudo srslte_install_configs.sh user
That completes the installation. Before running the code, I edited the enb config file to get the transmission on a frequency (band20) that is used by my phone in Europe.
In the file ~/.config/srslte/enb.conf change the [rf] section to say
[rf]
dl_earfcn = 6200
tx_gain = 56
rx_gain = 38
device_name = soapy
device_args = rxant=LNAH,txant=BAND2
Now open up two terminal windows. In one, run the command
sudo srsepc
In the other, run
sudo srsenb
In the output of the above you should see the SDR is detected. The final output should be calibration completed and, in my case, a single "[WARNING] L" message. From this point, I have confirmed on a spectrum analyser that the enb is transmitting.
I have yet to confirm cell information detection by an actual mobile phone, but those are next steps, followed by full connectivity with a test SIM.
SDR configuration
The configuration of the LimeSDR mini used in the tests above can been seen below.
SoapySDRUtil --probe
resulting output:
######################################################
Soapy SDR -- the SDR abstraction library
######################################################
Probe device
[INFO] Make connection: 'LimeSDR Mini [USB 3.0] 1D4976B5C14D1A'
[INFO] Reference clock 40.00 MHz
[INFO] Device name: LimeSDR-Mini
[INFO] Reference: 40 MHz
[INFO] LMS7002M calibration values caching Disable
-- Device identification
driver=FT601
hardware=LimeSDR-Mini
boardSerialNumber=0x1d4976b5c14d1a
firmwareVersion=6
gatewareVersion=1.30
hardwareVersion=2
protocolVersion=1
-- Peripheral summary
Channels: 1 Rx, 1 Tx
Timestamps: YES
Sensors: clock_locked, lms7_temp
Registers: BBIC
GPIOs: MAIN
-- RX Channel 0
Full-duplex: YES
Supports AGC: NO
Stream formats: CF32, CS12, CS16
Native format: CS16 [full-scale=2048]
Stream args:
* Buffer Length - The buffer transfer size over the link.
[key=bufferLength, units=samples, default=0, type=int]
* Link Format - The format of the samples over the link.
[key=linkFormat, default=CS16, type=string, options=(CS16, CS12)]
* Skip Calibration - Skip automatic activation calibration.
[key=skipCal, default=false, type=bool]
Antennas: NONE, LNAH, LNAL_NC, LNAW, Auto
Corrections: DC removal, DC offset, IQ balance
Full gain range: [-12, 61] dB
TIA gain range: [0, 12] dB
LNA gain range: [0, 30] dB
PGA gain range: [-12, 19] dB
Full freq range: [0, 3800] MHz
RF freq range: [30, 3800] MHz
BB freq range: [-10, 10] MHz
Tune args:
* LO Offset - Tune the LO with an offset and compensate with the baseband CORDIC.
[key=OFFSET, units=Hz, default=0.0, type=float, range=[-1e+07, 1e+07]]
* BB - Specify a specific value for this component or IGNORE to skip tuning it.
[key=BB, units=Hz, default=DEFAULT, type=float, range=[-1e+07, 1e+07], options=(DEFAULT, IGNORE)]
Sample rates: [0.1, 65] MSps
Filter bandwidths: [1.4, 130] MHz
Sensors: lo_locked
Other Settings:
* TSP DC Level - Digital DC level in LMS7002M TSP chain.
[key=TSP_CONST, type=int, range=[0, 32767]]
-- TX Channel 0
Full-duplex: YES
Supports AGC: NO
Stream formats: CF32, CS12, CS16
Native format: CS16 [full-scale=2048]
Stream args:
* Buffer Length - The buffer transfer size over the link.
[key=bufferLength, units=samples, default=0, type=int]
* Link Format - The format of the samples over the link.
[key=linkFormat, default=CS16, type=string, options=(CS16, CS12)]
* Skip Calibration - Skip automatic activation calibration.
[key=skipCal, default=false, type=bool]
Antennas: NONE, BAND1, BAND2, Auto
Corrections: DC offset, IQ balance
Full gain range: [-12, 64] dB
PAD gain range: [0, 52] dB
IAMP gain range: [-12, 12] dB
Full freq range: [0, 3800] MHz
RF freq range: [30, 3800] MHz
BB freq range: [-10, 10] MHz
Tune args:
* LO Offset - Tune the LO with an offset and compensate with the baseband CORDIC.
[key=OFFSET, units=Hz, default=0.0, type=float, range=[-1e+07, 1e+07]]
* BB - Specify a specific value for this component or IGNORE to skip tuning it.
[key=BB, units=Hz, default=DEFAULT, type=float, range=[-1e+07, 1e+07], options=(DEFAULT, IGNORE)]
Sample rates: [0.1, 65] MSps
Filter bandwidths: [5, 40], [50, 130] MHz
Sensors: lo_locked
Other Settings:
* TSP DC Level - Digital DC level in LMS7002M TSP chain.
[key=TSP_CONST, type=int, range=[0, 32767]]
LimeSDR