方法
项目:https://github.com/steve-m/kalibrate-rtl
作者并未发布二进制包,故手动编译你需要提前安装gcc,cmake等编译工具。安装完成后,首先从github上把代码clone下来,随后安装需要的依赖。树莓派4B表示这些都能正常通过包管理器安装,但是此前使用NanoPi的时候由于是arm7a架构的原因基本上只能一个个编译,X86和windows未测试。
$ git clone https://github.com/steve-m/kalibrate-rtl.git
$ sudo apt-get install libtool libfftw3-dev
$ cd kalibrate-rtl/src
$ ./bootstrap && CXXFLAGS='-W -Wall -O3' ./configure && make
[...]
$ cd src
此时便会显示工具的帮助,截止到目前基本上都是照搬github项目的介绍,但是接下来在实际运行的时候需要修改一个参数,原因后面会讲到。
$ ./kal -h
kalibrate v0.4.1-rtl, Copyright (c) 2010, Joshua Lackey
modified for use with rtl-sdr devices, Copyright (c) 2012, Steve Markgraf
Usage:
GSM Base Station Scan:
kal <-s band indicator> [options]
Clock Offset Calculation:
kal <-f frequency | -c channel> [options]
Where options are:
-s band to scan (GSM850, GSM-R, GSM900, EGSM, DCS, PCS)
-f frequency of nearby GSM base station
-c channel of nearby GSM base station
-b band indicator (GSM850, GSM-R, GSM900, EGSM, DCS, PCS)
-g gain in dB
-d rtl-sdr device index
-e initial frequency error in ppm
-E manual frequency offset in hz
-v verbose
-D enable debug messages
-h help
随后,执行kal -s 900指令,让其开始寻找GSM900的频段。原文中使用850,然而国内制式不同,故搜索不到频段。
$ ./kal -s 900
Found 1 device(s):
0: Generic RTL2832U OEM
Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Exact sample rate is: 270833.002142 Hz
Enabled direct sampling mode, input 2
kal: Scanning for GSM-900 base stations.
[R82XX] PLL not locked!
Disabled direct sampling mode
GSM-900:
chan: 59 (946.8MHz + 1.353kHz) power: 66514.69
chan: 61 (947.2MHz + 1.428kHz) power: 124025.06
在这里我们看到频道61信号最强,故选择61进行计算。
$ kal -c
Found 1 device(s):
0: Generic RTL2832U OEM
Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Exact sample rate is: 270833.002142 Hz
Enabled direct sampling mode, input 2
[R82XX] PLL not locked!
Disabled direct sampling mode
kal: Calculating clock frequency offset.
Using GSM-900 channel 61 (947.2MHz)
Tuned to 947.200000MHz (reported tuner error: 0Hz)
average [min, max] (range, stddev)
+ 1.453kHz [1403, 1495] (92, 24.815445)
overruns: 0
not found: 60
average absolute error: -1.534 ppm
随后我们就关注到最后一行,平均绝对误差:-1.534ppm。随后将数值填入OpenWebRX的相关参数中。
然而这里的Frequency correction只能填写整数。