Kalibrate-rtl is a program that can scan for GSM base stations and use them to calculate the local oscillator frequency offset (ppm error) of an RTL2832 USB dongle.
I finally got this to build after a lot of trial and error with MSYS/MinGW. As often, not that complicated, just a case of building the libraries and configuring paths correctly. Also, there was a dependency on the POSIX library librt, which doesn’t exist in MinGW.
Download here: kalibrate-rtl windows 32 bit build 05/06/2015
Run like this:
kal.exe -g 35 -s EGSM
-g sets the gain. 35 is probably a good choice
-s tells kalibrate-rtl to scan for mobile base stations. Band can be GSM850, GSM-R, GSM900, EGSM, DCS, PCS
Once you’ve found a channel, run kal.exe again like this:
kal.exe -g 35 -c 117
Again, -g is the gain. -c is the number of the channel you want to use for calibration. After a few seconds you should have a ppm figure for your dongle:
I recommend using the dongle normally for half an hour or so before trying to calibrate, as the ppm figure will change as the dongle warms up. It should stabilise after a while.
Here I obtained 39.4 ppm, very close to my previous manually estimated figure of 40 ppm, only much quicker to obtain.
For rtl_433/rtl-sdr builds see my previous post