Project

General

Profile

LimeSDR Family » History » Version 21

laforge, 04/28/2018 01:18 PM
limesdr PCIe "TBD"

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