How to's
1. Branch release set for UmTRX
Source | Branch |
UHD | maint |
UHD-Fairwaves | master |
Osmo-trx | fairwaves/master |
libosmocore | master |
libosmo-abis | master |
libosmo-sccp | master |
libosmo-netif | master |
openBSC | fairwaves/master |
osmoBTS | fairwaves/master (run ./configure --enable-trx at the installation process ) |
2. UmTRX firmware
If you are presently using an older UmTRX-specific fork of the main UHD codebase (UHD version 003.004) and would like to be up and running with the new driver (for UHD version 003.008 and later), you must first upgrade the firmware on your UmTRX.
in this order:
1. Use the old monolithic driver to upgrade both the production and safe firmware
2. Reboot the UmTRX
3. Remove the old UHD fork
4. Install latest UHD from ettus and UmTRX module
Warning: moving to the new driver first and then attempting to upgrade the firmware may brick your UmTRX!
1. Install old monolithic Fairwaves UHD (branch* old_master)
- Firmware upgrade
Binary firmware releases can also be found in the GitHub repo, in the images directory.
A utility provided by UHD-Fairwaves.
Provided that everything downloaded without any issues you can now proceed with updating. You must ensure that the power source and Ethernet connection with the UmTRX is stable during these operations!
The commands are:
$ ./umtrx_net_burner.py ??addr=192.168.10.2 ??fw=umtrx_txrx_uhd.bin ??erase
$ ./umtrx_net_burner.py ??addr=192.168.10.2 ??fpga=u2plus_umtrx_v2.bin
$ ./umtrx_net_burner.py ??addr=192.168.10.2 ??fpga=u2plus_umtrx_v2.bin ??overwrite-safe
$ ./umtrx_net_burner.py ??addr=192.168.10.2 ??fw=umtrx_txrx_uhd.bin
detailed instruction how to: umtrx.org
2. Reboot (power up/down) UmTRX for the final step of firmware loading
3. Remove old UHD (003.004)
aptitude purge libuhd-dev libuhd003 uhd uhd-host
4. Install latest UHD from ettus and UmTRX module. Follow the steps below described in UHD installation chapter.
Run:
uhd_usrp_probe
to verify that correct version of uhd is installed and UmTRX with the new firmware detected properly.
Summary: old UHD -> new firmware -> new UHD
2. UHD Driver
A host driver is provided by UHD plus a loadable module that adds UmTRX support.
If you already have a reasonably recent UHD install that was built with module support, you may only need to build and install the UmTRX module. However, at the time of writing the binary downloads from Ettus were built without this option enabled. See below for details.
We provide instructions for Linux users only, but the driver should work under Windows and MacOS X as well.
InstallationUmTRX driver is a loadable module for the UHD library, so the main UHD library is required for the UmTRX driver to operate. Loading UmTRX driver allows any of the myriad of UHD applications to work with UmTRX just like with any other UHD compatible device. Below we describe how to install the UHD library and UmTRX module for it.
The UHD version supported by the current UmTRX driver is 003.008.
NOTE: The binary downloads from Ettus have module support disabled and does not work with UmTRX.
If you are an Ubuntu user, you can download UHD library built with loadable modules support from Josh Blum PPA:
$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:guruofquality/pothos
Building form source
For UHD build and installation details see the UHD Wiki.
UmTRX module
Once UHD has been installed the UmTRX module must be built and installed.
Go to master branch of the UHD-Fairwaves repository,
$ git clone https://github.com/fairwaves/UHD-Fairwaves.git
$ cd UHD-Fairwaves/host
$ mkdir build
$ cd build
$ cmake ../
$ make
$ sudo make install
NOTE: that if build fails with a boost-related error, a more recent version of this may need to be installed.
4. Osmo-TRX rebuild (optional)
NOTE: This is required, If you have already installed Osmocom software before you update UHD.
After the UHD update for 003.008, Osmo-TRX doesn't work! In terms of the new UHD version, an Osmo-TRX rebuild is required.
go to:
/fairwaves-tools/deps/osmo-trx
and run
autoreconf -fi
./configure
make -j4
sudo make install
5. How Freeswitch connects to LCR
Freeswitch talk to LCR through the SIP protocol
path: etc/lcr/interface.conf
Freeswitch IP
<remote ip>[:<remote port>]
LCR IP
<local ip>[:<local port>]
6. How to set up a MultiBTS
- BSC: osmo-nitb 172.30.1.10
- BTS1: osmo-bts-1 172.30.1.11
- BTS2: osmo-bts-2 172.30.1.12
BTS configuration
There are two parameters which should be set correctly in BTS configuration:
-
1.
ipa unit-id
- each BTS should have unique ipa unit-id -
2.
oml remote-ip
- BSC ip address
path: etc/osmocom/osmo-bts.cfg
BTS1 configuration
bts 0
band GSM900
ipa unit-id 1801 0
oml remote-ip 172.30.1.10
rtp jitter-buffer 0
paging lifetime 0
gsmtap-sapi bcch
gsmtap-sapi ccch
gsmtap-sapi rach
gsmtap-sapi agch
gsmtap-sapi pch
gsmtap-sapi sdcch
gsmtap-sapi pacch
gsmtap-sapi pdtch
gsmtap-sapi sacch
fn-advance 20
ms-power-loop -10
timing-advance-loop
trx 0
rxgain 12
power 0
trx 1
rxgain 12
power 0
BTS2 configuration
bts 1
band GSM900
ipa unit-id 1802 0
oml remote-ip 172.30.1.10
rtp jitter-buffer 0
paging lifetime 0
gsmtap-sapi bcch
gsmtap-sapi ccch
gsmtap-sapi rach
gsmtap-sapi agch
gsmtap-sapi pch
gsmtap-sapi sdcch
gsmtap-sapi pacch
gsmtap-sapi pdtch
gsmtap-sapi sacch
fn-advance 20
ms-power-loop -10
timing-advance-loop
trx 0
rxgain 12
power 0
trx 1
rxgain 12
power 0
BSC configuration
There are three parameters which should be checked in BSC configuration:
-
1.
ip.access unit_id
- you should set the same unit id in the BSC as well as in BTS, each BTS should have unique ipa unit-id -
2.
base_station_id_code
- should be unique in location area <0-63> -
3.
neighbor-list mode automatic
path: etc/osmocom/openbsc.cfg
BSC configuration
!
! OpenBSC (UNKNOWN) configuration saved from vty
!!
password foo
!
line vty
no login
!
e1_input
e1_line 0 driver ipa
e1_line 0 port 0
no e1_line 0 keepalive
network
network country code 1
mobile network code 1
short name Fairwaves
long name Fairwaves
auth policy accept-all
location updating reject cause 13
encryption a5 0
neci 1
paging any use tch 0
rrlp mode none
mm info 1
handover 1
handover window rxlev averaging 10
handover window rxqual averaging 1
handover window rxlev neighbor averaging 10
handover power budget interval 6
handover power budget hysteresis 3
handover maximum distance 9999
timer t3101 10
timer t3103 0
timer t3105 0
timer t3107 0
timer t3109 4
timer t3111 0
timer t3113 60
timer t3115 0
timer t3117 0
timer t3119 0
timer t3122 10
timer t3141 0
dtx-used 0
subscriber-keep-in-ram 0
bts 0
type sysmobts
band GSM900
cell_identity 0
location_area_code 1
base_station_id_code 63
ms max power 15
cell reselection hysteresis 4
rxlev access min 0
periodic location update 30
radio-link-timeout 32
channel allocator ascending
rach tx integer 9
rach max transmission 7
channel-descrption attach 1
channel-descrption bs-pa-mfrms 5
channel-descrption bs-ag-blks-res 1
ip.access unit_id 1801 0
oml ip.access stream_id 255 line 0
neighbor-list mode automatic
gprs mode none
no force-combined-si
trx 0
rf_locked 0
arfcn 74
nominal power 23
max_power_red 0
rsl e1 tei 0
timeslot 0
phys_chan_config CCCH+SDCCH4
hopping enabled 0
timeslot 1
phys_chan_config SDCCH8
hopping enabled 0
timeslot 2
phys_chan_config TCH/F
hopping enabled 0
timeslot 3
phys_chan_config TCH/F
hopping enabled 0
timeslot 4
phys_chan_config TCH/F
hopping enabled 0
timeslot 5
phys_chan_config TCH/F
hopping enabled 0
timeslot 6
phys_chan_config TCH/F
hopping enabled 0
timeslot 7
phys_chan_config TCH/F
hopping enabled 0
trx 1
rf_locked 0
arfcn 84
nominal power 23
max_power_red 0
rsl e1 tei 0
timeslot 0
phys_chan_config TCH/F
hopping enabled 0
timeslot 1
phys_chan_config TCH/F
hopping enabled 0
timeslot 2
phys_chan_config TCH/F
hopping enabled 0
timeslot 3
phys_chan_config TCH/F
hopping enabled 0
timeslot 4
phys_chan_config TCH/F
hopping enabled 0
timeslot 5
phys_chan_config TCH/F
hopping enabled 0
timeslot 6
phys_chan_config TCH/F
hopping enabled 0
timeslot 7
phys_chan_config TCH/F
hopping enabled 0
bts 1
type sysmobts
band GSM900
cell_identity 0
location_area_code 1
base_station_id_code 62
ms max power 15
cell reselection hysteresis 4
rxlev access min 0
periodic location update 30
radio-link-timeout 32
channel allocator ascending
rach tx integer 9
rach max transmission 7
channel-descrption attach 1
channel-descrption bs-pa-mfrms 5
channel-descrption bs-ag-blks-res 1
ip.access unit_id 1802 0
oml ip.access stream_id 255 line 0
neighbor-list mode automatic
gprs mode none
no force-combined-si
trx 0
rf_locked 0
arfcn 111
nominal power 23
max_power_red 0
rsl e1 tei 0
timeslot 0
phys_chan_config CCCH+SDCCH4
hopping enabled 0
timeslot 1
phys_chan_config SDCCH8
hopping enabled 0
timeslot 2
phys_chan_config TCH/F
hopping enabled 0
timeslot 3
phys_chan_config TCH/F
hopping enabled 0
timeslot 4
phys_chan_config TCH/F
hopping enabled 0
timeslot 5
phys_chan_config TCH/F
hopping enabled 0
timeslot 6
phys_chan_config TCH/F
hopping enabled 0
timeslot 7
phys_chan_config TCH/F
hopping enabled 0
trx 1
rf_locked 0
arfcn 122
nominal power 23
max_power_red 0
rsl e1 tei 0
timeslot 0
phys_chan_config TCH/F
hopping enabled 0
timeslot 1
phys_chan_config TCH/F
hopping enabled 0
timeslot 2
phys_chan_config TCH/F
hopping enabled 0
timeslot 3
phys_chan_config TCH/F
hopping enabled 0
timeslot 4
phys_chan_config TCH/F
hopping enabled 0
timeslot 5
phys_chan_config TCH/F
hopping enabled 0
timeslot 6
phys_chan_config TCH/F
hopping enabled 0
timeslot 7
phys_chan_config TCH/F
hopping enabled 0
7. How to change unit ID
Find the ipa unit-id <new-UNIT-ID> 0
line in osmo-bts.cfg
file. Change only this value <new-UNIT-ID>
NOTE: ipaccess-config
utility doesn't work with OsmoBTS/OpenBSC/UmTRX. It only works with ip-access hardware. Do not use it.
8. How to get GPRS up
osmo-pcu has to be installed:
git clone git://git.osmocom.org/osmo-pcu
cd osmo-pcu/
autoreconf -i
./configure
make
cd ..
GPRS configuration can be configured through the VTY telnet interface. Refer to osmocom for details
9. UmTRX 2.2 Box STL file
Here is the 3D box model for the UmTRX 2.2
10. UmDESK displaying problem
Small inch monitors might have a displaying problem with a console mode resolution.
in order to disable Linux Kernel Framebuffer for this graphics driver
just add
blacklist gma500_gfx
line to
/etc/modprobe.d/blacklist-framebuffer.conf
11. How to disable a second TRx
In order to disable a second channel follow these steps bellow:
1.Remove TRx 1 configuration in /etc/osmocom/openbsc.cfg
trx 1
rf_locked 0
arfcn 20
nominal power 23
max_power_red 0
rsl e1 tei 0
timeslot 0
phys_chan_config TCH/F
hopping enabled 0
timeslot 1
phys_chan_config TCH/F
hopping enabled 0
timeslot 2
phys_chan_config TCH/F
hopping enabled 0
timeslot 3
phys_chan_config TCH/F
hopping enabled 0
timeslot 4
phys_chan_config TCH/F
hopping enabled 0
timeslot 5
phys_chan_config TCH/F
hopping enabled 0
timeslot 6
phys_chan_config TCH/F
hopping enabled 0
timeslot 7
phys_chan_config TCH/F
also remove
trx 1
rxgain 12
power 0
in etc/osmocom/osmo-bts.cfg
2.change value -c 2 on -c 1 in /etc/sv/osmo-bts/run
and -t 2 on -t 1 in /etc/sv/osmo-trx/run
3.restart services
sudo sv restart osmo-bts osmo-trx osmo-nitb
12. How to set TRx output power
Runtime output power control is not implemented yet, but you can set the default output power through the EEPROM
Write into UmTRX EEPROM correct value "dcdc_r"
- dcdc_r=0 about 1W of output power.
- dcdc_r=188 about 3W of output power.
Values between 0 and 188 will gradually change output power.
Use
usrp_burn_mb_eeprom
standart utility from Ettus UHD, default path:
/usr/local/lib/uhd/utils/
If this path does not match with your system, run
locate usrp_burn_mb_eeprom
to find it either way clone UHD-Fairwaves
To set dcdc_r in EEPROM:
usrp_burn_mb_eeprom --values "pa_dcdc_r=0"
To check the current EEPROM value:
usrp_burn_mb_eeprom --values "pa_dcdc_r"
To overwrite EEPROM value you can set the environment variable for osmo-trx:
$ UMTRX_PA_DCDC_R=0 osmo-trx -c 2 -s 4
osmo-trx start script is located in /etc/sv/osmo-trx/run
NOTE: Real time output power control is available, see instruction 5.5 BTS Configuration of the software configuration manual
13. Jitter Buffer
Osmo-bts has a fixed 100ms jitter buffer by default. You can change the value "rtp jitter-buffer" in osmo-bts.cfg file stored at etc/osmocom/
Also FreeSWITCH Jitter buffer can be activated