How do GPS satellites refresh their clocks

Clock errors are not corrected, they are compensated in two steps.

1. Error determination

The GPS control segment uses reference receivers in well known locations to determine the actual orbital elements and the clock error of space vehicles. The reference for position is the WGS84 reference frame, for time it is the international atomic time. Even the smallest effects like continental drift and relativistic time dilatation are taken into account.

2. Error Compensation

The onboard clock (in fact, the SV Z-Count, see IS-GPS-200 3.3.4) is not tuned, slewed or reset to compensate for the error. Citing IS-GPS, 20.3.4.2:

Each SV operates on its own SV time

Instead, the offset between UTC and this spacecraft's clock ("GPS-Time") is broadcast in the navigation message (see IS-GPS 20.3.3.3.1.8). This does not only include the current offset, but also different forecasts ("fit intervals", 20.3.4.4). Normally, only the highly precise short term forecast is relevant, the others would be used if the control segment is inoperable and no uplink is possible.

Likewise, the position error (deviation from nominal orbit) is left uncorrected (this would deplete precious fuel), but is broadcast to receivers by uploading ephemeris data (orbital elements) to the spacecraft.

Time of flight is no issue for the uplink, as the new fit interval data has already been determined in the previous step.

The actual compensation is then done in the receiver (user segment). It applies corrections when relating the observed signal/code phase of different SV.


Exceptional situations

Sometimes, old spacecraft behave in unexpected ways, for example their clocks begin to drift unpredictably. AGI has a website with performance data of onboard clocks. You can see, that USA-151s clock (sending PRN28) is a little bit shaky and needs frequent compensations.

If a clock goes wild or a powered maneuver makes the SV unusable for navigation the SV sends an "inoperable flag" in its navigation message and is ignored by end users' receivers.


say you have a clock at location A. How do you synchronize it with a clock at location B, which is far away from A?

You can do what NTP does. Roughly speaking,

  • send a request for current time at the moment \$t_0\$
  • the server receives your request at \$t_1\$ and sends you a reply at \$t_2\$
  • receive the reply \$T\$ at the moment \$t_3\$
  • set your time to \$T+\delta\$:

enter image description here

Note that this is not what GPS does because there is no point: satellite second is shorter that Earth's second due to gravity, so it's impossible to keep clocks in sync.


The constellation of GPS satellites is constantly monitored by several fixed ground stations positioned around the globe. These ground stations monitor all the satellites and send correction factors if any drift is detected.

The GPS control segment consists of a global network of ground facilities that track the GPS satellites, monitor their transmissions, perform analyses, and send commands and data to the constellation.

The current operational control segment includes a master control station, an alternate master control station, 11 command and control antennas, and 15 monitoring sites.

Ref: http://www.gps.gov/systems/gps/control/