LNB drift correction for Es’hail-2 (QO-100)


The oscillator of a standard PLL-LNB is prone to drift. There are three known methods to cure this problem:

  • Modify the LNB and supply an external clock from a GPSDO.

  • Modify the LNB with an internal TCXO.

  • Use the stable signal of a satellite beacon to compensate the drift with a second RTL-SDR and some further hardware.

All three methods use additional hardware.

Since the opening ceremony of QO-100 the band, which is open for amateur radio, is delimited by two beacons. Common SDRs such as the SDRplay RSP1A are able to receive this whole band. Using virtual receivers it is possible to hear one of these beacons and the frequency of interest at the same time, without any further hardware.

With my Anti-Drift Python script it is possible to correct the LNB frequency drift with only one SDR receiver.

Receive setup

With the named quattro LNB the connector L/V is connected to the SDRplay via a 20dB pad. One of the other connectors is connected to a 9V DC power supply. A small coil (10 turns, 3 mm diameter) is added to the DC plus line.

The following diagram shows the basic configuration of the software:

Software setup

The following screenshot shows the setup of SDRuno:

SDRuno fullscreen

On the upper left SDRuno MAIN window I have added a second VRX with the ADD VRX-button. The LO LOCK is activated.

Each window, which is associated with a specific VRX, has 0-00 or 0-01 in the upper right corner, which indicates the number of the VRX. I use VRX0 for the band montoring and VRX1 for the beacon. For VRX1 (beacon) only the AUX SP window is in the foreground. Below this window there is a Windows command line which runs my Anti-Drift Python script.

In the window RX CONTROL of VRX0 the following settings were made under SETT.

VRX0 out

In the window RX CONTROL of VRX1 the following settings were made under SETT.

VRX1 out

The following screenshot shows the setup of com0com, such that the virtual COM ports configured above are available. Note that each virtual COM port line has two different COM ports on each of its two ends.


Virtual Audio Cable runs in its default configuration.

After installation of a plain Python it is necessary to install the following Python libraries in a Windows command line:

pip install numpy
pip install sounddevice
pip install pyserial
pip install simple-pid
pip install keyboard

In the Anti-Drift Python script the used COM-ports and the used virtual audio interface have to be entered in the section set the following parameters according to your needs. The Show-Audio-Devices Python script prints a list of all available audio devices for setup of the virtual_audio_device variable.

When all the configuration above is done, the Anti-Drift Python script could be startet with a double click. Then the frequency of VRX1 (USB, 2800Hz) has to be set to the upper PSK-beacon, so that the beacon is visible in the AUX SP window of VRX1. Then the Anti-Drift Python script should lock on the beacon, wherein the frequency of VRX0 and VRX1 is adjusted in parallel, such that the audio signal of the beacon is always at about 1000 Hz.

To end the script press the ESC key until the next line is printed.


  • 17.02.2019 - v0.1 - initial release

  • 18.02.2019 - v0.12 - optimized controller parameters; bugfixes

Imprint, Privacy Policy