How to Calibrate RTL-SDR using Kalibrate-RTL on Linux

YouTube user NeedSec has posted a good tutorial video showing how to use Kalibriate-RTL, a program used to determine the frequency offset error of your RTL-SDR dongle. Every RTL-SDR dongle will have a small frequency error as it is cheaply mass produced and not tested for accuracy.  This frequency error is linear across the spectrum, and can be adjusted in most SDR programs by entering a PPM (parts per million) offset value.

Kalibrate is a Linux program that uses GSM mobile cell phone base stations to determine the PPM offset, by using the GSM signals own frequency correction bursts. See the tutorial video below.

Notify of

Inline Feedbacks
View all comments
David Pickering

Video is private. No, I’m not lowering my security settings.


Hi! I am using kalibrate-hackrf, and I’m unable to make it to work with rtl-sdrt. I’m using a linux distribution in which there are all tools pre-installed. Any suggestion?


Thanks for the information but the link link to the video has been unavailable for a very long time. It would have been helpful to include some rudimentary written instructions. This is a ‘how-to’ after all?


Just a note that this video appears to be no longer available on Youtube. Anybody ever make a copy of it?


In case of ‘librtlsdr’ dependency issue, run following command
sudo apt-get install librtlsdr-dev


i can not see the video it is limited ?!!


Hi, can anybody help me?
If i run “make” i’ll get an error: “make: *** No targets specified and no makefile found. Stop.”
Doesn’t matter if i’m in the kalibrate-rtl or in the kalibrate-rtl/src folder.


Worth mentioning: If you’re in the USA/Canada (or most any other country in the Americas), you’re going to be using GSM-850, and *not* GSM-900 (so use “-s GSM850”)


cd ~/src
sudo apt-get install libtool autoconf automake libfftw3-dev
git clone
cd kalibrate-rtl
sudo make install


thnx a lot 🙂


Thanx kool


So after some trial and error I got Kalibrate to build and install on my RaspberryPi. But when ever I try to do anything with kalibrate I get the following error:

pi@raspberrypi ~/kalibrate-rtl $ kal -s 900
shmat: Invalid argument
terminate called after throwing an instance of 'std::runtime_error'
what(): circular_buffer: shmat
pi@raspberrypi ~/kalibrate-rtl $

Any help would be much appreciated.


When you build the code, use the following commands:

git clone
git checkout arm_memory
cd kalibrate-rtl
sudo make install

This will check out a branch specific for the ARM processor used on the Rapsberry Pi.


after cloning, your next command (git checkout arm_memory) results in
fatal: Not a git repository (or any of the parent directories): .git


So to fix the ARM shared memory error, you have to cd into the kalibrate folder that was previously cloned BEFORE issuing

git checkout arm_memory



kal requires fftw3 and version 3.2 or higher of libusrp. kal also requires a USRP and daughterboards appropriate for the desired GSM frequency band. An external clock is not required; kal can also calculate the offset of the built-in USRP clock.


I thought PPM was Pulse Position Modulation, PPM is mostly about chemistry?


Oh, ok thanks 🙂 I’m pretty new to SDR, do you know a good link where I can find the terminology / jargon?


Ok, thanks, I’ll look into Ham Radio terminology then 🙂