September 17, 2018

Real-Time Decoding of VOR using RTL-SDR

Real-Time Decoding of VOR using RTL-SDR


VHF Omnidirectional Range (VOR) is a subset of Aircraft Navigation technique falling under point source navigation, which also includes Direction Finders, DME, and Tacan. These technologies predate 1996 and many of the civilian and military aircraft are equipped with these systems, which makes them popular even in the modern era. The adoption of VOR came from the adoption of VHF for voice communications and by 1946, it became a US standard for aircraft navigation. Later it was adopted by International Civil Aviation Organization (ICAO) as an international standard. VOR operates in the frequency band which ranges from 108-118 MHz, with a channel spacing of 100 KHz. But with the advancement in the low-selectivity of the aircraft receivers, the channel capacity was doubled by reducing the channel spacing to 50 KHz. The signal used by VOR consist of a fixed 30 Hz reference tone which is frequency modulated and radiated by the ground station as an omnidirectional signal. Along with this the ground station also radiates a cardioid pattern which is rotating at 30 rotations per second, to make it appear as a 30 Hz sine wave source. Further, the VOR station transmits its IDentity code amplitude modulated at 1020 Hz. Therefore, using the VHF band prevents the signal from traveling beyond the horizon and make it more consistent. However, the operational characteristics of the system are limited by propagation effect (terrain characteristics and vertical pattern effects) and aircraft’s instrument error in measuring the phase difference between the two 30 Hz signals. The VOR receiver consists of an amplitude demodulator to detect the 30 Hz tone and another frequency demodulator to extract the 30 Hz reference tone. They are then compared to extract the Phasor information. The phase angle is marked relative to 0 degrees Magnetic North. These were previously done with analog circuits, and the result was shown to the pilot using mechanically driven meters. These parts need to be of high quality to minimize the phase measurement error, as mentioned previously. With the advancement of technology and introduction of high-speed A/D converters and Digital Signal Processors, the phase measurement accuracy has improved.

Software Defined Radio (SDR) is the most modern addition to the Digital Signal Processing. It is a technology, whereby some or all of the physical layer functions are software defined. The term physical layer is not limited to OSI layers for Network architecture but is extendable to the realization of any physical radio architecture. SDR architecture is composed of an RF frontend which converts the RF frequency spectrum into a baseband spectrum. This is passed to a High-Speed ADC which digitizes the baseband samples and passes it to the DSP software implemented on the computer. The DSP software processes these RF baseband data to extract the physical data contained in it. In this paper, the DSP software logic will extract the phase angle at a particular location oriented along a specific azimuth from the visible VOR ground station, in Real-Time, using RTL-SDR. A similar work had been previously done in the articles, whose links are mentioned below:

But this work will independently establish the flow graph, and extract the phase information and plot them in degrees, for easy readability.

VHF Omnidirectional Navigation

VHF Omnidirectional Range (VOR) is a point source based navigation standard mandated by ICAO, which predates the period of GPS based navigation technologies. It takes advantage of the line of sight propagation characteristics of VHF frequency spectrum to provide guidance to aircraft approaching a specific Airport, during landing or take-off. Aircraft obtains an Equivalent Position, using the VOR and other DME systems, under all-weather conditions. While NDB transmits non-directional signal, but the VOR signal has directional information.

VOR operates on the principle that the bearing angle is obtained by phase measurement, obtained by comparing the phase difference between a phase changing signals to the omnidirectional signal. For the pilot, VOR produces radials, which are numbered from 1 to 360 degrees. The radial of 360 degrees, is marked as magnetic north. The current radial is obtained from the phase measurement.

VOR transmits in the VHF band of 108.0 to 117.95 MHz The spacing frequencies are 108, 108.25, 108.4, 108.45 up to 111.8 and 118.5 MHz, which provides 40 VOR channels. The channel 108-112 MHz also allows 40 more channels for ILS to coexist alongside VOR. However, 120 more channels are available in the frequency range of 112-117.85 MHz, with a frequency spacing of 50 KHz.

All VOR stations transmit a Station Identifier (3-character) Morse code at 1020 Hz subcarrier frequency, at a rate of 6 times per minute. The exception to this is when VOR is coupled with DME or Broadcast VOR. The Broadcast VOR carries secondary information via a voice channel. If the station identifier is TST, then the station is under test or is being calibrated, which makes it unavailable for navigation.

The typical transmission power of VOR ground station ranges from 50 to 100 W. A terminal VOR radiates VOR signal with 50 W power and is usable by the aircraft at a range of 185 km approximately. However, an en route VOR transmits a 200 W radiation which is receivable by an aircraft at an approximate range of 370 km. Although the receivable range for VOR is appreciably high, the practical range is limited by electromagnetic line of sight and terrain characteristics in the neighborhood of the VOR ground station.

There are two types of VOR in use:

  1. Conventional VOR (CVOR)
  2. Doppler VOR (DVOR)

Conventional VOR (CVOR)

Conventional VOR (CVOR) is composed of 2 signals. A 30 Hz REF (Reference) Signal is transmitted using Frequency Modulation at 9960 Hz subcarrier, which is transmitted using an omnidirectional antenna, whose polar plot is a circle. Another 30 Hz, VAR (phase rotating signal) is transmitted via amplitude modulation over the VOR carrier, which is transmitted using two opposing loop antennas (Alfred Loop) producing a figure-of-eight polar plot. When VAR and ROT signals are mixed, then the resulting polar plot is a cardioid called limacon, which does not have any null positions. A 4-antenna element CVOR generator is shown below:

The receiver splits the received signal into fixed REF signal and a rotating VAR signal, having 30 Hz frequency. The phase difference between these two signals are measured using phase comparators, and plot on the radial.

The main disadvantage of CVOR is the inaccuracies introduced by the obstacles along the direction of the electromagnetic waves. The obstacles cause the phase of VAR signal to change due to the reflection from the obstacle, which results in the inaccuracies.

Doppler VOR (DVOR)

Doppler VOR (DVOR) is more accurate than CVOR and overcomes the limitation introduced by terrain. The DVOR system works using the principle of the Doppler shift which affects electromagnetic waves. Although the system is newer than the CVOR system, the existing VOR receivers are compatible with the DVOR.

The DVOR system increases its range of serviceability, even across terrain obstacles, by removing the rotational radiation pattern and uses a set of non-directional antennas to replace the existing pairs of two directional antennas, to eliminate the distortion due to multiple directions spreading. The DVOR beacons broadcast at the same band of frequencies allocated for the conventional VOR systems, and retain compatibility with the existing system.

In contrast to the conventional VOR, the DVOR uses 32 non-directional antennas set on a circle with one antenna in the middle. The non-directional antenna in the middle emits sinusoidal 30 Hz REF tone, which is frequency modulated on the 9960 Hz subcarrier. Frequency modulation of 30 Hz takes place by rotating the antenna in a place where the signal is received. The antenna rotation is done electronically switching the antennas lying on a circle. The electronic switching is done using a switching signal generator, which switches the antenna in an anticlockwise manner, while the DVOR radiation pattern rotates in clockwise direction, which ensures compatibility between DVOR and conventional VOR equipment. The demodulated phase shift is displayed around the radial. The diagrammatic representation of the DVOR transmitter is shown below (Thales DVOR 432):

In DVOR, two opposing antennas radiates phase opposing signals from diametrically opposite antenna. The spectrum emitted by one of the antennae is 9960 Hz about the VOR frequency while the opposite antenna emits a 180-degree phase opposite signal, however, shifted by -9960 Hz about the VOR frequency. Therefore, when one antenna reaches the positive peak, the other will reach the negative peak. The antennas are switched, such that the receiver antenna sees the 9960 Hz subcarrier is frequency modulated at a rate of 30 Hz. Since the FM frequency deviation is 480 Hz, the radius of the circle mounting the antenna is:

DVOR Signal Spectrum

VOR Receiver Design

The DVOR receiver design is compatible with the CVOR receiver design, hence, they are interoperable. The received signal is passed through an amplitude demodulator and the demodulated signal is split along two paths. Along one path the 30 Hz tone is obtained using a low pass filter. The other part is passed through a band-pass filter centered at 9960 Hz subcarrier frequency. The FM spectrum around 9960 Hz is demodulated using FM demodulator which again contains another 30 Hz tone. The two 30 Hz tone are compared using a phase comparator, to extract the relative phase difference. This phase difference is the azimuth angle between the receiver antenna and the VOR ground station. A basic schematic for the VOR receiver is shown in the figure below.

Before explaining the GNU-Radio Signal processing flow graph, let us take a look at the spectrum at the various section of the receiver diagram. First, the received VOR spectrum at the input of the receiver is shown in the figure below:

After passing this RF signal through the digital AM demodulator, the one-sided demodulated spectrum is shown in the figure below:

This signal is split along two paths. The signal in the first passed through a low pass filter, which contains the unmodulated 30 Hz tone, whose spectrum is shown in the figure:

The second part of the signal is passed through a band-pass filter which is centered at 9960 Hz, the corresponding spectrum is:

This signal is demodulated using Frequency Demodulator, the output of which contains another 30 Hz tone. This spectrum is shown in the figure below:

The two 30 Hz tones are phase compared to obtain the bearing angle at a particular location of the receiver.

GNU-Radio Flowgraph

GNU-Radio is a real-time signal processing software which is popular among hobbyist and researcher. The VOR signal processing flow graph starts with the RTL-SDR, running at a high Sample Rate, providing the data and processing it to a smaller Sample Rate.

The RTLSDR source block is shown in the left. The RTL-SDR source is driven at a sample rate of 2.048 MSPS and tuned to the VOR frequency of the local VOR ground station. The receiver gain is set at 38 dBm. The output is decimated by a polyphase decimator to a sample rate of 32 K. The decimator also includes a low pass filter which filters the spectrum to keep only 16 KHz of received spectrum. The filter specification is coded as:

firdes.low_pass(1, samp_rate*64,16e3,200e3)

samp_rate = 32 K

Then for AM demodulation via envelope detection method is used. Here, the input complex envelope is taken as the input and the magnitude of the envelope is obtained. This is the output of the Complex to Mag block, therefore, performs AM demodulation and the data is delivered to remaining part of the flow graph using the DataSource virtual sink. The advantage of this process is that the envelope demodulation using Complex to Mag block, will mitigate any additional phase shift that may be introduced due to either the RTLSDR or Polyphase decimator.

The above figure shows the section of the flow graph which extracts the complex amplitude and phase of the 30 Hz REF signal. The Goertzel Filter is an optimized version of DFT which is used for detection of tone in a signal. The Goertzel filter used here, will detect the complex value of the 30 Hz tone and send it to the REF30 virtual sink.

This figure (above), represents the processing flow gram for the FM modulated VAR tone, which appears at 9960 Hz sub-band. The real signal obtained from the DataSource virtual source is first converted to Complex IQ signal using Hilbert (Filter) Block. This output of the Hilbert transformer is applied to Frequency Xlating FFT Filter. The Frequency Xlating Filter first down-converts the band-pass signal at 9960 Hz down to base-band across 0 Hz, which is then filtered using a low pass filter with an approximate allowed bandwidth of the FM peak deviation. The complex signal is next demodulated using commercial FM demodulator block, which is done in GNU-Radio using WBFM Receive block. The output of the WBFM Receive block is a real signal contains 30 Hz VAR tone. This information about the 30 Hz VAR tone is obtained using the output Goertzel block.

At this stage of the signal processing algorithm, complex information about both REF and VAR signals are available.

To obtain the Phasor information, the complex REF signal is multiplied by the complex conjugate of the VAR signal. Then to reduce the statistical influence of noise on the product, integrate and dump block is used, which outputs 1 data every 8 input data. The resultant complex signal is transported out of GNU-Radio (Python) to a VORViewer application, written using C#.

Check this video

VORViewer Application

The VOR Viewer application is a Microsoft .NET based application which imports the data exported by GNU-Radio VOR signal processing flow graph. The application requires a GNSS Device (USB GPS Dongle) to be connected which transmits the data to it over a serial port. The data is typically is in NMEA-0183 format. The GNSS signal is used to calibrate the decoded VOR signal compass, to mitigate the effect of any phase delay that may occur during decoding. Once the GNU-Radio flow graph starts execution, and the GNSS Serial adapter is properly connected, this software will start showing the VOR data over radial compass, in real time.

Whenever this program is executed, it will start with the settings which are available in the accompanying initialization file, as shown in the image below:

Further, during the application shutdown, the updated data are saved to this initialization file so that they can be efficiently called up when required. It should be noted, that if the VOR signal is properly receivable and there are fluctuations in the reading shown by the application, then you must wait until the calibration is properly done. The calibration process takes GNSS reading and high quality of VOR signal to self-adjust. The calibration process is internally stopped whenever the signal quality is below a certain threshold determined from the standard deviation (or variance) or a certain number of data sample, dictated by the settings (initialization) file. The reading will stabilize once the proper calibration is done.

Further, at every running instance, the application creates a LOG file in CSV format, which notes each and every displayed text: Date and Time, GNSS bearing, VOR signal state information, and Calibration data. This file can be used to trace the path and not VOR signal details. A sample image is shown below:

A sample setup for the connection is shown below:

The VOR Viewer software uses greater circle (Haversine) algorithm to calculate distance and azimuth between two points. However, Sodanos and Vincenty algorithms could be used for better accuracy.

The figure below shows the bearing between VOR transmitters at

HAL Bangalore, with location Latitude: 12.9368068, Longitude: 77.7000773


the receiver location at Latitude: 12.9369008, Longitude: 77.7004792

Morse code for Station Identifier

VOR ground stations transmit a 3 character Morse code at a rate of 7 wpm, which can identify the station uniquely. The code is modulated at 1020 Hz sub-band (+/- 50 Hz), and amplitude modulated along with other signals.

This signal can be demodulated and plot or played by first passing the VOR demodulated signal through a narrow band-pass filter centered at 1020 Hz. This will clean the Morse IDent and isolate it by attenuating other signals. The flow graph to plot the Morse code and to play the Morse code is shown below:

For HAL Bangalore, the station identifier is BBG, the plot of which is shown in the figure below:

The Morse code is audible and a sample audio is uploaded to the GITHUB link. The audio spectrum plot from Adobe Audition is shown below (taken from the recorded sample wave file):

Check this video

Source Code

The flow graph, as well as the VORViewer software, can be downloaded from the GITHUB Link:

Limitations and Constraints

1: The signal is received on a high rise building and signal fluctuations can’t be avoided. Another calibration point we have chosen is

which is a restaurant on Barton Centre,13th Floor, MG Road, Bangalore.

2: The antenna for the experiment is an omnidirectional ground plane type or rubber ducky/whip (145 Mhz). However, a yagi antenna or any horizontal antenna could have been more optimal. However, if we carry across a yagi antenna across the street for calibration it would alarm many people.


[1] M. Kayton, W. R. Fried, Avionics Navigation Systems, 2nd ed., Wiley, 1997, pp. 99–123.
[2] A. B. Navylov, J. Watson, Aerospace Navigation Systems, Wiley, 2016, pp. 148–149.
[3] E. Grayver, Implementing Software Defined Radio, Springer, 2013, pp. (DOI: 10.1007/978-1-4419-9332-8)
[4] Receiving VOR Radio Navigation with an RTLSDR and GNU-Radio (
[5] Showing what VOR and ILS signal looks like in SDR# (
[6] Decoding Aviation VOR and ILS Signals with RTL-SDR (
[7] Decoding and Plotting VOR signals with an RTL-SDR: Part 4 (
[8] Civil Aviation Requirements, Section-8: Aircraft Operations, Series ’C’,Part-I, Issue I, Dated: June 13, 2011 and Rev. 10, Dated April 01,2017,DGCA (India) (
[9] Civil Aviation Requirements, Section-4: Aerodrome Standards & Air Traffic Services, Series ’D’, Part II, Dated: July 12, 2006 (
[10] A. Helfrick, Principles of Avionics, 7th Ed., Avionics Communications Inc., USA, 2012, pp. 43–45
[11] World Aero Data (Bangalore) (
[12] M.G. Arthur, D. Halford, C.H. Manney Jr., VOR Navigation SystemMeasurements, Final Report, Task-1, (NBSIR 73-340), National Bureau of Standards, Nov. 1973, pp. 11–16 (
[13] R. Yates, R. Lyons, ”DC Blocker Algorithms”, IEEE Signal Processing Magazine, March, 2008 (DOI:

[14] M. Krchnak, P. Kurdel, J. Luban, “Simulator of DVOR Navigation System”, Acta Avonica (2015) (ISSN: 1339-9853 Online)

[15] In depth study of the VOR signals (part 1)

Leave a Reply

Your email address will not be published. Required fields are marked *