Localizing Transmitters to within a few meters with TDOA and RTL-SDR Dongles
Back in August we posted a number of videos from the Software Defined Radio Academy talks held this year in Friedrichshafen, Germany. One of those talks was by Stefan Scholl, DC9ST and titled Introduction and Experiments on Transmitter Localization with TDOA. This was a very interesting talk that showed how Stefan has been using three RTL-SDR + Raspberry Pi setups to locate the almost exact position of various transmitters with time difference of arrival (TDOA) techniques. TDOA works by setting up at least three receivers spread apart by some distance. Due to the speed of radio propagation, the transmitted signal will arrive at each receiver at a different time allowing the physical origin point of the signal to be calculated.
Now over on his blog Stefan has created a very nice writeup of his work with RTL-SDRs and TDOA that is definitely worth a good read. He first explains the basics of how TDOA actually works, and then goes on to explain how his RTL-SDR based system works. He discusses the important challenges such as transferring the raw data, synchronizing the receivers in time and the signal processing required.
He tested the system on various transmitters including a DMR signal at 439 MHz, a mobile phone signal at 922 MHz, an FM signal at 96.9 MHz and an unknown signal at 391 MHz. The results were all extremely accurate, locating transmitters with an accuracy of up to a few meters.
Stefan has also uploaded all his MATLAB code onto GitHub.
TDOA is very similar to MLAT (multi-lateration) we use to locate planes who are not broadcasting their positions through ADSB systems.
https://www.adsbexchange.com/mlat-beta/
I never would have thought these dongles would have that kind of accuracy at 2.4MSps…i.e. one sample every 416ns, during which light travels 124 meters, but I suppose the moving average really helps.
The sampling rate is irelevant when it comes to TDOA and the speed of light. The important requirement is that the time a sample was taken must be able to be determined to within 1 ns (for 30 cm accuracy). So you could sample once a second and still do TDOA, but it would take a hell of a long time to correlate a result!
Higher sampling rates means you can get sufficient data to correlate data from different nodes more quickly.