Project

General

Profile

SDR OsmoTRX network from scratch » History » Version 33

laforge, 02/27/2016 08:47 PM

1 32 laforge
{{>toc}}
2 31 laforge
3 32 laforge
h1. Installing a [[OsmoTRX]] based GSM network from scratch
4 1 jolly
5 33 laforge
{{include(Disclaimer-user-content)}}
6 1 jolly
7 32 laforge
*This document is outdated by now and only applies if you would like to use hardware based on [[OsmoTRX]]!*
8
9
This document describes how to install, configure and run [[OsmoTRX]], [[OsmoBTS]], [[osmo-nitb|OsmoNITB]] and LCR.
10
11 1 jolly
In order to use this quick howto, you must have basic knowledge about GIT and be familiar with compiling packages from source.
12
13
14
15 32 laforge
h2. Prerequisite
16
17
18 23 jolly
These packages may be available from you distribution. If not, install them by hand as follows.
19
20 17 jolly
21 32 laforge
h3. opencore-amr (optional, for LCR only)
22 1 jolly
23
24 32 laforge
This package installs GSM adaptive multirate codecs and the EFR codec. The Full-Rate codec is included in LCR's repository.
25
26
<pre>
27 1 jolly
tar xvzf opencore-amr-x.x.x.tar.gz
28
cd opencore-amr-x.x.x
29
./configure
30
make
31
make install
32
ldconfig
33
cd ..
34 32 laforge
</pre>
35 1 jolly
36
37
38 32 laforge
h3. Sip-Sofia (optional, for LCR only)
39
40
41 1 jolly
This package installs the open source SIP stack of Nokia Research Center.
42
43 32 laforge
It can downloaded at [http://sourceforge.net/projects/sofia-sip/files/sofia-sip/":http://sourceforge.net/projects/opencore-amr/files/opencore-amr/].
44 1 jolly
45 32 laforge
<pre>
46 1 jolly
tar xvzf sofia-sip-x.xx.xx.tar.gz
47
cd sofia-sip-x.xx.xx
48
./configure
49
make
50
make install
51
ldconfig
52
cd ..
53 32 laforge
</pre>
54 1 jolly
55
56
57 32 laforge
h3. oRTP
58 1 jolly
59
60 32 laforge
This package installs the open source RTP protocol required for libosmo-abis.
61
62
<pre>
63 1 jolly
tar xvzf ortp-x.xx.x.tar.gz
64
cd ortp-x.xx.x
65
./configure
66
make
67
make install
68
ldconfig
69
cd ..
70 32 laforge
</pre>
71 1 jolly
72
73
74 32 laforge
h3. others
75
76
77 1 jolly
sqlite3, libdbi, dbd-sqlite3 (driver) should should be available from your distribution.
78
79
80
81
82 32 laforge
h2. Installing 
83 1 jolly
84 32 laforge
85
86
h3. libosmocore
87
88
89 1 jolly
This package installs the core utility library for various Osmocom projects.
90 3 jolly
91 1 jolly
The latest version can downloaded via git:
92 32 laforge
<pre>
93 3 jolly
git clone git://git.osmocom.org/libosmocore.git
94 32 laforge
</pre>
95 3 jolly
96 2 jolly
Finish the installation:
97 32 laforge
<pre>
98 1 jolly
cd libosmocore
99 2 jolly
autoreconf -i
100 1 jolly
./configure
101 3 jolly
make
102 1 jolly
make install
103
ldconfig
104
cd ..
105 32 laforge
</pre>
106 1 jolly
107
108
109 32 laforge
h3. libosmo-abis
110 1 jolly
111 32 laforge
112
[[span(style=background: yellow, Use jolly/multi-trx branch. It is required for multiple TRX support, until it is applied to master. jolly/trx branch of osmo-bts will not compile without it.)":http://download.savannah.gnu.org/releases/linphone/ortp/sources/].]
113
114 1 jolly
This package installs the core utility library for various Osmocom projects.
115 3 jolly
116
The latest version can downloaded via git:
117 32 laforge
<pre>
118 3 jolly
git clone git://git.osmocom.org/libosmo-abis.git
119 32 laforge
</pre>
120 3 jolly
121
Sometimes it is necessary to point to different pkgconfig path, because your distribution may use other pkgconfig path than the default path of the packages above. Use the following prefix:
122 32 laforge
<pre>
123 1 jolly
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ ./configure .....
124 32 laforge
</pre>
125 1 jolly
126 2 jolly
Finish the installation:
127 32 laforge
<pre>
128 1 jolly
cd libosmo-abis
129
# change branch:
130
git checkout -b jolly/multi-trx origin/jolly/multi-trx
131 2 jolly
autoreconf -i
132 1 jolly
./configure
133
(sometimes it is necessary to point to different .../lib/pkgconfig/ path: PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ ./configure .....)
134
make
135
make install
136 3 jolly
ldconfig
137 1 jolly
cd ..
138 32 laforge
</pre>
139 1 jolly
140 19 ipse
141 2 jolly
142 32 laforge
h3. [[OsmoNITB]]
143 1 jolly
144 32 laforge
145
This package installs the [[osmo-nitb|Osmocom Network In The Box]] software
146
147 1 jolly
The latest version can downloaded via git:
148 32 laforge
<pre>
149 1 jolly
git clone git://git.osmocom.org/openbsc.git
150 32 laforge
</pre>
151 1 jolly
152
Finish the installation:
153 32 laforge
<pre>
154 1 jolly
cd openbsc/openbsc/
155
# change branch:
156
git checkout -b jolly/testing origin/jolly/testing
157
autoreconf -i
158
./configure
159
(sometimes it is necessary to point to different .../lib/pkgconfig/ path: PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ ./configure .....)
160
make
161
make install
162
cd ../..
163 32 laforge
</pre>
164 1 jolly
165 19 ipse
166 27 ipse
167 32 laforge
h3. [[OsmoBTS]]
168 1 jolly
169 32 laforge
170
[[OsmoBTS]]: (BTS software)
171
172 1 jolly
This package installs the open source Base Transceiver Station.
173
174
The latest version can downloaded via git:
175 32 laforge
<pre>
176 1 jolly
git clone git://git.osmocom.org/osmo-bts.git
177 32 laforge
</pre>
178 1 jolly
179
Finish the installation:
180 32 laforge
<pre>
181 1 jolly
cd osmo-bts
182
#change branch:
183
git checkout -b jolly/trx origin/jolly/trx
184
autoreconf -i
185
./configure --enable-trx
186
(sometimes it is necessary to point to different .../lib/pkgconfig/ path: PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ ./configure .....)
187
make
188
make install
189
cd ..
190 32 laforge
</pre>
191 1 jolly
192
193 32 laforge
h3. [[OsmoTRX]]
194 1 jolly
195 28 ipse
196 32 laforge
Refer to the [[OsmoTRX]] page for build instructions.
197 27 ipse
198 32 laforge
199
200
h3. Linux-Call-Router (LCR) (optional)
201
202
203 17 jolly
This package installs the open source PBX software to bridge ISDN (DSS1) / SIP / GSM (MNCC protocol)
204
205
The latest version can downloaded via git:
206 32 laforge
<pre>
207 17 jolly
git clone git://git.misdn.eu/lcr.git/
208 32 laforge
</pre>
209 17 jolly
210
Now configure, as described here:
211
212 32 laforge
<pre>
213 18 jolly
cd lcr
214 1 jolly
autoreconf -i
215 18 jolly
./configure --with-sip --with-gsm-bs --with-gsm-ms
216 32 laforge
</pre>
217 1 jolly
218
I strongly suggest not to use the Half-Rate codec (--enable-gsmhr) except for testing, because this codec is so slow, that only one or two calls may occupy CPU completely.
219
220 17 jolly
Sometimes it is necessary to point to different pkgconfig path, because your distribution may use other pkgconfig path than the default path of the packages above. Use the following prefix:
221 32 laforge
<pre>
222 1 jolly
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ ./configure .....
223 32 laforge
</pre>
224 17 jolly
225
The configure result should include:
226 32 laforge
<pre>
227 17 jolly
configure: Compiled with GSM network side support
228 1 jolly
configure: Compiled with GSM mobile side support
229
configure: Compiled with GSM half rate codec support
230 17 jolly
configure: Compiled with GSM AMR codec support
231
configure: Compiled with SIP support
232 32 laforge
</pre>
233 17 jolly
234
Finish the installation:
235 32 laforge
<pre>
236 17 jolly
make
237
make install
238
ldconfig
239
cd ..
240 32 laforge
</pre>
241 17 jolly
242
243
244 32 laforge
h2. Configuration examples
245 17 jolly
246 32 laforge
247
248
h3. [[OsmoBTS]]
249
250
251
<pre>
252 3 jolly
mkdir ~/.osmocom
253
edit ~/.osmocom/osmo-bts.cfg
254 32 laforge
</pre>
255 3 jolly
256 32 laforge
<pre>
257 2 jolly
bts 0
258 3 jolly
 band DCS1800
259 2 jolly
 ipa unit-id 1801 0
260
 oml remote-ip 127.0.0.1
261
 rtp bind-ip 127.0.0.1
262
 rtp jitter-buffer 0
263
 paging lifetime 0
264
 gsmtap-sapi bcch
265
 gsmtap-sapi ccch
266
 gsmtap-sapi rach
267
 gsmtap-sapi agch
268 1 jolly
 gsmtap-sapi pch
269 2 jolly
 gsmtap-sapi sdcch
270
 gsmtap-sapi pacch
271
 gsmtap-sapi pdtch
272
 gsmtap-sapi sacch
273
 fn-advance 20
274
 ms-power-loop -10
275
 timing-advance-loop
276
 trx 0
277
  rxgain 0
278
  power 0
279 32 laforge
</pre>
280 1 jolly
281 4 jolly
282
283 32 laforge
h3. [[OpenBSC]]
284
285
286
<pre>
287 4 jolly
mkdir ~/.osmocom
288
edit ~/.osmocom/open-bsc.cfg
289 32 laforge
</pre>
290 4 jolly
291 32 laforge
*Be sure to change 'arfcn' to a frequency you have license for!*
292 4 jolly
293 32 laforge
<pre>
294 4 jolly
e1_input
295
 e1_line 0 driver ipa
296
 e1_line 0 port 0
297
network
298
 network country code 262
299
 mobile network code 42
300 32 laforge
 short name [[OpenBSC]]
301
 long name [[OpenBSC]]
302 4 jolly
 auth policy accept-all
303
 location updating reject cause 13
304
 encryption a5 0
305
 neci 1
306
 paging any use tch 0
307 1 jolly
 rrlp mode ms-based
308 4 jolly
 mm info 1
309 1 jolly
 handover 0
310
 handover window rxlev averaging 10
311
 handover window rxqual averaging 1
312
 handover window rxlev neighbor averaging 10
313
 handover power budget interval 6
314
 handover power budget hysteresis 3
315
 handover maximum distance 9999
316
 timer t3101 10
317 4 jolly
 timer t3103 0
318 1 jolly
 timer t3105 0
319
 timer t3107 0
320 4 jolly
 timer t3109 0
321
 timer t3111 0
322 1 jolly
 timer t3113 60
323
 timer t3115 0
324
 timer t3117 0
325 22 jolly
 timer t3119 0
326 1 jolly
 timer t3122 10
327
 timer t3141 0
328 4 jolly
 dtx-used 0
329
 subscriber-keep-in-ram 0
330 1 jolly
 bts 0
331 4 jolly
  type sysmobts
332
  band DCS1800
333
  cell_identity 0
334
  location_area_code 1
335 1 jolly
  training_sequence_code 7
336
  base_station_id_code 63
337
  ms max power 0
338
  cell reselection hysteresis 4
339
  rxlev access min 0
340
  periodic location update 30
341 4 jolly
  channel allocator descending
342
  rach tx integer 9
343 1 jolly
  rach max transmission 7
344 4 jolly
  channel-descrption attach 1
345
  channel-descrption bs-pa-mfrms 5
346
  channel-descrption bs-ag-blks-res 1
347
  ip.access unit_id 1801 0
348
  oml ip.access stream_id 255 line 0
349
  neighbor-list mode automatic
350 1 jolly
  trx 0
351 4 jolly
   rf_locked 0
352
   arfcn 869
353
   nominal power 0
354
   max_power_red 0
355
   rsl e1 tei 0
356
    timeslot 0
357 1 jolly
     phys_chan_config CCCH+SDCCH4
358
     hopping enabled 0
359
    timeslot 1
360 4 jolly
     phys_chan_config TCH/F
361 1 jolly
     hopping enabled 0
362
    timeslot 2
363
     phys_chan_config TCH/F
364
     hopping enabled 0
365
    timeslot 3
366
     phys_chan_config TCH/F
367
     hopping enabled 0
368
    timeslot 4
369
     phys_chan_config TCH/F
370 4 jolly
     hopping enabled 0
371
    timeslot 5
372 5 jolly
     phys_chan_config TCH/F
373 4 jolly
     hopping enabled 0
374 1 jolly
    timeslot 6
375 4 jolly
     phys_chan_config TCH/F
376 17 jolly
     hopping enabled 0
377 4 jolly
    timeslot 7
378 12 jolly
     phys_chan_config TCH/F
379
     hopping enabled 0
380 32 laforge
</pre>
381 12 jolly
382
383 1 jolly
384 32 laforge
h3. Linux-Call-Router (LCR) (optional)
385 1 jolly
386 32 laforge
387
388
h4. options.conf
389
390
391
<pre>
392 12 jolly
edit /usr/local/etc/lcr/options.conf
393 32 laforge
</pre>
394 12 jolly
395
Add a line to show logging to the console:
396 32 laforge
<pre>
397 4 jolly
debug 0x100000
398 32 laforge
</pre>
399 4 jolly
400 1 jolly
401
402 32 laforge
h4. interface.conf
403
404
405 1 jolly
The simplest configuration uses only the GSM interface. It allows LCR to forward calls from GSM to GSM or from GSM to a call test feature.
406
407 32 laforge
<pre>
408 1 jolly
edit /usr/local/etc/lcr/interface.conf
409 32 laforge
</pre>
410 1 jolly
411
You can remove (or comment out) everything and just add this interface:
412
413 32 laforge
<pre>
414 4 jolly
[gsm]
415 1 jolly
gsm-bs
416
tones yes
417
earlyb no
418
extern
419 32 laforge
</pre>
420 4 jolly
421
422 32 laforge
h4. routing.conf
423
424
425
<pre>
426 4 jolly
edit /usr/local/etc/lcr/routing.conf
427 32 laforge
</pre>
428 4 jolly
429
You can remove (or comment out) everything and just add these rulesets:
430
431 32 laforge
<pre>
432 4 jolly
[main]
433
interface=gsm                           : goto ruleset=gsm
434
                                        : disconnect cause=31
435
436 1 jolly
[gsm]
437
dialing=99                              : test
438 4 jolly
                                        : extern interfaces=gsm
439 32 laforge
</pre>
440 1 jolly
441 6 jolly
Look at the main rule set. All calls from interface 'gsm' are forwarded to rule set 'gsm'.
442
443
Look at the gsm rule set. All calls that dial '99' prefix, will be test calls. All other calls will be forwarded back to 'gsm' interface.
444
445
446
447 32 laforge
h2. Running
448
449
450 17 jolly
I suggest to have one shell for every process to run, rather than stating all processes as damon from one shell. Not starting as deamon allows to easily see the debugging output.
451 1 jolly
452 9 jolly
453 32 laforge
h3. [[OpenBSC]]
454 1 jolly
455 32 laforge
456
Open a shell and start [[OpenBSC]]:
457
458
<pre>
459 1 jolly
osmo-nitb -c ~/.osmocom/open-bsc.cfg -l ~/.osmocom/hlr.sqlite3 -P -C --debug=DRLL:DCC:DMM:DRR:DRSL:DNM
460 32 laforge
</pre>
461 1 jolly
462 32 laforge
[[OpenBSC]] runs as a stand-alone network with given config file and data base. In order to use LCR, add '-m' option. In this case the LCR replaces the built-in call control.
463 1 jolly
464 32 laforge
<pre>
465 6 jolly
osmo-nitb -c ~/.osmocom/open-bsc.cfg -l ~/.osmocom/hlr.sqlite3 -P -m -C --debug=DRLL:DCC:DMM:DRR:DRSL:DNM
466 32 laforge
</pre>
467 1 jolly
468 6 jolly
Very important is the option '-C'. On certain machines, osmo-nitb will halt from time to time while writing counters to database. This Without this option, audio might interrupt several seconds from time to time.
469
470 1 jolly
The debugging is usefull for early tests, because you will quickly see what happens if a mobile requests something.
471
472 32 laforge
<pre>
473 6 jolly
<0005> bsc_init.c:422 
474
WARNING: You are running an 'accept-all' network on a BTS that is not barred.
475 1 jolly
This configuration is likely to interfere with production GSM networks and
476
should only be used in a RF shielded environment such as a faraday cage!
477
478 6 jolly
<0019> input/ipaccess.c:925 enabling ipaccess BSC mode
479
DB: Database initialized.
480 1 jolly
DB: Database prepared.
481
<001d> sms_queue.c:220 Attempting to send 20 SMS
482 32 laforge
</pre>
483 6 jolly
484 1 jolly
485
486 32 laforge
h3. [[OsmoBTS]]
487 1 jolly
488 32 laforge
489
Open a shell and start [[OsmoBTS]]:
490
491
<pre>
492 6 jolly
osmobts-trx -c ~/.osmocom/osmo-bts.cfg
493 32 laforge
</pre>
494 1 jolly
495 32 laforge
<pre>
496 1 jolly
((*))
497
  |
498 32 laforge
 / \ [[OsmoBTS]]
499 1 jolly
Using MAC address of eth0: 'xx:xx:xx:xx:xx:xx'
500 6 jolly
...
501
<000a> trx_if.c:176 No response from tranceiver
502 1 jolly
<000a> trx_if.c:176 No response from tranceiver
503 6 jolly
<000a> trx_if.c:176 No response from tranceiver
504 32 laforge
</pre>
505 1 jolly
506
507
508 32 laforge
h3. [[OsmoTRX]]
509 6 jolly
510
511 32 laforge
Refer to the [[OsmoTRX]] page on how to run [[OsmoTRX]].
512 1 jolly
513
514 32 laforge
h4. [[UmTRX]]
515 6 jolly
516 32 laforge
517
The installation/setup/calibration of [[UmTRX]] is beyond the scope of this document. Please refer to:
518
519
* https://github.com/fairwaves
520
* http://files.ettus.com/uhd_docs/manual/html/build.html
521
* http://wush.net/trac/rangepublic/wiki/BuildInstallRun
522
523
524
h4. calypso-BTS
525
526
527 7 jolly
Building Osmocom-BB with arm-elf toolchain is also beyond the scope of this document. If you managed to compile and run Osmocom-BB you should be able to run the transceiver too.
528
529
The latest version can downloaded via git:
530 32 laforge
<pre>
531 7 jolly
git clone git://git.osmocom.org/libosmo-dsp.git
532
git clone git://git.osmocom.org/osmocom-bb.git
533 32 laforge
</pre>
534 7 jolly
535 1 jolly
In order to compile Osmocom-BB with transceiver support, do the following:
536 32 laforge
<pre>
537 13 jolly
cd libosmo-dsp
538 17 jolly
autoreconf -i
539 1 jolly
./configure
540 20 jolly
(sometimes it is necessary to point to different .../lib/pkgconfig/ path: PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ ./configure .....)
541
make
542
make install
543
cd ..
544
545
cd osmocom-bb
546 17 jolly
# change branch:
547 13 jolly
git checkout -b jolly/testing origin/jolly/testing
548 20 jolly
cd src
549
make
550
# after it compiles, just enable transceiver support
551
cd host/layer23
552
./configure --enable-transceiver
553
make
554 32 laforge
</pre>
555 20 jolly
556 32 laforge
*NOTE: "ms-power-loop" at osmo-bts.cfg should be set to -65, in order to prevent saturating the input. Also if the phone is only one or few meters away, "ms max power" should be set to 0. In case of long distance test it can be set to 30 (DCS) or 33 (GSM 900).*
557 13 jolly
558
Now you should start with a single phone for one timeslot only. If it works, you can try two phones to serve two timeslots. Since you have only one slot, you will only be able to transmit broadcast, do location updating and send/receive SMS. Here is the "osmo-bts.cfg" for a single timeslot:
559
560 32 laforge
<pre>
561 13 jolly
bts 0
562
 band DCS1800
563
 ipa unit-id 1801 0
564
 oml remote-ip 127.0.0.1
565
 rtp jitter-buffer 0
566 1 jolly
 paging queue-size 200
567 21 jolly
 paging lifetime 0
568 26 jolly
 fn-advance 30
569
 ms-power-loop -60
570
 timing-advance-loop
571
 settsc
572
 setbsic
573
 trx 0
574
  rxgain 0
575
  power 0
576
  slotmask 1 0 0 0 0 0 0 0
577 32 laforge
</pre>
578 26 jolly
579
Run osmocon and transceiver application in separate shells:
580
581 32 laforge
<pre>
582 26 jolly
# Please refer to Osmocom-BB wiki for compiling and running own firmware on compal phones...
583
osmocon -p /dev/ttyUSB0 -m c123xor -c path_to/trx.highram.bin -r 99
584 32 laforge
</pre>
585 26 jolly
586 32 laforge
<pre>
587 26 jolly
transceiver -e 5 -r 99
588 32 laforge
</pre>
589 26 jolly
590
When using two phones, two timeslots can be served. I suggest to configure second timeslot (TS 1) as TCH/H at openbsc.cnf. This way it is possible to allow two traffic channels on a single timeslot. If you do a call from one phone to another, you will need one channel for each phone. In order to use two phones, you need to change the alot map of osmo-bts.cnf:
591
592 32 laforge
<pre>
593 26 jolly
  slotmask 1 1 0 0 0 0 0 0
594 32 laforge
</pre>
595 26 jolly
596
Run two osmocon and transceiver application in separate shells:
597
598 32 laforge
<pre>
599 26 jolly
osmocon -p /dev/ttyUSB0 -m c123xor -c path_to/trx.highram.bin -r 99
600 32 laforge
</pre>
601 26 jolly
602 32 laforge
<pre>
603 26 jolly
# This osmocon connects to the serial interface of the second phone.
604
# Note: "/tmp/osmocom_l2.2" is the second socket to which the transceiver will connect.
605
osmocon -p /dev/ttyUSB1 -s /tmp/osmocom_l2.2 -m c123xor -c path_to/trx.highram.bin -r 99
606 32 laforge
</pre>
607 26 jolly
608 32 laforge
<pre>
609 26 jolly
transceiver -e 5 -r 99 -2
610 32 laforge
</pre>
611 26 jolly
612
613
614 32 laforge
h3. Linux-Call-Router (LCR) (optional)
615
616
617 26 jolly
Run LCR with debugging output.
618
619 32 laforge
<pre>
620 26 jolly
lcr start
621 32 laforge
</pre>
622 7 jolly
623 32 laforge
<pre>
624 17 jolly
** LCR  Version 1.14
625 7 jolly
626
LCR 1.14 started, waiting for calls...
627 32 laforge
</pre>
628 7 jolly
629
630
631 32 laforge
h2. Test
632 7 jolly
633 32 laforge
634
635
h3. Location Updating
636
637
638 1 jolly
Switch on the phone.
639 9 jolly
640 32 laforge
If you have a SIM card for your network 262 42, you can use it and do automatic network search. If not, do a manual network and select this network. You should see debugging output on [[OpenBSC]] like this:
641
<pre>
642 9 jolly
...
643
 <0002> gsm_04_08.c:424 -> LOCATION UPDATE ACCEPT
644
...
645 32 laforge
</pre>
646 9 jolly
647
648
649 32 laforge
h3. Call the music (LCR required)
650
651
652 9 jolly
Now enter phone number 995 to select the test function 5 of LCR. This test function just plays the hold music.
653 17 jolly
654 9 jolly
655
656 32 laforge
h3. Echo and BFI test (LCR required)
657
658
659 9 jolly
Enter phone number 993 to select the test function 3 of LCR. This test function echoes back everything that is received. Note that it will re-transcode the speech data, so the audio from your voice is compressed and decompressed twice until you can hear a fraction of a second later.
660
661
You may experience short beeps. These beeps represent all bad frames that could not be decoded or got lost over the air. (Without this test, the missing frames will be extrapolated from previous frame, so some loss rate will not be recognized by the remote end.)
662
663 30 jolly
664 32 laforge
h2. See also
665
666
667
* [[multi-BTS_with_handover]] -- NITB plus two dual channel BTS (based on [[OsmoBTS]]) with handover support
Add picture from clipboard (Maximum size: 48.8 MB)