GNSS Technology Guide

Table of Contents


What is GNSS?

GNSS = Global Navigation Satellite System

A constellation of satellites that provide positioning, navigation, and timing services globally.

Major GNSS Systems

System Country/Region Satellites Coverage
GPS USA 31+ Global
GLONASS Russia 24+ Global
Galileo European Union 30+ Global
BeiDou China 35+ Global
NavIC (IRNSS) India 7 India + 1500km
QZSS Japan 4+ Asia-Pacific region

Core Concepts

GNSS Frequency Bands

Satellites transmit signals on different frequency bands:

Band Frequency Used By Notes
L1 1575.42 MHz GPS, GLONASS, Galileo Primary civilian signal
L2 1227.60 MHz GPS, GLONASS Military/precise applications
L5 1176.45 MHz GPS, Galileo, NavIC Safety-critical applications
S-Band 2492.028 MHz NavIC Regional coverage (India)

NavIC (Navigation with Indian Constellation) developed by ISRO: - Operates on L5 and S-band frequencies - S-band is prone to interference from cellular and WiFi networks - Satellites orbit at ~35,000 km altitude (geostationary) - Signal strength is weaker due to high altitude

NavIC-01 Receiver: - Developed by ISRO - Supports L1, L5, and S-band frequencies - Any L5-capable receiver can receive NavIC signals

GAGAN (Indian SBAS)

GAGAN = GPS Aided Geo Augmented Navigation

  • Satellite-Based Augmentation System (SBAS)
  • Uses geostationary satellites
  • Provides ionospheric corrections
  • Primarily used for aircraft navigation
  • Improves GPS accuracy to ~1-3 meters

SBAS Systems

SBAS = Satellite-Based Augmentation System

Uses geostationary satellites to transmit free correction data to improve GPS accuracy.

Global SBAS Systems

System Region Coverage
GAGAN India India and surrounding regions
WAAS USA North America
EGNOS Europe Europe and North Africa
MSAS Japan Japan and East Asia
SDCM Russia Russia and neighboring countries

How SBAS Works: 1. Ground stations monitor satellite signals 2. Calculate corrections for errors (ionospheric, clock, orbit) 3. Send corrections via geostationary satellites 4. Receivers apply corrections for better accuracy

Typical Accuracy: 1-3 meters (compared to 5-10 meters for standard GPS)


Positioning Technologies

1. Pseudo Random Code

Method: Measures time delay of satellite signals

Characteristics: - ✅ Low cost - ✅ Simple implementation - ✅ Works with basic GPS receivers - ❌ Lower accuracy (5-10 meters) - ❌ Subject to atmospheric errors

Use Cases: - Consumer GPS devices - Smartphones - Car navigation - Fitness trackers

2. Carrier Phase Measurement

Method: Measures phase of carrier wave (not just the code)

Characteristics: - ✅ Very high accuracy (centimeter-level) - ✅ Used in professional surveying - ❌ More expensive - ❌ Requires more processing - ❌ Needs additional correction data

Use Cases: - RTK (Real-Time Kinematic): Live centimeter accuracy - PPK (Post-Processing Kinematic): Process data later for accuracy - Land surveying - Precision agriculture - Autonomous vehicles

Visual Comparison

Pseudo Random Code:
    Measures: [----Code Chips----]
    Accuracy: ~5-10 meters

Carrier Phase:
    Measures: ~~~Wave Cycles~~~
    Accuracy: ~1-2 centimeters

Fix Quality Indicators

GPS receivers report fix quality to indicate positioning accuracy:

Fix Type Value Description Accuracy Use Case
No Fix 0 No satellite lock N/A Searching for satellites
GPS Fix 1 Standard GPS positioning 5-10m Consumer devices
DGPS Fix 2 Differential GPS with corrections 1-3m Marine navigation
RTK Fixed 4 Integer ambiguities resolved 1-2cm Professional surveying
RTK Float 5 Ambiguities not fully resolved 10-50cm Transitioning to RTK Fixed

Understanding RTK

RTK = Real-Time Kinematic

How it works: 1. Base station at known location observes satellite errors 2. Sends corrections to rover (mobile receiver) 3. Rover applies corrections in real-time 4. Achieves centimeter-level accuracy

RTK Fixed vs RTK Float: - Fixed: Integer ambiguities resolved → Best accuracy (1-2cm) - Float: Still calculating → Medium accuracy (10-50cm)


Antenna Types

GPS antenna design affects signal reception quality and frequency support.

Antenna Types Overview

Type Form Factor Frequency Support Pros Cons Use Case
Helical Cylindrical coil Single/multi-band Good gain, compact Directional Handheld devices
Patch Flat rectangular Usually single-band Compact, low profile Lower gain Embedded systems
Ceramic Patch Stacked squares Multi-band Very compact Expensive Compact IoT devices
Dome Flying saucer Multi-band Excellent performance Large size Vehicles, outdoor
Thin Film Ultra-thin Single-band Minimal thickness Limited performance Wearables
Circular Plate Round disk Single/dual-band Omnidirectional Moderate size General purpose
Rod/Whip Vertical stick Single-band Simple, cheap Lower performance Budget devices

Design Considerations

Ceramic Patch Antennas: - Stack size determines frequency - Larger square = lower frequency (L1) - Smaller square = higher frequency (L5) - Multi-stacked = multi-band support

Dome Antennas: - Best for multi-band reception - Ground plane provides better signal - Weather-resistant housing - Magnetic mount available

Taoglas: Excellent collection of GPS antennas in various form factors: - PCB-mounted antennas - Flexible (FPC) antennas - Patch-type antennas - Ceramic antennas - External active antennas


CORS Network

CORS = Continuously Operating Reference Station

What is CORS?

A network of permanent GPS base stations that provide correction data via the internet.

Survey of India CORS Network: - Operates 1500+ stations across India - Provides corrections for weather and GPS - Improves location accuracy to centimeter level - Data transmitted via internet (NTRIP protocol)

How to Use CORS

  1. Access CORS Portal: cors.surveyofindia.gov.in
  2. Get Station Details: Find nearest CORS station
  3. Configure U-Center:
  4. Add CORS IP address
  5. Configure NTRIP client
  6. Enable RTCM3 corrections
  7. Achieve RTK Fixed: Real-time centimeter accuracy

Benefits: - No need for own base station - Access to professional-grade corrections - Wide coverage across India - Free or low-cost access


Communication Protocols

GPS receivers communicate using different protocols:

Protocol Type Speed Use Case
NMEA ASCII text Slow Simple parsing, human-readable
UBX Binary Fast Configuration, high-rate data
RTCM3 Binary Fast RTK corrections

NMEA Protocol

NMEA = National Marine Electronics Association

Text-based protocol using ASCII characters for marine electronics communication.

NMEA Sentence Structure

$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47<CR><LF>
 ││││││└──────┴───────────────────────────────────────────────┴─┘ └──┘
 │││││└─ Data fields (comma-separated)
 ││││└── Sentence type
 │││└─── Talker ID (GP=GPS, GL=GLONASS, GN=Multi)
 ││└──── Start character
 │└───── Checksum (asterisk + 2 hex digits)
 └────── End (Carriage Return + Line Feed)

Sentence Components

Component Description Example
$ Start character Always $
Talker ID Satellite system GP (GPS), GL (GLONASS), GN (Multi-GNSS)
Sentence Type Data type GGA, RMC, GSV, etc.
Data Fields Comma-separated values Position, time, satellites
Checksum Error detection *47 (asterisk + 2 hex)
\<CR>\<LF> Line terminator Carriage return + line feed

Common NMEA Sentences

Type Full Name Contains Update Rate
GGA Global Positioning System Fix Data Position, altitude, time, satellites, fix quality 1Hz typical
RMC Recommended Minimum Navigation Position, speed, date, time, validity 1Hz typical
GSA GPS DOP and Active Satellites Satellite IDs, PDOP, HDOP, VDOP 1Hz
GSV GPS Satellites in View Satellite details, elevation, azimuth, SNR 1Hz
VTG Track Made Good and Ground Speed Speed, heading, mode 1Hz
GLL Geographic Position Latitude and longitude only 1Hz

NMEA Example: GGA Sentence

$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47

Decoded: - 123519: Time = 12:35:19 UTC - 4807.038,N: Latitude = 48°07.038' North - 01131.000,E: Longitude = 11°31.000' East - 1: Fix quality = GPS fix - 08: Number of satellites = 8 - 0.9: Horizontal dilution of precision (HDOP) - 545.4,M: Altitude = 545.4 meters above sea level - 46.9,M: Height of geoid above WGS84 ellipsoid = 46.9m - *47: Checksum

Parsing NMEA Data

Manual Parsing (complex): - Split by commas - Validate checksum - Convert coordinate formats - Handle missing fields

Using Library (recommended):

#include <TinyGPSPlus.h>

TinyGPSPlus gps;

// Library handles:
// ✅ Parsing
// ✅ Checksum validation
// ✅ Data conversion
// ✅ Multiple sentence types

// Easy access:
double lat = gps.location.lat();
double lng = gps.location.lng();
int satellites = gps.satellites.value();

UBX Protocol

UBX = U-Blox proprietary binary protocol

Binary protocol for efficient, high-speed communication with U-Blox GPS modules.

NMEA vs UBX Comparison

NMEA (Text):
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47
└─ 70+ bytes of ASCII text

UBX (Binary):
0xB5 0x62 0x01 0x07 [20 bytes payload]
└─ 20-30 bytes of binary data

Advantage: 50-70% smaller, faster parsing, more data

UBX Message Structure

[SYNC1][SYNC2][CLASS][ID][LENGTH][PAYLOAD][CHECKSUM]
  0xB5  0x62   0x01  0x07  0x0014  [data]   [CK_A][CK_B]
Field Bytes Description
SYNC1 1 Always 0xB5 (181 decimal)
SYNC2 1 Always 0x62 (98 decimal)
CLASS 1 Message category
ID 1 Specific message type
LENGTH 2 Payload length (little-endian)
PAYLOAD Variable Message data
CHECKSUM 2 CK_A and CK_B checksums

UBX Message Classes

Class Hex Category Description
NAV 0x01 Navigation Position, velocity, time
RXM 0x02 Receiver Satellite signal info
INF 0x04 Information Text messages, warnings
ACK 0x05 Acknowledge Command acknowledgment
CFG 0x06 Configuration Module settings
MON 0x0A Monitoring System health, performance
TIM 0x0D Timing Precise timing data
MGA 0x13 Assistance Multi-GNSS assistance data
LOG 0x21 Logging Data logging control
ID Hex Message Name Contains
POSLLH 0x02 Position (Lat, Lon, Height) Latitude, longitude, altitude
STATUS 0x03 Receiver Status Fix type, flags, time to fix
PVT 0x07 Position, Velocity, Time Everything (most used)
TIMEUTC 0x21 UTC Time Date and time
SVINFO 0x30 Satellite Info Signal strength per satellite

Most Useful: NAV-PVT (0x01 0x07)

NAV-PVT = Navigation Position Velocity Time

Contains everything you need in one message: - ✅ Date and time - ✅ Position (lat, lon, altitude) - ✅ Velocity (speed, heading) - ✅ Accuracy estimates - ✅ Number of satellites - ✅ Fix type

Update Rate: Up to 10Hz (10 times per second)


RTCM3 Protocol

RTCM3 = Radio Technical Commission for Maritime Services, Version 3

Binary protocol for transmitting high-precision GPS corrections from base station to rover.

RTK System Architecture

┌─────────────────┐
│  Base Station   │ (Knows exact position)
│  (e.g., ZED-F9P)│
└────────┬────────┘
         │ Observes satellite errors
         ↓
┌─────────────────┐
│ RTCM3 Messages  │
│  (Corrections)  │
└────────┬────────┘
         │ Transmitted via:
         │ • Radio (LoRa, UHF)
         │ • Internet (NTRIP)
         │ • WiFi / Bluetooth
         ↓
┌─────────────────┐
│  Rover/Receiver │ (Mobile GPS)
│  (e.g., ZED-F9P)│
└────────┬────────┘
         │ Applies corrections
         ↓
┌─────────────────┐
│  RTK Fixed      │
│  (1-2cm accuracy)│
└─────────────────┘

RTCM3 Message Structure

[PREAMBLE][RESERVED][LENGTH][MESSAGE DATA][CRC]
   0xD3      6 bits   10 bits  Variable    24 bits
Field Size Description
Preamble 1 byte Always 0xD3 (211 decimal)
Reserved 6 bits Reserved for future use
Length 10 bits Message data length (bytes)
Message Variable Correction data
CRC 3 bytes 24-bit CRC checksum

Common RTCM3 Messages

Message Description Update Rate
1005 Stationary RTK base station position Once/10s
1077 GPS MSM7 (full carrier phase) 1Hz
1087 GLONASS MSM7 1Hz
1097 Galileo MSM7 1Hz
1127 BeiDou MSM7 1Hz
1230 GLONASS code-phase biases 10s

MSM7 = Multiple Signal Message type 7 (highest resolution)

RTK Setup Example

Base Station (ZED-F9P):

1. Place at known location (or perform survey-in)
2. Configure to output RTCM3 messages
3. Transmit via radio/internet

Rover (ZED-F9P):

1. Receive RTCM3 corrections
2. Apply to own measurements
3. Achieve RTK Fixed (1-2cm accuracy)

Typical Range: - Radio: 5-10 km - Internet (NTRIP): Unlimited - CORS network: Up to 50 km from base


U-Center Configuration

U-Center is U-Blox's official software for configuring GPS modules.

Basic Navigation

View → Messages View - Shows all received messages (NMEA, UBX, RTCM3) - Live updates as data arrives - Useful for debugging

Port Configuration (CFG-PRT)

CFG → PRT (Port Configuration)

  1. Select Target Port:
  2. UART1 (Serial 1)
  3. UART2 (Serial 2)
  4. USB
  5. I2C
  6. SPI

  7. Configure Baud Rate (UART):

  8. 9600 bps (default)
  9. 38400 bps
  10. 115200 bps (recommended for high-rate)

  11. Enable Protocols:

  12. UBX (Binary, efficient)
  13. NMEA (Text, compatible)
  14. RTCM3 (For RTK corrections)

Example Configuration

For RTK Rover:

Port: UART1
Baud Rate: 115200
Input Protocols: UBX + NMEA + RTCM3
Output Protocols: UBX + NMEA

For RTK Base:

Port: UART1
Baud Rate: 115200
Input Protocols: UBX + NMEA
Output Protocols: RTCM3 (corrections to rover)

Other Useful Settings

CFG → RATE (Measurement Rate): - Set update frequency (1Hz, 5Hz, 10Hz) - Higher rates need higher baud rate

CFG → NAV5 (Navigation Engine): - Portable (default) - Stationary (for base station) - Automotive, Airborne, etc.

CFG → MSG (Message Configuration): - Enable/disable specific NMEA sentences - Configure UBX message output rates

Save Configuration: - CFG → CFG (Configuration) - Save to: Flash/EEPROM/Battery-backed RAM


Quick Reference

Protocol Comparison

Feature NMEA UBX RTCM3
Format ASCII text Binary Binary
Size Large Small Medium
Speed Slow Fast Fast
Purpose General positioning Configuration + data RTK corrections
Human-readable Yes No No
Max update rate ~5Hz 10Hz+ N/A

Fix Quality Quick Reference

Fix Type Accuracy Best For
GPS Fix 5-10m General navigation
DGPS 1-3m Marine, aviation
RTK Float 10-50cm Transitioning to fixed
RTK Fixed 1-2cm Surveying, agriculture

Frequency Bands

L1 (1575 MHz):  Standard GPS signal
L2 (1227 MHz):  Precise measurements
L5 (1176 MHz):  Safety-critical + NavIC
S-Band (2492 MHz): NavIC regional

Essential Commands (U-Blox)

// Enable NMEA GGA sentence
UBX-CFG-MSG: 0xF0 0x00 (enable)

// Enable UBX NAV-PVT
UBX-CFG-MSG: 0x01 0x07 (enable)

// Set 5Hz update rate
UBX-CFG-RATE: Measurement: 200ms

// Configure RTK mode
UBX-CFG-TMODE3: Survey-in mode

Additional Resources

Happy navigating! 🛰️📍