# Practical Use of Starlink Downlink Tones for Positioning
## 3 Tones Frequencies Aggregation
Subtracting the measurement (3) from the prediction (4), then dividing the result by \(\Delta F\) yields:  
\[\frac{\widetilde{f}^{k}_{t}-\widehat{f}^{k}}{\Delta F}\approx\frac{f_{rx}-f^{ k}_{sv}+f^{k}_{Tr}-f^{k}_{\Delta T}-f^{k}_{O}-f^{k}_{u}+\eta^{k}}{\Delta F}+N \tag{9}\]  
If the contribution sum of all the errors is smaller than \(\Delta F  
It appears that the user clock drift, the user time error, and the satellite and user's position errors are major contributors that affect the estimation of \(N\). Note that a larger value of the user clock drift (for instance 2 ppm) leads to an error in the estimation of N, which is common to the tones, and as such is not actually an issue in Doppler-based positioning as it will be captured by the user clock drift state. In case (10) is satisfied, the frequency shift of each tone of the \(k\)th-satellite, \(\widetilde{f^{k}}\), can be carried around \(Fo\) according to:  
\[\widetilde{f}^{k}\cong\left(f^{k}_{doppler}+f_{rx}-f^{k}_{sv}+f^{k}_{Tr} \right)\times\left(1+\frac{N\times\Delta F}{Fo}\right)+N\times\Delta F+\eta^{k} \tag{2}\]0  
where \(\widetilde{f^{k}_{o,N}}\) is the measured tone frequency shift after the removal of the 44 kHz integer shift. The predicted Doppler frequency \(\widehat{f^{k}}\) of the \(k\)th-satellite is computed using (5) based on the user's approximate location and velocity, the time of measurement, and the approximate satellite orbit on the day of collection (TLE files). Substituting (2) and (11) in (12) gives:  
\[\widetilde{f}^{k}\cong\left(f^{k}_{doppler}+f_{rx}-f^{k}_{sv}+f^{k}_{Tr} \right)\times\left(1+\frac{N\times\Delta F}{Fo}\right)+N\times\Delta F+\eta^{k} \tag{2}\]1  
Then at each epoch, the frequency measurements of the tracked tones of the \(k\)th-satellite are converted around \(Fo\) before being averaged according to  
\[\widetilde{f}^{k}\cong\left(f^{k}_{doppler}+f_{rx}-f^{k}_{sv}+f^{k}_{Tr} \right)\times\left(1+\frac{N\times\Delta F}{Fo}\right)+N\times\Delta F+\eta^{k} \tag{2}\]2  
This leads to the traditional single carrier frequency shift measurement model for the \(k\)th-satellite:  
\[\widetilde{f}^{k}\cong\left(f^{k}_{doppler}+f_{rx}-f^{k}_{sv}+f^{k}_{Tr} \right)\times\left(1+\frac{N\times\Delta F}{Fo}\right)+N\times\Delta F+\eta^{k} \tag{2}\]3  
\(n^{k}\) is the noise of the aggregated frequency shift. Applied to the multi-tones frequencies given in Figure 8, this aggregation process leads to the results in \[\widetilde{f}^{k}\cong\left(f^{k}_{doppler}+f_{rx}-f^{k}_{sv}+f^{k}_{Tr} \right)\times\left(1+\frac{N\times\Delta F}{Fo}\right)+N\times\Delta F+\eta^{k} \tag{2}\]4 As it can be seen, assumption (10) has been mostly met except for a few points. Since the tones' frequency spacing, 44 kHz, is larger than the tracking loop bandwidth (100 Hz), the tones' measurement noises are not correlated. Thus, for a given satellite, at times when there are measurements of more than one tone, the aggregation reduces the measurement noise by averaging. In addition, the tone aggregation fills in the measurement gaps of individual tones in degraded-like conditions of a Ku band signal received without a parabolic reflector. \begin{table}
\begin{tabular}{c c c} \hline
**Frequency Error Source** & **Assumption** & **Frequency Error** \\ \hline Receiver clock drift & 1 ppm & 11.345 kHz \\ \hline Satellite clock drift & 0.01 ppm & 0.11345 kHz \\ \hline Troposphere & Elevation mask \(<25^{\circ}\) & \(<\)a few Hz \\ \hline Time error & \(\Delta T=1\) s, \(\widehat{f^{k}}<5\) kHz/s & \(<\)5 kHz \\ \hline Satellite and user position & \(\|r-r^{k}\|=400\) km & \\ errors & \(\|r-r^{k}\|=6.5\) km/s & \(<\)6.2 kHz \\ \(\|Ar-\Delta r^{k}\|=10\) km & \\ \hline Satellite and user velocity & \(\|\Delta v-\Delta v^{k}\|<5\) m/s & \(<\)150 Hz \\ errors & 24–36 dB-Hz & \(<\)10 Hz \\ \hline Noise & 24–36 dB-Hz & \(<\)10 Hz \\ \hline \end{tabular}
\end{table} 
Table 2: An example of the frequency error budget. Note that this model also applies if the tones are not centered exactly on _Fo_.