I've been looking into how GPS receivers work in terms of signal processing. When a GPS receiver tracks the received signal, it often uses a Costas loop to synchronize the carrier.
How that works with the signal of one satellite makes sense to me. A local carrier gets multiplied with the incoming signal and the resulting phase error between the two can be extracted to tune the frequency and phase of the local carrier until they match and the phase error becomes zero.
With GPS, the receiver usually receives at least 4 different signals from different satellites though. They all experience slightly different doppler shifts, so that the receiver "sees" them at different frequencies.
Using a Costas loop on this mix of signals means the phase error never really reaches zero, because even if the local carrier perfectly matches one of the signals, the phase discriminator will pick up the remaining phase errors against all the other received satellite signals.
How does the Costas loop of a GPS receiver get around that?
Is the loop filter supposed to filter these other phase error sources out? Aren't these other phase errors all similar, so that a filter couldn't differentiate between them?