RTL SDR-dongle kalibreren

Wanneer een RTL SDR-dongle in combinatie met een grafische SDR-applicatie gebruikt wordt, zal al snel opvallen dat de dongle ‘naast de frequentie staat’. Dat is goed te zien wanneer in het watervaldisplay de piek van het signaal niet op de verwachte plek in het frequentiespectrum staat. Bij het ‘headless’ gebruiken van een dergelijke dongle kan dit tot teleurstelling of frustratie leiden. Want in plaats van de verwachte AIS, ADSB of weersonde-signalen gebeurt helemaal niets.

Hieronder wordt beschreven hoe van een RTL SDR-dongle de afwijking bepaald kan worden. Wanneer de afwijking bekend is, kan deze als correctiefactor in de gebruikte applicatie aangegeven worden. De beschrijving gaat uit van een ‘headless’ toepassing in combinatie met een Linux-systeem. De werkwijze is reproduceerbaar met succes gebruikt met diverse dongles en Raspberry’s.

Zorg in elk geval ervoor dat de dongle aangesloten is, zodat deze onder spanning staat en ‘opwarmt’. Met temperatuurveranderingen verandert ook het frequentieverloop van deze dingen.

Begin met een update van het besturingssysteem

sudo apt-get update && apt-get -y upgrade

Installeer vervolgens de noodzakelijke dependencies voor de kalibratie-applicatie

sudo apt-get -y install librtlsdr-dev librtlsdr0 libfftw3-double3 libfftw3-dev libfftw3-bin

Methode 1

Daarna kan de kalibratie-applicatie gedownload worden

wget https://launchpad.net/~openplotter/+archive/ubuntu/openplotter/+files/kalibrate-rtl_0.4.2.2-stable_armhf.deb

Alternatief kan bovenstaande toepassing hier gedownload worden

wget https://www.pe2kmv.nl/downloads/kalibrate-rtl_0.4.2.2-stable_armhf.deb

Installeer het gedownloade bestand met het commando

sudo dpkg -i kalibrate-rtl_0.4.2.2-stable_armhf.deb

Ga vanaf hier door naar ‘afronden’

Methode 2

Download de broncode

wget https://github.com/hayguen/kalibrate-rtl/archive/master.zip

Pak het gedownloade bestand uit

unzip master.zip && mv kalibrate-rtl-master kalibrate-rtl

Bij gebruik van de Buster-distro moet mogelijk nog e.e.a. aangepast worden! Pas indien nodig het bestand librtlsdr.pc op onderstaande manier aan

sudo cp  /usr/lib/arm-linux-gnueabihf/pkgconfig/librtlsdr.pc /usr/lib/arm-linux-gnueabihf/pkgconfig/librtlsdr_old.pc

sudo nano /usr/lib/arm-linux-gnueabihf/pkgconfig/librtlsdr.pc

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib/arm-linux-gnueabihf
includedir=${prefix}/include

Name: RTL-SDR Library
Description: C Utility Library
Version: 0.6.0
Cflags: -I${includedir}/
Libs: -L${libdir} -lrtlsdr
Libs.private:  -lusb-1.0 

Compileer de broncode

cd kalibrate-rtl
bash bootstrap
bash configure
make
sudo make install

Afronden

Als er geen foutmeldingen op het scherm verschenen zijn, kan de installatie gecheckt worden met

kal -h

Start nu de kalibratie (in die voorbeeld in de 900 MHz GSM-band)

sudo kal -s GSM900

Na enige tijd zullen op het scherm één of meerdere GSM basestations verschijnen

pi@raspberry:~ $ kal -s GSM900
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
[R82XX] PLL not locked!
kal: Scanning for GSM-900 base stations.
GSM-900:
    chan:   71 (949.2MHz - 18.161kHz)    power:   72067.98
...chan 124
Only one channel was found. This is unlikely and may indicate you need to provide a rough estimate of the initial PPM. It can be provided with the '-e' option. Try tuning against a local FM radio or other known frequency first.

Voer nu de kalibratie uit om de afwijking in ppm vast te stellen. In het onderstaande voorbeeld is gekalibreerd op kanaal 71 (van de GSM900-band) zoals uit bovenstaande stap gebleken is

pi@raspberry:~ $ kal -c 71
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
[R82XX] PLL not locked!
kal: Calculating clock frequency offset.
Using GSM-900 channel 71 (949.2MHz)
Tuned to 949.200000MHz (reported tuner error: 0Hz)
average		[min, max]	(range, stddev)
- 16.738kHz		[-17199, -16322]	(877, 257.376648)
overruns: 0
not found: 387
average absolute error: 17.634 ppm

Hieruit blijkt dus dat de gebruikte RTL SDR-dongle een afwijking heeft van 17.634 ppm, welke als correctiefactor gebruikt kan worden.