# TDOA application

**URL:** <https://discourse.myriadrf.org/t/tdoa-application/2216>\
**Category:** RAN Forum\
**Created:** [8 January 2018 13:12 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216 "2018-01-08T13:12:36Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![shao](https://avatars.discourse-cdn.com/v4/letter/s/aeb1de/32.png) [@shao](https://discourse.myriadrf.org/u/shao)\
**Post date:** [8 January 2018 13:12 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/1 "2018-01-08T13:12:36Z")

</div>

I would like to propose a project to find the location of a transmitter using multiple LimeSDR-based receivers.

I actually find someone who did similar projects using rpi3 and rtlsdr. I think if it’s realized by limesdr, it should work better as the frequency offset should be lower.

Is there anyone who’s also interested in this activity?

---

<div class="post-metadata">

**Author:** ![modimo](https://avatars.discourse-cdn.com/v4/letter/m/48db29/32.png) [@modimo](https://discourse.myriadrf.org/u/modimo)\
**Post date:** [8 January 2018 13:31 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/2 "2018-01-08T13:31:18Z")

</div>

I was until I discovered that it is impossible to align RX1 to RX2. Not to mention alignment with pps.  
It seems Lime Microsystems is ignoring this problem for quite a while.  
Its funny that projects like this: [https://www.crowdsupply.com/fairwaves/xtrx](https://www.crowdsupply.com/fairwaves/xtrx) are designed to use 8 LMS7002d to achieve 16x16 MIMO, regardless of the misalignment issue.

---

<div class="post-metadata">

**Author:** ![shao](https://avatars.discourse-cdn.com/v4/letter/s/aeb1de/32.png) [@shao](https://discourse.myriadrf.org/u/shao)\
**Post date:** [8 January 2018 13:37 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/3 "2018-01-08T13:37:18Z")

</div>

I heard about this problem before, so I am now trying to bypass it by using only 1 channel per limesdr.

I am measuring the distance from transmitter to receiver, instead of the angle of arrival.

Are you also looking for location application? I think even if Rx1 and Rx2 are aligned well, a 2-channel device might still not be enough to measure the angle of arrival precisely, maybe 4-channel or 8-channel would be better.

---

<div class="post-metadata">

**Author:** ![modimo](https://avatars.discourse-cdn.com/v4/letter/m/48db29/32.png) [@modimo](https://discourse.myriadrf.org/u/modimo)\
**Post date:** [8 January 2018 13:42 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/4 "2018-01-08T13:42:47Z")

</div>

If your base(distance between receivers) is big enough it might work. ±0.5 sample error is introduced in LimeSDR hardware. So TDOA between two receivers is ±1sample. That gives ±16ns for 60MSps(maximum) that gives 4.8meters. If you have receiving antenna separation of 1km it might work. If 10meters not so much.

---

<div class="post-metadata">

**Author:** ![9a4db](https://yyz2.discourse-cdn.com/flex034/user_avatar/discourse.myriadrf.org/9a4db/32/2675_2.png) [@9a4db](https://discourse.myriadrf.org/u/9a4db)\
**Post date:** [8 January 2018 14:13 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/5 "2018-01-08T14:13:07Z")

</div>

I am working on similar TDOA application,  
but on my side so farr LimeSDR is only acting like “rabbit” (dummy cell base station)  
TDOA is performed by SDRplay RSP1.  
BRG

---

<div class="post-metadata">

**Author:** ![shao](https://avatars.discourse-cdn.com/v4/letter/s/aeb1de/32.png) [@shao](https://discourse.myriadrf.org/u/shao)\
**Post date:** [8 January 2018 14:28 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/6 "2018-01-08T14:28:14Z")

</div>

Thanks for the insight.

I will try to make the distance as big as I can, to see if I could get a good result, but for 1km separation, I might need LTE dongles to send back data…

Do you think the QPCIe board would perform better in the sense of channel alignment? I saw a video on youtube the DOA resolution is much higher on X310 than on B210. So I ordered the QPCIe board because it’s the only 4 channel device I can afford…

There are some people who modified rtlsdr hardware to synchronize them to do DOA, I think their precision is good enough. Will it be possible we do similar thing to the LimeSDR? So we can synchronize the channels outside the chips?

---

<div class="post-metadata">

**Author:** ![shao](https://avatars.discourse-cdn.com/v4/letter/s/aeb1de/32.png) [@shao](https://discourse.myriadrf.org/u/shao)\
**Post date:** [8 January 2018 14:30 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/7 "2018-01-08T14:30:50Z")

</div>

You are using several SDRplay to measure the distance from the LimeSDR to the receivers?

How long is the average distance between them you are working at? I think for large distances, the data acquirement can be difficult. IQ data are too massive to send through commercial LTE network.

---

<div class="post-metadata">

**Author:** ![modimo](https://avatars.discourse-cdn.com/v4/letter/m/48db29/32.png) [@modimo](https://discourse.myriadrf.org/u/modimo)\
**Post date:** [8 January 2018 14:33 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/8 "2018-01-08T14:33:20Z")

</div>

The misalignment is inside LMS7002D chip. So QPCIe is also affected. Of course you can calibrate to common external signal(maybe even GPS) and measure referred to this common source. But this adds extra external hardware and you would need to calibrate each restart.

---

<div class="post-metadata">

**Author:** ![shao](https://avatars.discourse-cdn.com/v4/letter/s/aeb1de/32.png) [@shao](https://discourse.myriadrf.org/u/shao)\
**Post date:** [8 January 2018 14:45 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/9 "2018-01-08T14:45:34Z")

</div>

The xtrx octopack has an onboard GPS oscillator that might be able to solve this problem.

For the case without GPS signal (indoor or for LimeSDR), maybe we can use a common source connected to those 2 rx port every time we power on the device? But they won’t change randomly during the measurement right? This is not very convenient, but I saw similar process written in the documents of the gr-doa repository.

---

<div class="post-metadata">

**Author:** ![shao](https://avatars.discourse-cdn.com/v4/letter/s/aeb1de/32.png) [@shao](https://discourse.myriadrf.org/u/shao)\
**Post date:** [8 January 2018 14:52 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/10 "2018-01-08T14:52:38Z")

</div>

![1](https://yyz2.discourse-cdn.com/flex034/uploads/myriadrf/original/2X/1/1f1450d46e4f1943f20caf2e87befd3219fd0739.jpeg)

This is what I found in the documents of gr-doa using X310.

They used another N210 to do the calibration for X310 before measuring. Does that suggest that X310 also have a similar problem as LimeSDR? So this is common for all multi-channel devices?

---

<div class="post-metadata">

**Author:** ![modimo](https://avatars.discourse-cdn.com/v4/letter/m/48db29/32.png) [@modimo](https://discourse.myriadrf.org/u/modimo)\
**Post date:** [8 January 2018 15:01 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/11 "2018-01-08T15:01:24Z")

</div>

It seems like there are two independent receivers. Probably sampling clock is common. And usually if sampling clock is common then sampling time is the same(not in LimeSDR). If so they only need to correct phase offset of LOs. In Lime however there is time shift(sampling time). Still it can be corrected but external signal needs to be applied. Similar but different offset. In LimeSDR case it could have been mitigated in IC design(maybe it still is possible but no comment from Lime).

---

<div class="post-metadata">

**Author:** ![9a4db](https://yyz2.discourse-cdn.com/flex034/user_avatar/discourse.myriadrf.org/9a4db/32/2675_2.png) [@9a4db](https://discourse.myriadrf.org/u/9a4db)\
**Post date:** [8 January 2018 15:21 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/12 "2018-01-08T15:21:02Z")

</div>

Distance from 300 m and more… at the moment doing TDOA in post processing,  
time markers with GPS…  
Ma application is Search and Rescue on open. Therefore distances of 1 km to 5 km  
with 10 m average errors are acceptable. (must be within GSM 35 km total timing limit)  
Later may go with UrbanSAR and there 4,5 m error is to much.

---

<div class="post-metadata">

**Author:** ![martywittrock](https://yyz2.discourse-cdn.com/flex034/user_avatar/discourse.myriadrf.org/martywittrock/32/66_2.png) [@martywittrock](https://discourse.myriadrf.org/u/martywittrock)\
**Post date:** [8 January 2018 15:47 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/13 "2018-01-08T15:47:49Z")

</div>

@9a4db - Djani,

Is there a work-around on this issue of phase locking the LimeSDR receive and transmit channels? Let me know at your soonest - thanks,

73 de Marty, KN0CK

---

<div class="post-metadata">

**Author:** ![9a4db](https://yyz2.discourse-cdn.com/flex034/user_avatar/discourse.myriadrf.org/9a4db/32/2675_2.png) [@9a4db](https://discourse.myriadrf.org/u/9a4db)\
**Post date:** [8 January 2018 16:09 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/14 "2018-01-08T16:09:38Z")

</div>

@martywittrock  
Marty,  
according to my knowledge, so far no solution to lock phase difference, with Lime.  
Hope in future someone may find some kind of feasible solution.  
In that case one Lime can be used in real time system for non certified TCAS, OGN or FLARM  
traffic advisory in general aviation. Which was one of mine original tasks for LimeSDR.  
73  
Djani

---

<div class="post-metadata">

**Author:** ![shincky](https://avatars.discourse-cdn.com/v4/letter/s/bcef8e/32.png) [@shincky](https://discourse.myriadrf.org/u/shincky)\
**Post date:** [10 January 2018 14:38 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/15 "2018-01-10T14:38:11Z")

</div>

@shao  
I am quite interested in this activity and it ll be excellent if you let me in.  
looking forward to your reply.

---

<div class="post-metadata">

**Author:** ![shincky](https://avatars.discourse-cdn.com/v4/letter/s/bcef8e/32.png) [@shincky](https://discourse.myriadrf.org/u/shincky)\
**Post date:** [10 January 2018 14:41 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/16 "2018-01-10T14:41:49Z")

</div>

@9a4db  
hi!  
i ve find something about timestamp that may be solution for phase diff.  
here is the url you can give a shot:  
[https://github.com/myriadrf/LimeSuite/blob/master/docs/StreamProtocol.pdf](https://github.com/myriadrf/LimeSuite/blob/master/docs/StreamProtocol.pdf)  
and here is the high light point you may go deeper:

 ![image](https://yyz2.discourse-cdn.com/flex034/uploads/myriadrf/original/2X/4/4734f629de1fb8d285f95527642e5cf5a744474a.jpg)

---

<div class="post-metadata">

**Author:** ![shincky](https://avatars.discourse-cdn.com/v4/letter/s/bcef8e/32.png) [@shincky](https://discourse.myriadrf.org/u/shincky)\
**Post date:** [10 January 2018 14:53 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/17 "2018-01-10T14:53:23Z")

</div>

and BTW there is also an example for

> [@martywittrock](#):
>
> receive and transmit channels

@martywittrock  
marty, i have a glimpse of the guide:[lms7\_api\_quick\_start\_guide.pdf](https://raw.githubusercontent.com/myriadrf/LimeSuite/master/docs/lms7_api_quick_start_guide.pdf)(since my exam is just around the corner).  
the guide presents 3 methods about tx&rx, and the last on is:

 ![image](https://yyz2.discourse-cdn.com/flex034/uploads/myriadrf/original/2X/a/a00e7168038f82587610ba585ec9c069915320ce.png)  
hope it work 🙂

---

<div class="post-metadata">

**Author:** ![martywittrock](https://yyz2.discourse-cdn.com/flex034/user_avatar/discourse.myriadrf.org/martywittrock/32/66_2.png) [@martywittrock](https://discourse.myriadrf.org/u/martywittrock)\
**Post date:** [10 January 2018 21:30 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/18 "2018-01-10T21:30:31Z")

</div>

@shincky,

Worth a try from my perspective - please advise us all here on how it works for you if you try it, too.

73 de Marty, KN0CK

---

<div class="post-metadata">

**Author:** ![shao](https://avatars.discourse-cdn.com/v4/letter/s/aeb1de/32.png) [@shao](https://discourse.myriadrf.org/u/shao)\
**Post date:** [11 January 2018 00:14 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/19 "2018-01-11T00:14:54Z")

</div>

Great to hear that. Let’s do this together. 🙂 Please share with us what you found about TDOA with LimeSDR, thanks.

---

<div class="post-metadata">

**Author:** ![shincky](https://avatars.discourse-cdn.com/v4/letter/s/bcef8e/32.png) [@shincky](https://discourse.myriadrf.org/u/shincky)\
**Post date:** [12 January 2018 09:18 UTC](https://discourse.myriadrf.org/t/tdoa-application/2216/20 "2018-01-12T09:18:15Z")

</div>

@martywittrock ,  
I am trying to setup the development environment and test the code.  
Once the code comes into life I will github it and tell you.

[Next page](https://discourse.myriadrf.org/t/tdoa-application/2216.md?page=2)
