Calibrating your DVB-T dongle with R820T(2) chip
First: Installation of RTL-SDR

sudo apt-get update
sudo apt-get install cmake build-essential libusb-1.0-0-dev
cd ~
git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr
mkdir build
cd build
sudo make install
sudo ldconfig

Second: Installation of kalibrate-rlt

cd ~/src
sudo apt-get install libtool autoconf automake libfftw3-dev
git clone https://github.com/asdil12/kalibrate-rtl.git
cd kalibrate-rtl
git checkout arm_memory
sudo make install

Make sure the RTL stick is running for few minutes to let it warm-up. Get a first rough ppm offset estimation with:

rtl_test -p

Use the rough ppm offset as input for Kalibrate-rtl (in this sample +85ppm) and use `kal` to scan for an usable and local GSM frequency band using gain and the rough ppm value. Use 850MHz for America and 900MHz for Europe. Note the added maximum gain value.

kal -s 900 -g 49.6 -e 85

Pick the channel with the highest power value and then run kal with the -c argument to find the absolute ppm offset. Also add the rough ppm offset with the -e argument!

kal -c #ch -g 49.6 -e 85

The rough result from rtl_test was in this case already very close. The ppm offset of this stick at the current temperature is 86ppm.

Tip: For later use it’s a good idea to store the found ppm offset in the eeprom of the stick.
Reboot the device and check with rtl_test to see if the new value is properly stored in the eeprom.

rtl_eeprom -s ppm+86

Enjoy your calibrated SDR receiver!


  1. Erik A. on 09.16.2021

    Apart from a few minor changes to the commands all runs well on Buster. Very good and useful blog!!

  2. Barret on 08.06.2022

    Thank you SO much for this!
    i hope you keep this here, its so useful!

Leave a Reply