Tutorial: How to calculate PPM error of your RTL-SDR device base on GSM freq around you

Who is this tutorial for? For those who are not satisfied with their observation results because the center frequency on waterfall is not exactly in the middle

this tutorial running on linux

install dependency
sudo apt-get install libtool libfftw3-dev

copy source code
git clone https://github.com/steve-m/kalibrate-rtl

compile app

cd kalibrate-rtl
./bootstrap && CXXFLAGS='-W -Wall -O3' ./configure && make

run app

./src/kal -h
./src/kal -s GSM900

select the freq channel from above result that you want use as base freq

in this example , i use channel 78

./src/kal -c 78 -v

Found 1 device(s):
  0:  Generic RTL2832U OEM

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R828D tuner
RTL-SDR Blog V4 Detected
Exact sample rate is: 270833.002142 Hz
kal: Calculating clock frequency offset.
Using GSM-900 channel 78 (950.6MHz)
Tuned to 950.600000MHz (reported tuner error: 0Hz)
	offset   1: 877.36
	offset   2: 865.99
...
wait until show the result:
....
	offset 100: 872.19
average		[min, max]	(range, stddev)
+ 788Hz		[864, 834]	(70, 17.906439)
overruns: 0
not found: 0
average absolute error: -0.829 ppm

(ppm calculation formula = offset value in Hz / reference frequency in Hz * 1e6 = ppm)

result: -0.829 ppm

put inside variable of your satnogs station:
SATNOGS_PPM_ERROR=-0.829

you can view the result on obs metadata:

3 Likes

This is a great tutorial, there is only one remark, the PPM value can only be an integer when using an RTL-SDR so the value should be rounded to in his example SATNOGS_PPM_ERROR=-1

As an alternative there is also a rtl_test -p10 command to measure the PPM error ([-p[seconds] enable PPM error measurement (default: 10 seconds)])

Jan | PE0SAT

5 Likes