LimeSDR Family » History » Revision 26
Revision 25 (laforge, 06/13/2018 02:05 PM) → Revision 26/52 (laforge, 06/13/2018 02:11 PM)
{{>toc}}
h1. LimeSDR
The "LimeSDR":https://myriadrf.org/projects/limesdr/ is a low-cost SDR board featuring the Lime Microsystems LMS7002 RF chip.
!{width:700px}LimeSDR_transp_3.jpg!
Key characteristics include:
* RF Transceiver: Lime Microsystems LMS7002M MIMO FPRF
* FPGA: Altera Cyclone IV EP4CE40F23 – also compatible with EP4CE30F23
* Memory: 256 MBytes DDR2 SDRAM
* USB 3.0 controller: Cypress USB 3.0 CYUSB3014-BZXC
* Oscillator: Rakon RPT7050A @ 30.72MHz
* Continuous frequency range: 100 kHz – 3.8 GHz
* Bandwidth: 61.44 MHz
* RF connection: 10 U.FL connectors (6 RX, 4 TX)
* Power Output (CW): up to 10 dBm
* Multiplexing: 2×2 MIMO
* Power: micro USB connector or optional external power supply
* Status indicators: programmable LEDs
* Dimensions: 100 mm x 60 mm
h2. RF Output Power
TBD
h2. Clock
The on-board clock is a 250ppb VCTCXO. GSM strictly requires 30ppb, but 250ppb _should_ be sufficient for laboratory use.
h3. Clock Calibration
TBD
h3. Using external clock reference
TBD
h1. LimeSDR Mini
The "LimeSDR Mini":https://myriadrf.org/projects/limesdr/ is a smaller, less expensive version of the original LimeSDR.
!{width:600px}limesdr-mini-1024x561.jpg!
Key characteristics include:
* RF Transceiver: Lime Microsystems LMS7002M FPRF
* FPGA: Altera MAX 10 (10M16SAU169C8G)
* EEPROM memory: 2 x 128 KB for RF transciever MCU firmware and data
* Flash memory: 1 x 4 MB flash memory for data
* USB 3.0 controller: FTDI FT601
* Rakon 30.72 MHz VCTCXO
* Continuous frequency range: 10 MHz – 3.5 GHz
* Bandwidth: 30.72 MHz
* RF Connection: 2 x SMA connectors (each can be switched between high and low frequency bands) + 1x U.FL REF CLK
* Power Output (CW): up to 10 dBm
* Dimensions: 69 mm x 31.4 mm
h2. RF Output Power
TBD
h1. LimeSDR PCIe
!{width:700px}limesdr-pcie-1-1_jpg_project-body.jpg!
TBD
h1. OsmoTRX on LimeSDR
In terms of OsmoTRX support, you will find a relatively complex driver stack consisting of:
* "LimeSuite":https://github.com/myriadrf/LimeSuite.git containing the actual drivers and utilities for LimeSDR (*version 17.09 or later required*)
** for LimeSDR-mini, you will need 17.10 or later
* "SoapySDR":https://github.com/pothosware/SoapySDR.git as middleware that wraps LimeSuite
* "SoapyUHD":https://github.com/pothosware/SoapyUHD.git as plug-in exposing SoapySDR devices to UHD
* UHD as the driver interface below OsmoTRX
{{graphviz_link()
digraph G{
rankdir = LR;
LimeSDR -> LimeSuite [label = "USB/libusb"];
LimeSuite -> SoapySDR;
SoapySDR -> UHD [label = "SoapyUHD"];
UHD -> OsmoTRX [label = "libuhd"];
}
}}
You will need to observe the following dependencies when building the above:
# SoapyUHD depends on SoapySDR
# LimeSuite depends on SoapySDR.
h3. Verifying the driver stack
You can ensure that LimeSuite recognizes your device using the *LimeUtil* part of LimeSuite:
<pre>
$ LimeUtil --find
* [LimeSDR-USB, media=USB 3.0, module=STREAM, addr=1d50:6108, serial=0009060B00xxyyzz]
</pre>
You can ensure that SoapySDR and LimeSuite work together as expected using the *SoapySDRUtil* part of SoapySDR:
<pre>
$ ./SoapySDRUtil --find
######################################################
## Soapy SDR -- the SDR abstraction library
######################################################
linux; GNU C++ version 6.3.0 20170221; Boost_106200; UHD_003.009.005-0-unknown
Found device 0
addr = 1d50:6108
driver = lime
label = LimeSDR-USB [USB 3.0] 9060B00462B1C
media = USB 3.0
module = STREAM
name = LimeSDR-USB
serial = 0009060B00xxyyzz
</pre>
h2. STEP BY STEP GUIDE TO INSTALL OSMO_TRX WITH LimeSDR from source (using ubuntu 16.04)
<pre>
---Install LimeSuite, UHD and SoapyUHD
sudo add-apt-repository -y ppa:myriadrf/drivers
sudo apt-get update
#install core library and build dependencies
sudo apt-get install git g++ cmake libsqlite3-dev
#install hardware support dependencies
sudo apt-get install libsoapysdr-dev libi2c-dev libusb-1.0-0-dev gnuplot
#install graphics dependencies
sudo apt-get install libwxgtk3.0-dev freeglut3-dev
---Install LimeSuite
git clone https://github.com/myriadrf/LimeSuite.git
cd LimeSuite
mkdir builddir && cd builddir
cmake ../
make -j4
sudo make install
sudo ldconfig
cd LimeSuite/udev-rules
sudo sh ./install.sh
Type “LimeSuiteGUI” on terminal to check GUI is running
---Install UHD
(with all dependency)
sudo apt-get -y install git swig cmake doxygen build-essential libboost-all-dev libtool libusb-1.0-0 libusb-1.0-0-dev libudev-dev libncurses5-dev libfftw3-bin libfftw3-dev libfftw3-doc libcppunit-1.13-0v5 libcppunit-dev libcppunit-doc ncurses-bin cpufrequtils python-numpy python-numpy-doc python-numpy-dbg python-scipy python-docutils qt4-bin-dbg qt4-default qt4-doc libqt4-dev libqt4-dev-bin python-qt4 python-qt4-dbg python-qt4-dev python-qt4-doc python-qt4-doc libqwt6abi1 libfftw3-bin libfftw3-dev libfftw3-doc ncurses-bin libncurses5 libncurses5-dev libncurses5-dbg libfontconfig1-dev libxrender-dev libpulse-dev swig g++ automake autoconf libtool python-dev libfftw3-dev libcppunit-dev libboost-all-dev libusb-dev libusb-1.0-0-dev fort77 libsdl1.2-dev python-wxgtk3.0 git-core libqt4-dev python-numpy ccache python-opengl libgsl-dev python-cheetah python-mako python-lxml doxygen qt4-default qt4-dev-tools libusb-1.0-0-dev libqwt5-qt4-dev libqwtplot3d-qt4-dev pyqt4-dev-tools python-qwt5-qt4 cmake git-core wget libxi-dev gtk2-engines-pixbuf r-base-dev python-tk liborc-0.4-0 liborc-0.4-dev libasound2-dev python-gtk2 libzmq-dev libzmq1 python-requests python-sphinx libcomedi-dev python-zmq
git clone https://github.com/EttusResearch/uhd
cd uhd
git tag -l
...
release_003_009_004
release_003_009_005
release_003_010_000_000
# Example: For UHD 3.10.000.000:
git checkout release_003_010_000_000 (get the latest if fine)
cd host
mkdir build
cd build
cmake ../
make
sudo make install
sudo ldconfig
export LD_LIBRARY_PATH=/usr/local/lib
try run command to find LimeSDR :
uhd_find_devices
---Install SoapySDR and SoapyUHD
git clone https://github.com/pothosware/SoapySDR.git
cd SoapySDR
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
git clone https://github.com/pothosware/SoapyUHD
cd SoapyUHD
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
---NOW BUILD OSMO-TRX
mkdir osmo
cd osmo
git clone https://github.com/osmocom/libsomocore
cd libsomocore
autoreconf -fi
./configure
make -j5
sudo make install
sudo ldconfig
mkdir osmo
cd osmo
git clone https://github.com/osmocom/osmo-trx
cd osmo-trx
autoreconf -fi
./configure
make -j5
sudo make install
sudo ldconfig
run on terminal: (test and see its connect with SoapyUHD and UHD)
osmo-trx-uhd -C ~/limesdr.cfg
(configuration file attached below)
</pre>
h2. Troubleshooting
h3. Firmware upgrade
If you see UHD warnings regarding version mismatch, follow the steps as explained in the same output, basically run @LimeUtil --update@. It will download the latest firmware into @$HOME/.local/share/LimeSuite/images/@ and flash the device.
<pre>
-- Make connection: 'LimeSDR-USB [USB 2.0] 9060B00471827'
UHD Warning:
Firmware version mismatch!
Expected firmware version 4, but found version 3
Follow the FW and FPGA upgrade instructions:
http://wiki.myriadrf.org/Lime_Suite#Flashing_images
Or run update on the command line: LimeUtil --update
UHD Warning:
Gateware version mismatch!
Expected gateware version 2, revision 12
But found version 2, revision 8
Follow the FW and FPGA upgrade instructions:
http://wiki.myriadrf.org/Lime_Suite#Flashing_images
Or run update on the command line: LimeUtil --update
-- Reference clock 30.720 MHz
-- Device name: LimeSDR-USB
-- Reference: 30.72 MHz
-- Init LMS7002M(0)
-- Ver=7, Rev=1, Mask=1
-- LMS7002M calibration values caching Disable
</pre>
h3. Channel setting failed
If at osmo-trx startup time UHD fails with an alert similar to the one below, it means you forgot to specify the correct samples-per-symbol for both Tx and Rx, which in the case of LimeSDR is 4.
<pre>
ALERT 140046942525312 15:50:41.0 /home/pespin/dev/sysmocom/git/osmo-trx/Transceiver52M/UHDDevice.cpp:642:open: Channel setting failed - map::at
ALERT 140046942525312 15:50:41.0 /home/pespin/dev/sysmocom/git/osmo-trx/Transceiver52M/UHDDevice.cpp:642:open: Channel setting failed - map::at
ALERT 140046942525312 15:50:41.0 /home/pespin/dev/sysmocom/git/osmo-trx/Transceiver52M/osmo-trx.cpp:489:main: Failed to create radio device
ALERT 140046942525312 15:50:41.0 /home/pespin/dev/sysmocom/git/osmo-trx/Transceiver52M/osmo-trx.cpp:489:main: Failed to create radio device
Shutting down transceiver...
</pre>
You need to pass the correct parameters to osmo-trx:
* -s Tx samples-per-symbol (1 or 4)
* -b Rx samples-per-symbol (1 or 4)
<pre>
osmo-trx -s 4 -b 4
</pre>