Repository navigation
M10 with ROM SPG 5.00: GNSS VALSET always NAKed, gps_ublox_use_* settings reset (BDS_B1C_ENA / QZSS_L1S_ENA unknown) #12174
Description
Current Behavior
On a u-blox M10 module running the oldest ROM firmware, SPG 5.00 (PROTVER 34.00), every GNSS configuration INAV sends with configureGNSS10() is rejected with UBX-ACK-NAK, whatever the constellation settings are.
INAV then resets gps_ublox_use_galileo, gps_ublox_use_beidou and gps_ublox_use_glonass to their defaults in RAM. The user sees:
set gps_ublox_use_galileo = ON+saveworks, and the value is still ON right after reboot.- About 20 s later, once the GPS has been configured,
get gps_ublox_useshows OFF again. - The next save of any kind (CLI or Configurator) persists OFF, so the setting "never sticks".
The receiver itself keeps running the set it already has (GPS, Galileo, BeiDou B1I, QZSS, SBAS), so in practice it works, but the constellation settings cannot be controlled from INAV and the Configurator shows the wrong state.
Module tested: Walksnail WS-M181 (M10, IST8310 compass). MON-VER:
swVersion ROM SPG 5.00 (0dbd69)
hwVersion 000A0000
FWVER=SPG 5.00
PROTVER=34.00
GPS;GLO;GAL;BDS
SBAS;QZSS
Root cause
configureGNSS10() always includes two keys that do not exist in SPG 5.00:
CFG-SIGNAL-BDS_B1C_ENA(0x1031000F)CFG-SIGNAL-QZSS_L1S_ENA(0x10310014)
Both are missing from the SPG 5.00 configuration database (UBX-CFG-VALGET for either key alone is also rejected). Since UBX-CFG-VALSET is applied all or nothing, one unknown key makes the receiver NAK the whole message.
Evidence
Tested with gpspassthrough from the CLI and hand built UBX-CFG-VALSET messages, same format as ubloxCfgFillBytes() (version 1, layer RAM, U1 values), with the values INAV sends for sbas = EGNOS, Galileo ON, BeiDou ON, GLONASS OFF.
Each key sent alone:
| Key | ID | Value | Result |
|---|---|---|---|
| SBAS_ENA | 0x10310020 | 1 | ACK |
| SBAS_L1CA_ENA | 0x10310005 | 1 | ACK |
| GAL_ENA | 0x10310021 | 1 | ACK |
| GAL_E1_ENA | 0x10310007 | 1 | ACK |
| BDS_ENA | 0x10310022 | 1 | ACK |
| BDS_B1_ENA | 0x1031000D | 1 | ACK |
| BDS_B1C_ENA | 0x1031000F | 0 | NAK |
| QZSS_ENA | 0x10310024 | 1 | ACK |
| QZSS_L1CA_ENA | 0x10310012 | 1 | ACK |
| QZSS_L1S_ENA | 0x10310014 | 1 | NAK |
| GLO_ENA | 0x10310025 | 0 | ACK |
| GLO_L1_ENA | 0x10310018 | 0 | ACK |
Whole messages:
| Message | Result |
|---|---|
| INAV's exact 12 pairs | NAK |
| Cumulative prefixes of INAV's list | ACK up to BDS_B1_ENA, NAK from BDS_B1C_ENA onwards |
| INAV's list without B1C and L1S (10 pairs), GAL + BDS ON | ACK |
| Same 10 pairs, GAL + BDS OFF | ACK |
Note that BDS_B1C_ENA is rejected even with value 0, so this is an unknown key, not an unsupported signal combination.
Steps to Reproduce
- Connect an M10 module with SPG 5.00 firmware (
statusshowsHW Version: UBLOX10 Proto: 34.00). set gps_ublox_use_galileo = ON,save.- Wait for the GPS to be configured, then
get gps_ublox_use_galileo: it reads OFF.
Expected behavior
The VALSET is accepted and the constellation settings are applied and kept.
Suggested fix
Leave out BDS_B1C_ENA and QZSS_L1S_ENA when the receiver reports PROTVER 34.00 / FWVER=SPG 5.00. INAV already parses both from MON-VER. On SPG 5.00 BeiDou has to use B1I, which means BeiDou and GLONASS cannot run together on these modules.
I have tested this fix on the same module (built on 9.0.1). The VALSET is now ACKed and the module follows the settings:
| Setting | Settings after GPS init | Module (status) |
|---|---|---|
| GAL ON, BDS ON, GLO OFF | kept | Galileo 1, BeiDou 1 |
| GAL ON, BDS OFF, GLO OFF | kept | Galileo 1, BeiDou 0 |
| GAL ON, BDS ON, GLO ON | kept | Galileo 1, BeiDou 0, Glonass 1 |
Without the fix, GAL + BDS ON and GAL ON alone were both NAKed and reset to OFF.
Related: #11965 fixes the same symptom (NAK, then silent reset of the settings) for F10 receivers and for capMaxGnss, but it still always sends these two keys, so it does not cover SPG 5.00.
Versions
- Tested on INAV 9.0.1.
configureGNSS10()is unchanged in 9.1.0, 10.0.0-rc2 and current master, so the problem is the same there.
Activity
gps: send a u-blox receiver only the signal keys its firmware has
MrScothh commentedon Oct 20, 2026
@JesperMorais thanks for the report and the key by key measurements, they made the fix straightforward. #11965 now reads the receiver's CFG-SIGNAL keys with one CFG-VALGET of the whole group before configuring the constellations, and sends only the keys it has: on SPG 5.00 that is the 10 pairs you measured as ACKed. The settings are no longer reset when the receiver refuses something, and
statusprints a line when the receiver runs other constellations than the settings, as it will on your module for BeiDou with Glonass on.I don't have an SPG 5.00 module. Could you try the #11965 build for your board on the WS-M181 and post
statusandget gps_ublox_useonce the GPS is configured, with Galileo and BeiDou on, and with all three on?