Project

General

Profile

LimeSDR Family » History » Version 19

pespin, 12/07/2017 05:57 PM

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