← Projects
raspberry-pi advanced 1 hr ago ◯ 5 min read

Build a Raspberry Pi TDOA Direction-Finding Array with KerberosSDR

Build time: 1 weekend
Tools needed: Soldering iron, laptop or PC for initial setup, tripod or mast for antenna array, coax crimping tool
Parts List
kerberossdrtdoadirection findingrtl-sdrraspberry piradio direction findingcoherent sdrardf

The site's existing fox hunting guide covers direction-finding the classic way: a directional antenna, an attenuator, and walking a bearing by ear until the signal peaks. That technique works, but it requires you to physically move through the RF field, taking one bearing at a time. Time-difference-of-arrival (TDOA) direction finding takes a completely different approach: four synchronized SDR receivers, spread across a fixed area, capture the same signal simultaneously, and the tiny differences in arrival time between receivers — caused by the different distances each one is from the transmitter — get triangulated into a bearing or even a fixed location, all computed automatically and updated in near real time. This project builds a Raspberry Pi-based coherent SDR array using a KerberosSDR (or equivalent 4-tuner coherent RTL-SDR board) to do exactly that.

How TDOA Direction Finding Actually Works

Radio waves travel at a fixed, known speed, so if a signal reaches one antenna a few nanoseconds before it reaches another a known distance away, that timing difference tells you which direction the signal is coming from relative to that antenna pair. A single pair of receivers gives you a hyperbola of possible transmitter locations; a third and fourth receiver, all phase-coherent with each other, narrow that down to a specific bearing (or, with enough baseline separation and known receiver positions, an actual fix). The critical requirement is phase coherence: all four tuners must share a single clock reference and be phase-calibrated relative to each other, which is exactly what a KerberosSDR-style board provides — it's four RTL-SDR-compatible tuners sharing one reference oscillator on a single USB-connected board, purpose-built for this.

Build Steps

  1. Set up the Raspberry Pi host. A Raspberry Pi 4 or 5 with a 64-bit OS handles the KerberosSDR's processing demands reasonably well for direction-finding work (the heavier signal correlation math benefits from more cores and RAM, so a 4GB+ Pi 5 is the more comfortable choice); install the KerberosSDR software stack (based on the open-source krakenSDR/kerberos DSP software), which handles phase calibration, correlation, and the direction-finding display.
  2. Connect and phase-calibrate the array. With all four antennas connected, run the board's built-in calibration routine using an internal or external reference signal — this measures and corrects for the small phase offsets between tuners that would otherwise corrupt every bearing calculation. Recalibrate whenever you power-cycle the board or change antenna configuration; phase coherence doesn't persist across a reboot.
  3. Arrange the antenna array. Direction finding accuracy depends heavily on antenna spacing relative to the wavelength of your target signal — antennas spaced roughly a half-wavelength to one wavelength apart in a linear or circular arrangement is the standard starting geometry. This means the physical array size scales with frequency: a VHF array (around 150MHz) needs roughly a meter or so of spacing between elements, while a UHF array for the 433-450MHz ham/ISM range can be considerably more compact.
  4. Configure the target frequency and bandwidth. Point the array at a known, steady signal first — a local FM broadcast station or a ham repeater's output — to verify the system produces a stable, correct bearing before trusting it on an unknown or intermittent signal.
  5. Read and interpret the bearing display. The software presents a polar plot showing signal strength by angle; a well-calibrated array on a strong, steady signal produces a sharp, narrow peak at the true bearing, while multipath reflections off buildings or terrain will show up as secondary lobes or a broadened, less confident peak — recognizing the difference between a clean bearing and a multipath-corrupted one is most of the skill in using this reliably.
  6. Move or add a second array position for a fix. A single stationary array gives you a bearing line, not a location. Two bearings from different known locations, or a properly spaced fixed baseline with more sophisticated processing, are what actually let you triangulate to a location rather than just a direction — this is the same principle as classic two-station triangulation, just automated and much faster per reading.

Realistic Uses

This is a genuinely useful tool for licensed amateur radio direction-finding competitions (ARDF/fox hunting at a more advanced technical level than a handheld Yagi), finding a source of interference on your own property or club repeater, tracking a known, legally operating transmitter for engineering or educational purposes, or wildlife telemetry tracking where the collar transmitter's frequency and protocol are known and you have permission to track it. It is not a tool for locating or identifying transmissions you don't have the legal right to investigate — direction-finding capability doesn't change what's legal to monitor or act on, and unauthorized signal tracking or interference with licensed communications carries real legal consequences in most jurisdictions.

Safety and Legal Notes

This build only receives — it transmits nothing — so it carries none of the licensing requirements that come with amateur radio transmission. However, using direction-finding capability to locate or identify specific individuals, private communications, or transmissions outside your legal right to monitor raises real privacy and legal concerns independent of the receive-only nature of the hardware; stick to your own signals, signals you have explicit permission to locate, or clearly public broadcast and amateur radio activity. As with any outdoor RF fieldwork, standard antenna-mast and tripod safety applies — check for overhead power lines before raising any mast, and secure array elements against wind if operating outdoors for extended periods.

A coherent SDR array turns direction finding from a walk-and-listen skill into an instrumented measurement, and it's a legitimate step up for anyone who's outgrown a handheld Yagi and an attenuator for fox hunting or interference tracking. Get the phase calibration and antenna spacing right and the bearing accuracy on a clean signal is genuinely impressive for a few hundred dollars of SDR hardware and a Raspberry Pi; skip those steps and you'll get a plot that looks like a bearing but isn't one you should trust.