Project

General

Profile

LimeSDR Family » History » Version 23

duo_kali, 05/25/2018 03:47 AM

1 1 laforge
{{>toc}}
2
3
h1. LimeSDR
4
5 4 laforge
The "LimeSDR":https://myriadrf.org/projects/limesdr/ is a low-cost SDR board featuring the Lime Microsystems LMS7002 RF chip.
6
7 20 laforge
!{width:700px}LimeSDR_transp_3.jpg!
8
9 4 laforge
Key characteristics include:
10
* RF Transceiver: Lime Microsystems LMS7002M MIMO FPRF
11
* FPGA: Altera Cyclone IV EP4CE40F23 – also compatible with EP4CE30F23
12 6 ahuemer
* Memory: 256 MBytes DDR2 SDRAM
13 4 laforge
* USB 3.0 controller: Cypress USB 3.0 CYUSB3014-BZXC
14
* Oscillator: Rakon RPT7050A @ 30.72MHz
15
* Continuous frequency range: 100 kHz – 3.8 GHz
16
* Bandwidth: 61.44 MHz
17
* RF connection: 10 U.FL connectors (6 RX, 4 TX)
18
* Power Output (CW): up to 10 dBm
19
* Multiplexing: 2×2 MIMO
20
* Power: micro USB connector or optional external power supply
21
* Status indicators: programmable LEDs
22
* Dimensions: 100 mm x 60 mm
23 1 laforge
24 3 laforge
h2. RF Output Power
25
26
TBD
27 1 laforge
28
h2. Clock
29
30
The on-board clock is a 250ppb VCTCXO.  GSM strictly requires 30ppb, but 250ppb _should_  be sufficient for laboratory use.
31
32
h3. Clock Calibration
33
34
TBD
35
36
h3. Using external clock reference
37
38
TBD
39
40 19 pespin
h1. LimeSDR Mini
41
42
The "LimeSDR Mini":https://myriadrf.org/projects/limesdr/ is a smaller, less expensive version of the original LimeSDR.
43
44 22 laforge
!{width:600px}limesdr-mini-1024x561.jpg!
45
46 19 pespin
Key characteristics include:
47
* RF Transceiver: Lime Microsystems LMS7002M FPRF
48
* FPGA: Altera MAX 10 (10M16SAU169C8G)
49
* EEPROM memory: 2 x 128 KB for RF transciever MCU firmware and data
50
* Flash memory: 1 x 4 MB flash memory for data
51
* USB 3.0 controller: FTDI FT601
52
* Rakon 30.72 MHz VCTCXO
53
* Continuous frequency range: 10 MHz – 3.5 GHz
54
* Bandwidth: 30.72 MHz
55
* RF Connection: 2 x SMA connectors (each can be switched between high and low frequency bands) + 1x U.FL REF CLK
56
* Power Output (CW): up to 10 dBm
57
* Dimensions: 69 mm x 31.4 mm
58
59
h2. RF Output Power
60
61
TBD
62
63 21 laforge
h1. LimeSDR PCIe
64
65
!{width:700px}limesdr-pcie-1-1_jpg_project-body.jpg!
66
67
TBD
68
69 19 pespin
h1. OsmoTRX on LimeSDR
70 1 laforge
71 16 pespin
In terms of OsmoTRX support, you will find a relatively complex driver stack consisting of:
72 15 laforge
* "LimeSuite":https://github.com/myriadrf/LimeSuite.git containing the actual drivers and utilities for LimeSDR (*version 17.09 or later required*)
73 17 laforge
** for LimeSDR-mini, you will need 17.10 or later
74 1 laforge
* "SoapySDR":https://github.com/pothosware/SoapySDR.git as middleware that wraps LimeSuite
75
* "SoapyUHD":https://github.com/pothosware/SoapyUHD.git as plug-in exposing SoapySDR devices to UHD
76
* UHD as the driver interface below OsmoTRX
77
78 5 laforge
{{graphviz_link()
79
digraph G{
80
  rankdir = LR;
81
  LimeSDR -> LimeSuite [label = "USB/libusb"];
82
  LimeSuite -> SoapySDR;
83
  SoapySDR -> UHD [label = "SoapyUHD"];
84
  UHD -> OsmoTRX [label = "libuhd"];
85
}
86
}}
87
88
89 1 laforge
You will need to observe the following dependencies when building the above:
90
# SoapyUHD depends on SoapySDR
91
# LimeSuite depends on SoapySDR.
92
93
h3. Verifying the driver stack
94
95
You can ensure that LimeSuite recognizes your device using the *LimeUtil* part of LimeSuite:
96
97
<pre>
98 12 laforge
$ LimeUtil --find
99 1 laforge
  * [LimeSDR-USB, media=USB 3.0, module=STREAM, addr=1d50:6108, serial=0009060B00xxyyzz]
100
</pre>
101
102
You can ensure that SoapySDR and LimeSuite work together as expected using the *SoapySDRUtil* part of SoapySDR:
103
104
<pre>
105 12 laforge
$ ./SoapySDRUtil --find
106 1 laforge
######################################################
107
## Soapy SDR -- the SDR abstraction library
108
######################################################
109
110
linux; GNU C++ version 6.3.0 20170221; Boost_106200; UHD_003.009.005-0-unknown
111
112
Found device 0
113
  addr = 1d50:6108
114
  driver = lime
115
  label = LimeSDR-USB [USB 3.0] 9060B00462B1C
116
  media = USB 3.0
117
  module = STREAM
118
  name = LimeSDR-USB
119
  serial = 0009060B00xxyyzz
120
</pre>
121
122 13 duo_kali
h2. STEP BY STEP GUIDE TO INSTALL OSMO_TRX WITH LimeSDR from source (using ubuntu 16.04)
123 7 duo_kali
124 9 duo_kali
<pre>
125 7 duo_kali
---Install LimeSuite, UHD and SoapyUHD 
126
127
sudo add-apt-repository -y ppa:myriadrf/drivers
128
sudo apt-get update
129
130
#install core library and build dependencies
131 23 duo_kali
sudo apt-get install git g++ cmake libsqlite3-dev 
132 7 duo_kali
133
#install hardware support dependencies
134 23 duo_kali
sudo apt-get install libsoapysdr-dev libi2c-dev libusb-1.0-0-dev gnuplot
135 7 duo_kali
136
#install graphics dependencies
137
sudo apt-get install libwxgtk3.0-dev freeglut3-dev
138
139
---Install LimeSuite
140
141
git clone https://github.com/myriadrf/LimeSuite.git
142
cd LimeSuite
143
mkdir builddir && cd builddir
144
cmake ../
145
make -j4
146
sudo make install
147
sudo ldconfig
148
149
cd LimeSuite/udev-rules
150 23 duo_kali
sudo sh ./install.sh
151 7 duo_kali
152
Type “LimeSuiteGUI” on terminal to check GUI is running
153
154 8 duo_kali
---Install UHD 
155 7 duo_kali
(with all dependency)
156
157
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
158
159
git clone https://github.com/EttusResearch/uhd
160
cd uhd
161
162
git tag -l
163
...
164
release_003_009_004
165
release_003_009_005
166
release_003_010_000_000
167
# Example: For UHD 3.10.000.000: 
168
  git checkout release_003_010_000_000 (get the latest if fine)
169
170
cd host
171
mkdir build
172
cd build 
173
cmake ../
174
make
175
sudo make install
176
sudo ldconfig
177
178
export LD_LIBRARY_PATH=/usr/local/lib
179
180
try run command to find LimeSDR :
181
uhd_find_devices
182
183
184 1 laforge
185 7 duo_kali
---Install SoapySDR and SoapyUHD 
186
187
git clone https://github.com/pothosware/SoapySDR.git
188
cd SoapySDR
189 12 laforge
mkdir build
190 7 duo_kali
cd build
191
cmake ..
192 1 laforge
make
193 7 duo_kali
sudo make install
194
sudo ldconfig
195
196
git clone https://github.com/pothosware/SoapyUHD
197
cd SoapyUHD
198 12 laforge
mkdir build
199 7 duo_kali
cd build
200
cmake ..
201
make
202
sudo make install
203
sudo ldconfig
204
205 14 duo_kali
---NOW BUILD OSMO-TRX 
206 1 laforge
207
mkdir osmo
208
cd osmo
209 23 duo_kali
git clone https://github.com/osmocom/libsomocore
210
cd libsomocore
211
autoreconf -fi
212
./configure
213
make -j5
214
sudo make install
215
sudo ldconfig
216
217
mkdir osmo
218
cd osmo
219
git clone https://github.com/osmocom/osmo-trx
220 7 duo_kali
cd osmo-trx
221
autoreconf -fi
222
./configure
223 1 laforge
make -j5
224 7 duo_kali
sudo make install
225
sudo ldconfig
226
227
run on terminal: (test and see its connect with SoapyUHD and UHD)
228
229 23 duo_kali
osmo-trx-uhd -C ~/limesdr.cfg
230 18 pespin
231
</pre>
232
233
h2. Troubleshooting
234
235
h3. Firmware upgrade
236
237
If you see UHD warnings regarding version mismath, 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.
238
<pre>
239
-- Make connection: 'LimeSDR-USB [USB 2.0] 9060B00471827'
240
241
UHD Warning:
242
    Firmware version mismatch!
243
      Expected firmware version 4, but found version 3
244
      Follow the FW and FPGA upgrade instructions:
245
      http://wiki.myriadrf.org/Lime_Suite#Flashing_images
246
      Or run update on the command line: LimeUtil --update
247
248
UHD Warning:
249
    Gateware version mismatch!
250
      Expected gateware version 2, revision 12
251
      But found version 2, revision 8
252
      Follow the FW and FPGA upgrade instructions:
253
      http://wiki.myriadrf.org/Lime_Suite#Flashing_images
254
      Or run update on the command line: LimeUtil --update
255
-- Reference clock 30.720 MHz
256
-- Device name: LimeSDR-USB
257
-- Reference: 30.72 MHz
258
-- Init LMS7002M(0)
259
-- Ver=7, Rev=1, Mask=1
260
-- LMS7002M calibration values caching Disable
261
</pre>
262
263
264
h3. Channel setting failed
265
266
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.
267
<pre>
268
ALERT 140046942525312 15:50:41.0 /home/pespin/dev/sysmocom/git/osmo-trx/Transceiver52M/UHDDevice.cpp:642:open: Channel setting failed - map::at
269
ALERT 140046942525312 15:50:41.0 /home/pespin/dev/sysmocom/git/osmo-trx/Transceiver52M/UHDDevice.cpp:642:open: Channel setting failed - map::at
270
ALERT 140046942525312 15:50:41.0 /home/pespin/dev/sysmocom/git/osmo-trx/Transceiver52M/osmo-trx.cpp:489:main: Failed to create radio device
271
272
ALERT 140046942525312 15:50:41.0 /home/pespin/dev/sysmocom/git/osmo-trx/Transceiver52M/osmo-trx.cpp:489:main: Failed to create radio device
273
Shutting down transceiver...
274
</pre>
275
276
You need to pass the correct parameters to osmo-trx:
277
* -s    Tx samples-per-symbol (1 or 4)
278
* -b    Rx samples-per-symbol (1 or 4)
279
<pre>
280
osmo-trx -s 4 -b 4
281
</pre>
Add picture from clipboard (Maximum size: 48.8 MB)