How GNSS Works: One Equation, Four Satellites, End of the $100,000 Clock

AUTHOR: Zero Jiang | TITLE: Founder, Kalmix | READ: 9 min

TL;DR

  • GNSS receivers calculate position from time. They compare satellite ranging codes with local copies, estimate signal travel time, and convert that timing into distance-like measurements.
  • The key measurement is pseudorange. It contains true satellite distance plus receiver clock bias, atmospheric delay, multipath, and other error terms.
  • Four satellites are the minimum. The receiver solves four unknowns at once: x, y, z, and receiver clock bias.
  • Ephemeris turns timing into coordinates. The receiver needs satellite orbital data before it can solve a valid PVT output.

GNSS works by turning satellite signal travel time into pseudorange measurements, then solving four unknowns — three position coordinates and one receiver clock bias — with signals from at least four satellites.

The entire system runs on one equation: Distance = Speed of Light × Time. Measure how long a radio signal takes to fly from a satellite to your receiver, multiply by 299,792,458 m/s, and you have a distance measurement.

GPS is one satellite constellation. GNSS is the broader category that includes GPS, Galileo, BeiDou, GLONASS, QZSS, NavIC, and other navigation systems. A modern GNSS receiver usually combines several constellations, but the positioning principle remains the same: measure signal timing, compute pseudoranges, and solve a PVT state.

One equation does not mean one easy problem. The satellites carry atomic-clock-class timing hardware worth orders of magnitude more than your phone or embedded receiver's quartz oscillator. A one-microsecond clock error becomes about 300 meters of distance error. The core problem in GNSS positioning is not only measuring time; it is surviving the fact that your receiver clock is not good enough.

The answer involves four satellites and a trick that effectively removes the need for an atomic-clock-class oscillator on the receiver side of the equation. This post walks through how. For signal background, start with GNSS signals and frequencies. For the next layer of centimeter positioning, see how RTK adds corrections to ordinary GNSS.

Need-to-Know Terms

Nine terms recur throughout this article. Skim them now to read the rest without backtracking.

  • GPS vs. GNSS — GPS is one constellation; GNSS is the umbrella term for global and regional satellite navigation systems.
  • One-way ranging — The satellite transmits; the receiver listens. No return path is required.
  • Ranging code — A known pseudo-random digital pattern used to measure signal travel time.
  • Pseudorange — A measured satellite distance contaminated by receiver clock bias and other error sources.
  • Receiver clock bias — The unknown offset between the receiver's oscillator and GNSS system time.
  • Trilateration — Solving for position from measured distances to known points. It is not triangulation.
  • Ephemeris — Precise orbital data used to compute a satellite's position at the time of transmission.
  • TTFF — Time to First Fix: how long the receiver takes to acquire data and output its first usable position.
  • PVT — Position, Velocity, and Time: the solved receiver state that downstream systems read.

The One Equation Behind GNSS Positioning

GNSS is a one-way ranging system. The satellite transmits; the receiver listens. The satellite has no idea you exist — and doesn't need to. Everything reduces to:

Distance = Speed of Light × Signal Flight Time

Two numbers set the stakes for the rest of this article:

  • 1 microsecond of clock error = about 300 meters of distance error. This is your receiver's quartz oscillator on a normal day.
  • 1 nanosecond of clock error = about 30 centimeters of distance error. This is the level where high-precision positioning begins to care deeply about timing.

The equation is simple. The hard part is the measurement: how does the receiver know how long the signal took to arrive? The answer is built into the signal itself.

The receiver workflow is easier to read as a pipeline: first it measures signal timing, then it applies satellite data and clock corrections, and finally it solves a PVT state:

Stage Receiver Input What the Receiver Does Output
Measurement Satellite ranging code and receive time Correlates the received PRN code with a local copy to estimate signal delay Pseudorange for each tracked satellite
Correction Navigation message, satellite clock data, and ephemeris Computes where each satellite was when the signal was transmitted Satellite coordinates and corrected timing inputs
Solution At least four satellite measurements Solves x, y, z, and receiver clock bias as one equation system Position, velocity, and time output

GNSS Signal Layers: Carrier, Ranging Code, and Navigation Message

A GNSS signal is not just a radio tone. It is a layered signal structure designed to let a receiver identify the satellite, measure time delay, and decode the information needed to compute a position.

For practical GNSS positioning, three layers matter most:

  • Carrier — An L-band radio wave, usually in the 1.1–1.6 GHz range, that transports the signal from space to the ground. Its phase is also the measurement layer that later enables carrier-phase RTK.
  • Ranging code — A known pseudo-random noise sequence, often called a PRN code, that acts like a satellite-specific timing pattern. It lets the receiver measure how delayed the received signal is.
  • Navigation message — A low-rate data stream carrying satellite clock correction, ephemeris, health, and other parameters needed for the final PVT solution.

The carrier gets the signal to your antenna. The ranging code gives the receiver a timing ruler. The navigation message tells the receiver what it needs to know about the satellite itself.

Ranging Code: The Satellite's Timing Fingerprint

The ranging code is easy to underestimate because it looks like digital noise. That is the point. Each satellite transmits a known pseudo-random sequence that appears noise-like to everyone else, but is perfectly recognizable to a GNSS receiver that knows the pattern.

The receiver generates the same code internally. It then slides this local copy forward and backward in time until it lines up with the received signal. When the two patterns match, the receiver has found the code delay.

That delay is the core measurement. It tells the receiver how long the signal appears to have been traveling from the satellite to the antenna.

Received satellite code
        ↓ delayed by signal flight time

Local receiver code
        ↓ shifted until correlation peak appears

Code delay × speed of light = measured range

This is why the ranging code matters: it turns an invisible radio wave arriving from space into a measurable time offset. Without the ranging code, the receiver would hear energy at the right frequency, but it would not know which satellite produced it or how long the signal took to arrive.

Code Correlation: Finding the Flight Time

The receiver does not match GNSS signals by reading bits one by one. It computes a correlation function across many possible time shifts, using the known PRN code as a reference pattern.

At the wrong time shift, the match is weak. At the correct shift, the correlation peak rises sharply above the surrounding noise. This matters because GNSS signals are extremely weak by the time they reach the receiver antenna; the code structure lets the receiver pull a coherent timing signal out of noise.

The time shift at the correlation peak is the measured code delay. Multiply that delay by the speed of light, repeat it for every visible satellite, and the receiver holds a set of distance-like measurements: this far from satellite 1, that far from satellite 2, and so on.

Each of those distances comes from the same one equation. But each one is slightly wrong — for a reason we'll get to after we turn distances into a position.

Measurement Takeaway

The fundamental GNSS measurement is a time offset between two copies of a PRN code, multiplied by the speed of light. Understand ranging-code correlation and you understand the physical measurement behind every latitude/longitude output your receiver reports.

Why GNSS Needs Four Satellites

With distances in hand, geometry takes over. The method is called trilateration:

  • One satellite — You are somewhere on a sphere centered on that satellite, with radius equal to the measured distance.
  • Two satellites — Two spheres intersect in a circle. You are somewhere on that ring.
  • Three satellites — Three spheres intersect at a point, or close to one after practical constraints are applied.
GNSS trilateration diagram showing satellite distance spheres intersecting near a receiver position

A terminology trap worth flagging: trilateration is distance-based; triangulation is angle-based. GNSS is trilateration. This distinction shows up in interviews and textbooks alike — and it is often stated incorrectly.

Three satellites, three spheres, one position. Problem solved?

Not quite. If it were, your receiver would not need a fourth satellite — and real GNSS receivers would not keep reporting four, eight, or twenty-plus satellites in the solution.

Pseudorange: Receiver Clock Error Inside the Range Measurement

Here is where the title pays off.

Come back to the one equation: Distance = Speed of Light × Time. Every distance measurement depends on the receiver knowing exactly when the signal arrived. But a consumer-grade or embedded receiver does not carry an atomic clock. Its local oscillator drifts, and that drift contaminates every satellite distance measurement.

Pseudorange

This contaminated distance has a name: pseudorange. "Pseudo" because it is not the true distance — it is the true distance plus a clock-bias term that the receiver cannot directly measure.

There are other errors too: satellite clock residuals, orbital error, ionospheric delay, tropospheric delay, multipath, antenna effects, receiver noise. Those GNSS error sources determine how far a standalone fix can drift. But the receiver clock bias is special because it is common to all satellite measurements at the same instant. Every pseudorange is shifted by the same receiver clock error.

That common-mode property is what makes the whole system work.

Four Unknowns, Four Satellites

Three satellites yield three equations — enough to solve for three spatial coordinates (x, y, z). But now there is a fourth unknown: the receiver clock bias Δt. Four unknowns require four equations. Four equations require four satellites.

√[(x1 − x)2 + (y1 − y)2 + (z1 − z)2] + c · Δt = ρ1
√[(x2 − x)2 + (y2 − y)2 + (z2 − z)2] + c · Δt = ρ2
√[(x3 − x)2 + (y3 − y)2 + (z3 − z)2] + c · Δt = ρ3
√[(x4 − x)2 + (y4 − y)2 + (z4 − z)2] + c · Δt = ρ4

Left side: geometric distance from receiver (x, y, z) to satellite i at known coordinates (xi, yi, zi), plus the clock-bias term c · Δt. Right side: the measured pseudorange ρi.

Four equations. Four unknowns. The receiver solves for x, y, z — and for Δt, the clock error — simultaneously. It does not need to carry an atomic-clock-class oscillator. It turns one extra satellite into a clock correction.

Pro Tip — The Over-Determined System

In practice, a modern receiver tracks far more than four satellites. This over-determined system is solved with least-squares or Kalman-filter-based estimation. More satellites do not automatically mean better accuracy, but they provide redundancy, better geometry, and better resilience when signals are blocked or rejected.

Four-Satellite Takeaway

"Why does GNSS need a minimum of four satellites?" Three coordinates plus one clock bias equals four unknowns. This is the single most important number behind every GNSS position fix.

From Measurements to PVT: Position, Velocity, and Time

Once the receiver has pseudoranges and satellite positions, it solves for a PVT state: Position, Velocity, and Time.

Position is the part people recognize: latitude, longitude, altitude, and the underlying Earth-centered coordinate reference frame. Time is equally important: the receiver aligns its local clock to GNSS system time as part of the same solution.

Velocity is worth separating from position. Many GNSS receivers estimate velocity using Doppler shift on the carrier signal, not just by subtracting one position from the next. That is one reason GNSS velocity can look surprisingly stable even when the absolute position still wanders by meters.

The PVT solution is what eventually shows up in host-facing formats: NMEA sentences, binary protocols, timestamps, speed, course, satellite count, fix quality, and other fields that your system actually reads.

If you are integrating a GNSS receiver into a robot or embedded device, this distinction matters. The receiver does not merely output a coordinate. It outputs the result of a continuously updated estimation problem.

Ephemeris, Almanac, and Time to First Fix

The equation system above requires one more input: the satellite's coordinates (xi, yi, zi) at the moment of transmission. Code correlation tells you how far; ephemeris tells you from where.

These coordinates are calculated in real time from orbital parameters embedded in the navigation message. The navigation message is not optional metadata. Without satellite clock data and ephemeris, the receiver can hear the satellite and measure code delay, but it cannot compute a correct position.

Ephemeris vs. Almanac

Two orbital data products are routinely confused, but they serve different receiver jobs:

  • Almanac — A coarse orbital summary for the entire constellation. It helps the receiver plan satellite searches: "which satellites should I expect above the horizon?" It is valid for weeks and can take about 12.5 minutes to download in full.
  • Ephemeris — Precise orbital parameters for a single satellite. It is required for positioning, is typically valid for 2–4 hours, and takes roughly 30 seconds to download per satellite under good signal conditions.

A widespread misconception is that "GNSS takes 12.5 minutes to start." It does not. That 12.5-minute number refers to the almanac. The ephemeris — what actually blocks your first fix — downloads much faster, but it must be available for enough satellites to solve the position.

TTFF: The Three-State Model

A GNSS receiver's Time to First Fix (TTFF) usually falls into three start states — cold, warm, and hot — depending on whether valid ephemeris, almanac data, time, and approximate position are already available:

Start Type Condition Typical TTFF
Cold Start No almanac, no ephemeris, no reliable time or approximate position 30–60 seconds
Warm Start Almanac available, but ephemeris expired ~25–30 seconds
Hot Start Ephemeris still valid, usually within a few hours 1–3 seconds

Cold start = signal acquisition + at least four satellites each broadcasting enough ephemeris + the first position solve.

Startup Takeaway — The A-GNSS Lifeline

Whether a device cold-starts or hot-starts depends on backup timekeeping, ephemeris cache, and how long the receiver has been powered off. A pure USB-powered GNSS mouse may lose cached state when unplugged.

Assisted GNSS (A-GNSS) reduces TTFF by preloading satellite assistance data such as ephemeris, approximate time, and approximate location over a network connection. For products that power-cycle frequently, A-GNSS can be the difference between a fix in seconds and a cold-start wait.

Broadcast Ephemeris Accuracy

Broadcast ephemeris carries inherent orbital error, which becomes one component of the standalone GNSS error budget. For a public reference on open-sky GPS performance, see the official GPS.gov accuracy specifications. For precise post-processed GNSS orbit and clock products, see the International GNSS Service (IGS) precise products.

This is where the next layer of the stack begins. If you want to understand how uncertainty is expressed in a datasheet, read about GNSS accuracy metrics. If you want to understand how RTK correction data reduces common errors, read RTCM Unpacked.

Pro Tip

Ephemeris expires. If a device sits indoors beyond the validity window and is then moved outdoors, stale or missing ephemeris can degrade accuracy or cause unexpectedly long TTFF. Integration developers should log TTFF separately from steady-state accuracy.

Where RTK GPS Extends Ordinary GNSS

Assemble the pieces: one equation extracts pseudoranges. Ephemeris fixes each satellite's position in space. Four satellites give four equations to solve three coordinates and one clock bias. The receiver can then produce a position, velocity, and time solution.

Standalone GNSS stops there. It estimates position from broadcast satellite signals and local receiver measurements, then reports a meter-level PVT solution when conditions are good. That is enough for maps, timestamps, asset location, and many low-risk workflows.

RTK GPS does not replace this foundation. It extends it. RTK adds correction information from a base or network and uses carrier-phase measurements to reduce common satellite, atmospheric, and clock-related errors. The result can move from meter-level standalone positioning toward centimeter-level relative positioning when signal quality, baseline, antenna placement, and correction age are under control.

For deeper detail, read the full RTK layer. To see how double differences, carrier phase, and integer ambiguity turn that foundation into a centimeter solution, continue to The RTK Trick. This article stays at the upstream layer: how ordinary GNSS produces the coordinate that RTK later refines.

Conclusion: GNSS Is a Clock Problem Disguised as a Map Problem

The clean version of GNSS sounds like geometry: measure distances to satellites and intersect spheres. The engineering version is more interesting. The receiver is really solving a timing problem under noisy radio conditions, using an imperfect local clock, signals that have crossed the ionosphere and atmosphere, and orbital data that expires after a few hours.

Once that layer is clear, the rest of high-precision GNSS becomes easier to understand. DOP is about geometry. Multipath is about corrupted signal paths. NMEA is the text output of the solved PVT state. RTK uses corrections and carrier-phase measurements to refine the same underlying position problem rather than replacing it.

Key Takeaway

Standalone GNSS is the measurement foundation, not the final word on accuracy. It can turn satellite timing into a usable PVT output, but steady field performance still depends on geometry, signal environment, ephemeris freshness, antenna placement, and how the host system handles startup state. RTK, error budgeting, and coordinate-frame management sit on top of this same foundation.

Frequently Asked Questions

How does GNSS work in simple terms?

GNSS works by measuring how long satellite radio signals take to reach the receiver. The receiver compares each received ranging code with a locally generated copy, turns the time shift into a pseudorange, and solves position plus receiver clock bias using at least four satellites.

Why does GNSS need at least four satellites?

GNSS needs at least four satellites because the receiver has four unknowns: x, y, z, and receiver clock bias. Three satellites can constrain position only if the receiver already has a perfectly synchronized clock. The fourth satellite lets the receiver solve clock bias as part of the same equation system.

What is a pseudorange?

A pseudorange is the receiver's measured distance to a satellite before all errors are removed. It includes true geometric distance plus receiver clock bias, satellite clock residuals, atmospheric delay, multipath, antenna effects, and receiver noise. It is called pseudo because it is not yet the true range.

Is GPS the same as GNSS?

No. GPS is the United States satellite navigation constellation. GNSS is the broader category that includes GPS, Galileo, BeiDou, GLONASS, QZSS, NavIC, and other systems. A modern receiver may use multiple GNSS constellations at the same time while still applying the same pseudorange and clock-bias solution principle.

Why does a GNSS position drift even when the receiver is stationary?

A stationary GNSS receiver can still drift because pseudorange measurements keep changing. Satellite geometry changes, atmospheric delay varies, and reflected signal paths can move the estimated range. In standalone mode, these effects can make the calculated position wander by meters even when the antenna is not moving.

Why does my GNSS receiver take 30–60 seconds to get its first fix?

A cold start requires the receiver to acquire satellite signals, download enough ephemeris, estimate time, and solve its first position. Almanac data helps predict visible satellites, but ephemeris is the precise per-satellite orbital data required for positioning. If valid ephemeris and approximate time are already available, a hot start can take only a few seconds.

You Might Also Like

Zero Jiang, Founder of Kalmix

Zero Jiang

Founder, Kalmix

Dedicated to making high-precision GNSS positioning accessible and reliable for global developers. Passionate about autonomous systems, RTK technology, and robust hardware engineering.

Learning GNSS fundamentals? Browse the Handbook, then evaluate hardware once the positioning model is clear.

Back to blog