My basic understanding of GPS is that a network of at least four synchronized satellites send messages containing their locations and transmit times (\$A_i, B_i, C_i\$ and \$t_i\$) to an unsynchronized receiver. The receiver can thus calculate four pseudo-ranges which are the actual range plus the fixed clock offset (bias) between the receiver and the satellite network. The four unknowns of receiver location and clock bias (\$x, y, z\$ and \$d\$) are solved for using a system of equations something like this:

$$ (x-A_1)^2+(y-B_1)^2+(z-C_1)^2-(c(t_1-d))^2 =0 \\ (x-A_2)^2+(y-B_2)^2+(z-C_2)^2-(c(t_2-d))^2 =0 \\ (x-A_3)^2+(y-B_3)^2+(z-C_3)^2-(c(t_3-d))^2 =0 \\ (x-A_4)^2+(y-B_4)^2+(z-C_4)^2-(c(t_4-d))^2 =0 $$

Question: How is the clock bias, \$d\$, the same in all four equations?

The receiver clock is of low quality and not only has an offset between itself and the satellite network, but that offset changes with time. For example, if a receiver clock has 20ppm accuracy and satellite transmissions are received 1ms apart, this would introduce an error of 6m to the pseudo-range.

Even if satellites send their messages at the exact same time and the receiver can read them in parallel, the difference in time of flight between close satellites and far satellites is big enough that the receiver clock will drift while waiting for the far messages to arrive.

  • \$\begingroup\$ The GPS receiver is not tracking "messages". All modern receivers have multiple hardware correlator channels. The receiver is using those channels to continuously and simultaneously track the PRN code from each satellite in view -- in parallel and in real time. Ultimately, it is the delay settings of those correlators that provide the \$(t_n - d)\$ values for your equations. \$\endgroup\$
    – Dave Tweed
    Commented Mar 14, 2022 at 4:36
  • \$\begingroup\$ In addition to the correct answers here, I highly doubt that a crystal could reasonably drift by a large amount during that time, unless it was suddenly ignited and the temperature changed by 10s of degrees in 1ms \$\endgroup\$
    – BeB00
    Commented Mar 14, 2022 at 5:42

1 Answer 1


You're not "waiting for messages to arrive" at different times. Measurements are taken continuously (the receiver is synchronizing to the bit transitions at a rate of MHz or better) and all of the measurements used in a given position solution are aligned to a common point in time. With so many timing signals to listen to, the receiver is quite aware of any clock drift it may have (when the clock isn't perfect, it sees all of the pseudoranges increasing or decreasing over time in a way that isn't explainable by geometry) and the firmware can correct for this.

  • \$\begingroup\$ Ok, that makes sense. I had no idea that the receiver could continuously synchronize to the satellite signals. \$\endgroup\$
    – david11
    Commented Mar 14, 2022 at 5:48
  • \$\begingroup\$ @david11 You can think about it as if the receiver was running a PLL for each pair of satellites, keeping two continuous signals synchronized by adjusting the phase shift. That shift is the difference between distances to those two sats. \$\endgroup\$
    – TooTea
    Commented Mar 14, 2022 at 7:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.