利用GSM基站校准RTL-SDR自带的羊角天线

方法

项目: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只能填写整数。