Open BTS Clock Calibration

About Kalibrator

If you don't have expensive laboratory equipment and you want to know accuracy of your USRP clock, you can use an application Kalibrator (Copyright (c) 2009 Joshua Lackey, Alexander Chemeris). Of cource you cannot achieve such precision measurement like with hi-tech lab equipment, but it's enough to find out modest clock calibration errors.

Latest version of Kalibrator today is 0.2 and is available here. Starting from the next update of OpenBTS Kalibrator will be distributed as a part of OpenBTS standard package.

How it works

Kalibrator takes advantage of the existing real networks and their accuracy. So you need to be in range within some operator's BTS. You pass the downlink frequency of the previously scanned ARFCN as a command line parameter for Kalibrator. Using some math Kalibrator can estimate the value of frequency difference between the frequency it tunes USRP to and the frequency of a BTS working in +-200kHz range near that frequency.

Building and running

To build Kalibrator with gnuradio 3.2.2 (ver. 3.1.3 is not currently supported) run 'make' and you will get binary file 'kal' which is ready for use.

Now you need to know which ARFCN is better to use. With any GPRS modem supporting AT commands it is possible to find an ARFCN with the strongest signal. Without such modem, you have to scan whole band by manual iteration through downlink frequencies (it can be inconvenient especially on 1800/1900 band). Search this file for specific downlinks all_gsm_channels_arfcn.txt.

Suitable channels must have at least -70 to -80dBm strenght, else you got to much overruns and the result could be misguiding. That's just good to have more channels to scan to eliminate possible wrong error. There is an example of network scan from GPRS modem (offset values are added manually).
T-Mobile operator
=================
at^moni
Serving Cell I Dedicated channel
chann rs dBm MCC MNC LAC cell NCC BCC PWR RXLev C1 I chann TS timAdv PWR dBm Q ChMod offset
58 53 -57 230 01 4358 719D 2 4 33 -106 48 I Limited Service -2197 Hz

OK

at^monp
chann rs dBm MCC MNC BCC C1 C2 offset
106 45 -65 230 01 7 40 40 -2507 Hz
75 37 -73 230 01 2 32 32 -2367 Hz
28 21 -89 230 01 4 16 16 N/A
80 17 -93 230 01 1 12 12 N/A

OK

Telefonica O2 operator
======================
at^moni
Serving Cell Z I Dedicated channel
chann rs dBm MCC MNC LAC cell NCC BCC PWR RXLev C1 I chann TS timAdv PWR dBm Q ChMod offset
86 59 -51 230 02 04BC 090B 1 3 33 -106 54 I Limited Service -2496 Hz

OK
at^monp
chann rs dBm MCC MNC BCC C1 C2 offset
114 47 -63 230 02 4 42 42 N/A
112 30 -80 230 02 7 25 25 N/A
93 19 -91 230 02 7 14 14 N/A

OK

Here is obvious how the values were obtained.

[openBTS@openBTS kal-0.2]# ./kal -f 946600000 -u
USRP side: B
FPGA clock: 52000000
Decimation: 192
Antenna: RX2
Sample rate: 270833.343750
average [min, max] (range, stddev)
-2197.789062 [-2431, -1843] (588, 146.761444)
overruns: 0
not found: 0

[openBTS@openBTS kal-0.2]# ./kal -f 956200000 -u
USRP side: B
FPGA clock: 52000000
Decimation: 192
Antenna: RX2
Sample rate: 270833.343750
average [min, max] (range, stddev)
-2507.531006 [-2575, -2436] (139, 40.815132)
overruns: 0
not found: 0

[openBTS@openBTS kal-0.2]# ./kal -f 950000000 -u
USRP side: B
FPGA clock: 52000000
Decimation: 192
Antenna: RX2
Sample rate: 270833.343750
average [min, max] (range, stddev)
-2367.053467 [-2431, -2275] (156, 43.972340)
overruns: 0
not found: 0

[openBTS@openBTS kal-0.2]# ./kal -f 952200000 -u
USRP side: B
FPGA clock: 52000000
Decimation: 192
Antenna: RX2
Sample rate: 270833.343750
average [min, max] (range, stddev)
-2496.760254 [-2592, -2375] (217, 61.745182)
overruns: 0
not found: 0

By default RX and side are set to ones used by OpenBTS, so usually you need only one mandatory parameter '-f'. You can use -u is optional parameter for continous display.

... page in progress






注: Open BTS Clock Calibration(原文出处,翻译整理仅供参考!)