Galileo Navigation ICD Reference
G1 Galileo mission uplink reference for the eLTS project.
Source Documents
| Reference |
Document |
Version |
Use |
| AD.36 |
GAL-ICD-GLI-SYST-A-0014 — G1 Ground-to-Space (GMSSSICD) |
Issue 16.5, Oct 2024 |
Primary uplink ICD — C-band frame, Message sub-frame, S-band nav section layouts, G/NAV batch formats, service descriptors |
| AD.37 |
GAL-ICD-ESA-SYST-X-0027 — G1 Galileo SIS ICD |
Issue 2.2, Dec 2018 |
Downlink page structures, timing, CRC, FEC, interleaving for F/NAV, I/NAV, C/NAV, G/NAV |
| AD.52 |
G2 SIS ICD |
Issue 2.5, Feb 2022 |
G2 differences; G2 public G/NAV structure is not available in this document |
| AD.54 |
G2 S-band ICD |
Issue 3.6, Jul 2024 |
G2 S-band; explicitly supports G1G compatibility mode |
| AD.56 |
Galileo Transition Mission Uplink ICD |
Issue 3.4, Oct 2024 |
G1→G2 transition; G2 adds CCSDS AOS/SDLS/LDPC framing |
ICD documents are in ICD_Documents/ (gitignored). G1/G2 comparison summaries are in ICD_Documents/g1_g2_differences/ as markdown files.
Navigation Message Families
F/NAV (E5a-I) — Open Service
| Parameter |
Value |
| Channel |
E5a-I |
| Frame duration |
600 s |
| Sub-frames per frame |
12 |
| Sub-frame duration |
50 s |
| Pages per sub-frame |
5 |
| Page duration |
10 s |
| Sync symbols |
12 |
| Encoded symbols |
488 |
| Total symbols |
500 |
| Page type field |
6 bits |
| Navigation data |
208 bits |
| CRC |
24 bits |
| Tail |
6 bits |
| Total pre-FEC bits |
244 bits (FNAV_PAGE = 238 net without sync) |
Page types: 1 (clock/SISA/ionosphere/BGD), 2-3 (ephemeris), 4 (ephemeris+GST-UTC/GPS), 5-6 (almanac), 63 (dummy).
S-band uplink: 8 nav batch slots × 1000 bits/batch (FNAV_BATCH = BATCH_START + 4 × FNAV_PAGE). 1 almanac slot × 5760 bits.
I/NAV (E5b-I + E1-B) — Open Service / CS
| Parameter |
Value |
| Channels |
E5b-I and E1-B |
| Sub-frame duration |
30 s |
| Pages per sub-frame |
15 pairs |
| Page duration |
2 s per frequency |
| Total symbols per half page |
250 |
| Sync |
10 symbols |
| FEC symbols |
240 |
| Nominal word size |
128 bits (split 112 + 16) |
| CRC |
24 bits |
| Tail |
6 bits |
Word types: 1-4 (clock/ephemeris), 5 (GST/BGD), 6 (GST-UTC), 7-10 (almanac), 11-15 (priority), 16 (reduced CED), 17-20 (RS CED), 0 (spare), 63 (dummy).
G2 additions: OSNMA (replaces EDBS 40-bit field), word types 22, 24 (EWS), 28-32 (NMA), 42-43 (CEFC/IAR).
S-band uplink: 8 nav batch slots × 816 bits/batch (INAV_BATCH = BATCH_START + 6 × INAV_PAGE). 1 almanac slot × 6192 bits.
C/NAV (E6-B) — Commercial Service / HAS
| Parameter |
Value |
| Channel |
E6-B |
| Frame duration |
120 s |
| Sub-frames per frame |
8 |
| Pages per sub-frame |
15 |
| Page duration |
1 s |
| Sync |
16 symbols |
| FEC symbols |
984 |
| Total symbols |
1000 |
| Page type / reserved |
14 bits |
| Payload |
448 bits (encrypted; G1 = Commercial/key data, G2 = HAS) |
| CRC |
24 bits |
| Tail |
6 bits |
C/NAV-0 = dummy. Payload is encrypted — no public sub-field definitions. In G2 the payload becomes a 24-bit HAS Page Header + 424-bit HAS message, but same physical envelope.
G/NAV (E6-A + E1-A) — PRS
| Parameter |
Value |
| Channels |
E6-A and E1-A |
| Frame duration |
360 s |
| Sub-frames per frame |
12 |
| Sub-frame duration |
30 s |
| Pages per sub-frame |
5 |
| Logical page duration |
6 s (six 1 s symbol-page parts) |
| Initial field per 1 s part |
2 symbols (00 = nominal, 11 = PRS alert) |
| Encoded symbols |
108 symbols per 1 s part |
| Total symbols |
660 |
| PRS data |
283 bits (post-encryption, G_NAV_WORD) |
| On-board data |
27 bits |
| PRS region status |
8 bits |
| Tail |
6 bits |
| Total page bits |
324 bits |
| Pre-encryption useful content |
164 bits (_GNAV_PREENC_BITS, GNAV_BIT_SIZE in sbf_config.json) |
G/NAV Page Types (AD.36 §4.2.4.4.4)
| Type |
Name |
Content |
ICD ref |
| G/NAV-1 |
Navigation 1 |
SVID, clock correction, SISA, ionospheric correction, BGD, health, GST |
§4.2.4.4.4.1 |
| G/NAV-2 |
Navigation 2 |
Ephemeris 1/3 |
§4.2.4.4.4.1 |
| G/NAV-3 |
Navigation 3 |
Ephemeris 2/3 |
§4.2.4.4.4.1 |
| G/NAV-4 |
Navigation 4 |
Ephemeris 3/3 |
§4.2.4.4.4.1 |
| G/NAV-5 |
Navigation 5 |
GST-UTC, GST-GPS, TOW |
§4.2.4.4.4.1 |
| G/NAV-6 |
Almanac |
Almanac parameters |
§4.2.4.4.4.2 |
| G/NAV-7/8 |
Priority / Integrity table |
Priority messages; replace G/NAV-9 when available |
§4.2.4.4.4 |
| G/NAV-9 |
PRS |
Continuous PRS data; classified batch internals |
#GMSSSICD-3644 |
Key Requirement IDs (AD.36 GMSSSICD)
These #GMSSSICD-XXXX identifiers appear as code comments throughout the parser:
| ID |
Topic |
#GMSSSICD-3640 |
Up to 9 G/NAV nav batch slots between GNAV_OFFSET and GNAV_ALMANAC_OFFSET |
#GMSSSICD-3644 |
G/NAV-9 PRS batch: 20 slots × 26 G/NAV-9 words; GNAV_PRS_OFFSET = 60456 bits; G_NAV_PRS_BATCH = 7408 bits |
#GMSSSICD-3717 |
G/NAV encryption: all G/NAV messages encrypted before packetisation; pre-enc = 164 bits, post-enc = 283 bits |
#GMSSSICD-3749 |
G/NAV-6 almanac: 8 batch slots (4 SV groups × 2 batches), 9 G/NAV-6 words/slot; G_NAV_ALMANAC_BATCH = 2600 bits |
#GMSSSICD-3752 |
Dummy batch detection: slot 5 is dummy when <5 nav batches available; TOW = all-ones AND WN = all-ones in BATCH_START |
C-Band Uplink Frame (AD.36 §4.2.4)
| Field |
Size |
Role |
| Sync word |
64 bits |
Frame synchronization |
| Integrity sub-frame |
640 transmitted bits (528 data before RS) |
Time-critical: integrity table, EDBS, security, alerts |
| Message sub-frame |
4080 transmitted bits (two 1784-bit fields before RS) |
Non-time-critical: F/NAV, I/NAV, C/NAV, SAR, G/NAV |
| Message security packet |
200 bits |
Authenticates Message sub-frame |
| Idle sequence |
42 bits |
Alternating pair |
Total uplink frame: 4826 bits = 1 second.
Reed-Solomon coding: RS(255,223) per Message sub-frame field (16-error correction), RS(80,66) for Integrity sub-frame (7-error correction).
G1 vs G2 Key Differences (from ICD_Documents/g1_g2_differences/)
| Area |
G1 |
G2 |
| I/NAV authentication field |
40-bit EDBS |
40-bit OSNMA |
| I/NAV new word types |
— |
22 (ARAIM), 24 (EWS), 28-32 (NMA), 42-43 (CEFC/IAR) |
| C-band data link |
Custom 1 s frame with RS |
CCSDS AOS/SDLS/LDPC + G1G compatibility |
| C/NAV payload |
Commercial Service / key management |
HAS (24-bit header + 424-bit message) |
| G/NAV downlink |
Full public G1 structure in AD.37 |
Not public in supplied G2 SIS ICD (AD.52) |
| F/NAV |
Unchanged |
Unchanged |
| C/NAV page envelope |
Same |
Same |
| S-band |
Not in G1 set; G2 explicitly supports G1G degraded nav data |
G2 S-band ICD covers both G1G and G2 modes |
F/NAV is fully identical between G1 and G2. I/NAV sub-frame timing and page shell are the same — only field semantics differ.
Bit Sizes Summary Table
| Nav type |
S-band page/word size |
BATCH_START |
Batch size |
Notes |
| F/NAV |
238 bits (FNAV_PAGE) |
48 bits |
1000 bits |
BATCH_START + 4 × 238 + 8 spare |
| I/NAV |
128 bits (INAV_PAGE) |
48 bits |
816 bits |
BATCH_START + 6 × 128 |
| G/NAV nav |
283 bits (G_NAV_WORD) |
48 bits |
1464 bits |
BATCH_START + 5 × 283 + 1 spare |
| G/NAV almanac |
283 bits (G_NAV_WORD) |
48 bits |
2600 bits |
BATCH_START + 9 × 283 + 5 spare |
| G/NAV PRS |
283 bits (G_NAV_WORD) |
48 bits |
7408 bits |
BATCH_START + 26 × 283 + 2 spare |
All constants are loaded from config/s_band_config.json. Verify with config_manager.get_s_band_config()["bit_length"].
1---2name: galileo-nav-icd3description: Use when working with Galileo navigation message types (F/NAV, I/NAV, C/NAV, G/NAV) — page formats, bit sizes, timing, ICD references, or G1 vs G2 differences. Covers AD.36 (uplink GMSSSICD) and AD.37 (G1 SIS ICD) which are the primary references for this project.4license: project-internal5---67# Galileo Navigation ICD Reference89G1 Galileo mission uplink reference for the eLTS project.1011## Source Documents1213| Reference | Document | Version | Use |14|---|---|---|---|15| **AD.36** | `GAL-ICD-GLI-SYST-A-0014` — G1 Ground-to-Space (GMSSSICD) | Issue 16.5, Oct 2024 | **Primary uplink ICD** — C-band frame, Message sub-frame, S-band nav section layouts, G/NAV batch formats, service descriptors |16| **AD.37** | `GAL-ICD-ESA-SYST-X-0027` — G1 Galileo SIS ICD | Issue 2.2, Dec 2018 | Downlink page structures, timing, CRC, FEC, interleaving for F/NAV, I/NAV, C/NAV, G/NAV |17| AD.52 | G2 SIS ICD | Issue 2.5, Feb 2022 | G2 differences; G2 public G/NAV structure is not available in this document |18| AD.54 | G2 S-band ICD | Issue 3.6, Jul 2024 | G2 S-band; explicitly supports G1G compatibility mode |19| AD.56 | Galileo Transition Mission Uplink ICD | Issue 3.4, Oct 2024 | G1→G2 transition; G2 adds CCSDS AOS/SDLS/LDPC framing |2021ICD documents are in `ICD_Documents/` (gitignored). G1/G2 comparison summaries are in `ICD_Documents/g1_g2_differences/` as markdown files.2223---2425## Navigation Message Families2627### F/NAV (E5a-I) — Open Service2829| Parameter | Value |30|---|---:|31| Channel | E5a-I |32| Frame duration | 600 s |33| Sub-frames per frame | 12 |34| Sub-frame duration | 50 s |35| Pages per sub-frame | 5 |36| Page duration | 10 s |37| Sync symbols | 12 |38| Encoded symbols | 488 |39| Total symbols | 500 |40| Page type field | 6 bits |41| Navigation data | 208 bits |42| CRC | 24 bits |43| Tail | 6 bits |44| Total pre-FEC bits | **244 bits** (`FNAV_PAGE = 238` net without sync) |4546Page types: 1 (clock/SISA/ionosphere/BGD), 2-3 (ephemeris), 4 (ephemeris+GST-UTC/GPS), 5-6 (almanac), 63 (dummy).4748S-band uplink: 8 nav batch slots × 1000 bits/batch (`FNAV_BATCH = BATCH_START + 4 × FNAV_PAGE`). 1 almanac slot × 5760 bits.4950---5152### I/NAV (E5b-I + E1-B) — Open Service / CS5354| Parameter | Value |55|---|---:|56| Channels | E5b-I and E1-B |57| Sub-frame duration | 30 s |58| Pages per sub-frame | 15 pairs |59| Page duration | 2 s per frequency |60| Total symbols per half page | 250 |61| Sync | 10 symbols |62| FEC symbols | 240 |63| Nominal word size | **128 bits** (split 112 + 16) |64| CRC | 24 bits |65| Tail | 6 bits |6667Word types: 1-4 (clock/ephemeris), 5 (GST/BGD), 6 (GST-UTC), 7-10 (almanac), 11-15 (priority), 16 (reduced CED), 17-20 (RS CED), 0 (spare), 63 (dummy).6869G2 additions: OSNMA (replaces EDBS 40-bit field), word types 22, 24 (EWS), 28-32 (NMA), 42-43 (CEFC/IAR).7071S-band uplink: 8 nav batch slots × 816 bits/batch (`INAV_BATCH = BATCH_START + 6 × INAV_PAGE`). 1 almanac slot × 6192 bits.7273---7475### C/NAV (E6-B) — Commercial Service / HAS7677| Parameter | Value |78|---|---:|79| Channel | E6-B |80| Frame duration | 120 s |81| Sub-frames per frame | 8 |82| Pages per sub-frame | 15 |83| Page duration | 1 s |84| Sync | 16 symbols |85| FEC symbols | 984 |86| Total symbols | 1000 |87| Page type / reserved | 14 bits |88| Payload | **448 bits** (encrypted; G1 = Commercial/key data, G2 = HAS) |89| CRC | 24 bits |90| Tail | 6 bits |9192C/NAV-0 = dummy. Payload is encrypted — no public sub-field definitions. In G2 the payload becomes a 24-bit HAS Page Header + 424-bit HAS message, but same physical envelope.9394---9596### G/NAV (E6-A + E1-A) — PRS9798| Parameter | Value |99|---|---:|100| Channels | E6-A and E1-A |101| Frame duration | 360 s |102| Sub-frames per frame | 12 |103| Sub-frame duration | 30 s |104| Pages per sub-frame | 5 |105| Logical page duration | 6 s (six 1 s symbol-page parts) |106| Initial field per 1 s part | 2 symbols (`00` = nominal, `11` = PRS alert) |107| Encoded symbols | 108 symbols per 1 s part |108| Total symbols | 660 |109| PRS data | **283 bits** (post-encryption, `G_NAV_WORD`) |110| On-board data | 27 bits |111| PRS region status | 8 bits |112| Tail | 6 bits |113| Total page bits | 324 bits |114| **Pre-encryption useful content** | **164 bits** (`_GNAV_PREENC_BITS`, `GNAV_BIT_SIZE` in `sbf_config.json`) |115116#### G/NAV Page Types (AD.36 §4.2.4.4.4)117118| Type | Name | Content | ICD ref |119|---|---|---|---|120| G/NAV-1 | Navigation 1 | SVID, clock correction, SISA, ionospheric correction, BGD, health, GST | §4.2.4.4.4.1 |121| G/NAV-2 | Navigation 2 | Ephemeris 1/3 | §4.2.4.4.4.1 |122| G/NAV-3 | Navigation 3 | Ephemeris 2/3 | §4.2.4.4.4.1 |123| G/NAV-4 | Navigation 4 | Ephemeris 3/3 | §4.2.4.4.4.1 |124| G/NAV-5 | Navigation 5 | GST-UTC, GST-GPS, TOW | §4.2.4.4.4.1 |125| G/NAV-6 | Almanac | Almanac parameters | §4.2.4.4.4.2 |126| G/NAV-7/8 | Priority / Integrity table | Priority messages; replace G/NAV-9 when available | §4.2.4.4.4 |127| G/NAV-9 | PRS | Continuous PRS data; classified batch internals | #GMSSSICD-3644 |128129---130131## Key Requirement IDs (AD.36 GMSSSICD)132133These `#GMSSSICD-XXXX` identifiers appear as code comments throughout the parser:134135| ID | Topic |136|---|---|137| `#GMSSSICD-3640` | Up to 9 G/NAV nav batch slots between `GNAV_OFFSET` and `GNAV_ALMANAC_OFFSET` |138| `#GMSSSICD-3644` | G/NAV-9 PRS batch: 20 slots × 26 G/NAV-9 words; `GNAV_PRS_OFFSET = 60456 bits`; `G_NAV_PRS_BATCH = 7408 bits` |139| `#GMSSSICD-3717` | G/NAV encryption: all G/NAV messages encrypted before packetisation; pre-enc = 164 bits, post-enc = 283 bits |140| `#GMSSSICD-3749` | G/NAV-6 almanac: 8 batch slots (4 SV groups × 2 batches), 9 G/NAV-6 words/slot; `G_NAV_ALMANAC_BATCH = 2600 bits` |141| `#GMSSSICD-3752` | Dummy batch detection: slot 5 is dummy when <5 nav batches available; TOW = all-ones AND WN = all-ones in BATCH_START |142143---144145## C-Band Uplink Frame (AD.36 §4.2.4)146147| Field | Size | Role |148|---|---:|---|149| Sync word | 64 bits | Frame synchronization |150| **Integrity sub-frame** | 640 transmitted bits (528 data before RS) | Time-critical: integrity table, EDBS, security, alerts |151| **Message sub-frame** | 4080 transmitted bits (two 1784-bit fields before RS) | Non-time-critical: F/NAV, I/NAV, C/NAV, SAR, G/NAV |152| Message security packet | 200 bits | Authenticates Message sub-frame |153| Idle sequence | 42 bits | Alternating pair |154155Total uplink frame: **4826 bits = 1 second**.156157Reed-Solomon coding: `RS(255,223)` per Message sub-frame field (16-error correction), `RS(80,66)` for Integrity sub-frame (7-error correction).158159---160161## G1 vs G2 Key Differences (from `ICD_Documents/g1_g2_differences/`)162163| Area | G1 | G2 |164|---|---|---|165| I/NAV authentication field | 40-bit EDBS | 40-bit OSNMA |166| I/NAV new word types | — | 22 (ARAIM), 24 (EWS), 28-32 (NMA), 42-43 (CEFC/IAR) |167| C-band data link | Custom 1 s frame with RS | CCSDS AOS/SDLS/LDPC + G1G compatibility |168| C/NAV payload | Commercial Service / key management | HAS (24-bit header + 424-bit message) |169| G/NAV downlink | Full public G1 structure in AD.37 | Not public in supplied G2 SIS ICD (AD.52) |170| F/NAV | Unchanged | Unchanged |171| C/NAV page envelope | Same | Same |172| S-band | Not in G1 set; G2 explicitly supports G1G degraded nav data | G2 S-band ICD covers both G1G and G2 modes |173174F/NAV is **fully identical** between G1 and G2. I/NAV sub-frame timing and page shell are the same — only field semantics differ.175176---177178## Bit Sizes Summary Table179180| Nav type | S-band page/word size | BATCH_START | Batch size | Notes |181|---|---:|---:|---:|---|182| F/NAV | 238 bits (`FNAV_PAGE`) | 48 bits | 1000 bits | BATCH_START + 4 × 238 + 8 spare |183| I/NAV | 128 bits (`INAV_PAGE`) | 48 bits | 816 bits | BATCH_START + 6 × 128 |184| G/NAV nav | 283 bits (`G_NAV_WORD`) | 48 bits | 1464 bits | BATCH_START + 5 × 283 + 1 spare |185| G/NAV almanac | 283 bits (`G_NAV_WORD`) | 48 bits | 2600 bits | BATCH_START + 9 × 283 + 5 spare |186| G/NAV PRS | 283 bits (`G_NAV_WORD`) | 48 bits | 7408 bits | BATCH_START + 26 × 283 + 2 spare |187188All constants are loaded from `config/s_band_config.json`. Verify with `config_manager.get_s_band_config()["bit_length"]`.