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> |