From SpenchWiki
Jump to: navigation, search


Radio Direction Finding (RDF) is the act of locating the position of a transmitter. This can be done in a number of ways, using different hardware configurations depending on the properties of the signal-of-interest and the chosen RDF technique.

This page is based around a presentation I gave on the subject. You are encouraged to watch the video to learn about RDF, and how it can be done (mostly) in the software domain (using Software Defined Radio, such as a USRP). I refer to this as Software Defined Radio Direction Finding (SDRDF).

End result of this project

Traditional Hardware-based RDF

Pseudo-doppler DF setups usually perform the antenna switching, filtering and 'direction finding' all in hardware. Only the AF (Audio Frequency) output of a separate radio is required as input.

Here is a great homebrew example:

There are many others. One common design is known as the Roanoke Doppler.


To learn more about the fundamentals of RDF, please consult the following sources. If you can think of any other helpful ones, please feel free to contact me.

Historical perspective:


This is a presentation I gave on SDRDF for Ruxmon in early 2012 at Google's Sydney HQ:


Finding the direction to the transmitter requires one to measure phase difference of pseudo-doppler signal against a known reference (e.g. 'North'). The pseudo-doppler signal is introduced (superimposed on the demodulated signal) by electronically rotating the antenna array against a reference signal of the same frequency as half the switching rate.

To calculate the phase difference in GNU Radio, please refer to part 5 of my GNU Radio Tutorial series:

Direction is calculated from phase difference between reference signal (blue) and pseudo-doppler signal (green)


Only two items of hardware are required:

  1. an electronic antenna switch
  2. a Software Defined Radio with GPIO

Here, the following has been used:

  1. a non-reflective RF switch (e.g. HMC253)
  2. a USRP with modified firmware to control spare IO lines

The crucial design point is that:

  • the antenna clock must be in lock-step with reference signal on computer

The brilliant thing about SDR is that it allows for same clock source to:

  • switch the antenna array, and
  • control the rate at which the reference signal is generated in software

This is to say: the SDR hardware clock is the same clock that is used as the time reference for the software DSP.


Use at least four antennas, where each one is positioned on the circumference of a circle whose radius should be quite different to that of the wavelength of the signal you plan to listen to (the spacing between adjacent antennas should not exceed one-third of the wavelength)!

I used suction holders to fix my homemade 70cm quater-wave-with-ground-plane antennas to my car roof, but it might be better to use mag(netic) mounts, as this will cause the entire car to be a ground plane. My non-conductive solution still yielded good results though.

IMPORTANT: The antenna feed lines must be exactly the same length!

Antenna Switch

The RF switch can be connected to four antennas in usual configuration.

The active antenna is selected by placing the binary number of the antenna port onto the two least-significant control pins (AB) of the RF swtich. This is equivalent to counting from 0 to 3 in binary using the two control lines.

The control lines need to come from the SDR's GPIO pins, since the switching rate needs to reside in the same clock domain.

RF switch

IMPORTANT: The switch above is NON-reflective. It is better to use a reflective switch that leaves each inactive antenna floating, instead of pulling it down to ground (which is what the non-reflective chip does - apparently this can distort the waveform that reaches the radio). You can accomplish this by using the traditional switching method of using PIN diodes. Despite this, I have found that the non-reflective switch still does the job well.

There are other options for pre-built antenna switches too (e.g. from PicoDopp, which also has many other accessories).


A USRP with a WBX daughterboard is perfect for receiving narrowband FM signals on VHF and UHF. It also allows for easy interfacing to the software DSP layer in GNU Radio.

The only adjustment required is that of re-targetting two of the host- (PC-) controlled GPIO pins on the FPGA for use as the 'counting' control channels connected to the RF switch.

Therefore, following firmware modification, the switching signal will be directly output from the FPGA. As the FPGA is driven by the on-board crystal oscillator, the same clock will be used to time reference sample generation on the host computer. Therefore a software signal source (Signal Source block in GNU Radio) can be used as the reference signal. However, correct direction (orientation) readings will still require reference phase calibration.

Visualising clock signal from USRP FPGA using a DSO Nano


BorDUF showing sampled directions on Open Street Map, compass with current direction measurement, and graph of signal measurements
BorDUF showing sampled directions over a larger area on Open Street Map