V
Visla Hardware
Portal R&D
🛰️ GNSS / GPS ✓ Verified · 2026-06-01 📄 Datasheet R08 (2024) ✓ In stock 🧪 Tested bench ⚡ Low power

MAX-M10S

u-blox
🏭 Chip @ 1k pcs
€6.50
production BOM
🔧 Chip @ 1 pc
€9.95
prototyping JLC
25mW typ tracking!4 GNSS concurrentAntenna SMA esterna

Curiosity

Il workhorse del bench Visla v2: u-blox M10 ultra-low-power (<25mW tracking, ~7.5mA @ 3.3V), connettore SMA per antenna esterna, Super-S technology per fix anche con antenne piccole/compresse. SparkFun breakout (GPS-18037) in bench: Qwiic + backup battery onboard per hot start 1s entro 5h dal power off. Per chi vuole controllo totale dell’antenna (vs SAM-M10Q tutto-in-uno).

Specs tecniche

ParametroValore
Receiveru-blox M10 standard precision GNSS — Professional grade
Doc referenceDatasheet UBX-20035208 R08 (30-Jan-2026) + Product Summary UBX-20017987 R19
Type numberMAX-M10S-00B-01 (Mass Production) o MAX-M10S-00B1-01 (Initial Production newer)
FW versionROM SPG 5.10 (NO Flash, no upgrade)
GradeStandard · Professional · Automotive (AEC-Q104 subset)
QualityIATF 16949 certified production sites
Variant featuresMAX-M10S = + LNA + SAW + TCXO (vs MAX-M10M-00B no LNA/SAW, MAX-M10N has Flash)
GNSS concurrentGPS L1C/A + Galileo E1B/C + GLONASS L1OF + BeiDou B1I/B1C + QZSS L1C/A L1S L1Sb + SBAS L1 C/A
Sensitivity tracking-167 dBm
Sensitivity reacquisition-160 dBm
Sensitivity cold start-148 dBm
Sensitivity hot start-159 dBm
Accuracy CEP horizontal1.5 m
TTFF cold28 s
TTFF aided (AssistNow)1 s
TTFF hot1 s
Update rate GPS+GAL default10 Hz
Update rate GPS+GAL HP20 Hz
Update rate GPS+GAL+BDS B1C default8 Hz
Update rate GPS+GAL+BDS B1C HP16 Hz
Update rate single GNSS HPup to 25 Hz
Power tracking @ 3V (2 GNSS)51 mW (~17 mA)
Power tracking @ 3V (4 GNSS)68 mW (~23 mA)
Power tracking @ 1.8V (2 GNSS)24 mW (~13 mA)
Power tracking @ 1.8V (4 GNSS)31 mW
PSMCT @ 1.8V (2 GNSS)14 mW (~8 mA) — Power Save Cyclic Tracking 1Hz
PSMCT descriptionCyclic tracking riduce consumi ~50% vs continuous
Power supply VCC1.76 V - 3.6 V (compat MCU 1.8V)
Backup supply V_BCKP1.65 V - 3.6 V
EMC2014/53/EU RED + RoHS-3
Operational limits≤4g dynamics · 80,000m altitude · 500 m/s velocity
Velocity accuracy0.05 m/s
Heading accuracy0.3 deg
Time pulse30 ns RMS / 60 ns 99% · 0.25 Hz - 10 MHz config
Interfaces1 UART + 1 DDC (I2C compliant)
Digital I/OConfigurable timepulse + 1 EXTINT input per wakeup
Raw data outputCode phase data (per RTK post-processing)
ProtocolsNMEA 4.11 + UBX binary + RTCM 3.4 (per RTK input!)
Antennaesterna via SMA (NO patch onboard come SAM-M10Q) — Active or Passive
Backup battery (SparkFun board)MS621FE ricaricabile (trickle-charge): hot start 1s entro ~4h · ritenzione config + dati orbitali (BBR) fino a 2 settimane senza alimentazione
Tracking featuresu-blox Super-S · Odometer (user profiles) · Data batching 10min RAM · Protection level 95%
Security signalRF jamming detection + reporting · Spoofing detection + reporting
Security deviceReceiver config lock by command
Secure interfaceSigned UBX SHA-256 · JTAG disabled by default
Eval kitEVK-M101 (u-blox official) + u-center 2 software
ServicesAssistNow · CloudLocate
Package18-pin LCC (Leadless Chip Carrier)
Dimensions9.7 × 10.1 × 2.5 mm · 0.6 g · 500 pcs/reel
Operating temp-40°C / +85°C
Storage temp-40°C / +85°C
Pin-compatibilitydrop-in MAX-M8 / MAX-M9 / MAX-F10S upgrade!
SparkFun boardGPS-18037 · $45.95 · 1.74” × 1.20” · 2× Qwiic + PTH

🧪 Note dal bench Visla

  • SparkFun GPS-18037 plug-and-play su ESP32-S3: cavo Qwiic, library SparkFun_u-blox_GNSS_v3 (usa UBX binary, no NMEA polling)
  • Backup battery onboard: tieni RTC + orbital data vivi per 5h → wake successivi con hot start 1s, risparmi enormi su batteria sistema
  • Super-S RF technology: lock affidabile in city canyon e sotto vegetazione anche con antenne SMA piccole (es. 3cm whip)
  • I2C 0x42 software configurabile: per chain di 2 MAX-M10S su stesso bus usa Qwiic Mux (TCA9548A) oppure cambia indirizzo via UBX
  • UBX-CFG-PMS: PowerSave 1Hz scende a ~6mA dai 7.5mA tracking standard
  • Jumper MEAS per misura corrente: la board SparkFun ha un jumper MEAS (chiuso di default) — tagliandolo e saldando ai PTH puoi inserire un amperometro inline e misurare il consumo reale del modulo senza banco esterno
  • Pin EINT (wake da deep sleep): configurabile via u-center per svegliare il modulo dal backup o generare interrupt — utile per il duty-cycling del Tag (vedi RXM-PMREQ)
  • Pin di controllo: PPS (1Hz su lock + LED), RST (reset pull-low), SAFE (safeboot per FW update, serigrafia sul retro), EINT (interrupt I/O)
  • ⚠️ Antenna SMA esterna obbligatoria: vs SAM-M10Q (patch onboard) ti dà flessibilità ma serve gestire matching/cavo
  • ⚠️ Antenna passiva sufficiente outdoor: antenna attiva (LNA esterno) solo per enclosure metallici o cavo >50cm

⚠️ Gotchas

  • 3.3V only — NON 5V tolerant
  • Senza backup battery, ogni wake costa 24s cold start (vs 1s con battery)
  • I2C address 0x42 fisso senza Mux → max 1 modulo per bus a meno di sw-config
  • Per 18Hz singola GNSS devi aumentare baud (default 9600 NMEA è troppo lento)
  • Library SparkFun_u-blox_GNSS_v3 obbligatoria (v2 non supporta M10) — non confondere
  • UART default SparkFun = 38400 baud (non 9600!); il default u-blox raw è 9600 — verifica il baud del tuo modulo prima di leggere NMEA (al bench Visla il nostro gira a 9600)
  • I2C clock stretching: il MAX-M10S usa clock-stretching sul DDC → la libreria Qwiic Python su Raspberry Pi NON è supportata; anche level-shifter/bus deboli possono inchiodarsi (cfr. lockup I2C sul Thingy). Su UART nessun problema
  • Jumper I2C pull-up (2.2kΩ) aperti di default: se il bus non ha pull-up altrove, vanno chiusi

📊 Consumi — ufficiali (chip) vs misurati Visla (modulo)

📄 Ufficiali u-blox (chip MAX-M10S, datasheet UBX-20035208, @3.0V, LNA low gain, segnale −130 dBm) — valori verificati Table 13/14, totale VCC+V_IO

Stato (configurazione)I_VCCI_V_IOTotale
Acquisizione (picco)25 mA
Acquisizione GPS-only6.52.2~8.7 mA
Acquisizione GPS+GAL+BeiDou10.52.3~12.8 mA
Tracking GPS-only6.02.2~8.2 mA
Tracking GPS+GAL6.02.2~8.2 mA
Tracking GPS+GAL+GLONASS7.02.3~9.3 mA
Tracking GPS+GAL+BeiDou8.02.3~10.3 mA
💤 HW backup (solo V_BCKP)32 µA
💤 HW standby (V_IO on)46 µA
💤 SW standby (RXM-PMREQ)TBD (datasheet)

→ Il “<25mW” pubblicizzato = tracking GPS/GPS+GAL (8.2 mA × 3V = 24.6 mW). Confermato dal datasheet.

🧪 Misurati Visla (modulo SparkFun GPS-18037, DPS-150 @3.3V, 23/06/2026)

StatoMisurato
Tracking multi-GNSS17.9 mA
Tracking GPS-only14.4 mA
PSM cyclic11.5 mA
Backup (RXM-PMREQ)~8 mA

⚠️ Chip vs modulo: ~2× di differenza. Il chip nudo fa ~8-10 mA (datasheet); il modulo SparkFun misurato fa 17.9 mA = chip + ~8-10 mA di overhead board (PWR LED sempre acceso + regolatore + LNA a gain pieno vs “low gain” del datasheet). 👉 Lezione per il PCB Visla: senza il PWR LED e con un regolatore efficiente, il GPS si avvicina agli ~8 mA del chip — non ai 17.9 del breakout. Anche il backup misurato (~8 mA) è quasi tutto overhead board (chip reale 32-46 µA). Dettaglio test →

📡 Set comandi completo (programmazione M10 SPG 5.00)

Il MAX-M10S si programma via 3 protocolli sulla stessa UART/I2C: NMEA (testo, output standard), UBX (binario, controllo completo), config interface (chiavi CFG via UBX-VALSET/VALGET). Totale: 79 UBX + 26 NMEA = 105 messaggi + ~28 gruppi config (centinaia di chiavi). Tutti elencati sotto con descrizione. Fonte: Interface Description M10-FW500 SPG 5.10 (verificato al bench Visla via pyubx2, 23/06/2026 — ACK/VALGET).

🛰️ UBX-NAV (0x01) — navigazione · 24 messaggi

MsgIDDescrizione
NAV-PVT0x07Position + velocity + time (il principale, tutto in uno)
NAV-POSLLH0x02Posizione geodetica (lat/lon/alt)
NAV-POSECEF0x01Posizione in ECEF (X/Y/Z)
NAV-VELNED0x12Velocità in frame NED
NAV-VELECEF0x11Velocità in ECEF
NAV-STATUS0x03Stato navigazione (fix type, flags)
NAV-SAT0x35Info per satellite (CNR, elevazione, azimuth)
NAV-SIG0x43Info per segnale (qualità, correzioni)
NAV-DOP0x04Diluizione di precisione (HDOP/VDOP/PDOP)
NAV-COV0x36Matrici di covarianza (incertezza pos/vel)
NAV-ORB0x34Stato database orbite (effemeridi/almanacco/AOP)
NAV-SBAS0x32Stato correzioni SBAS
NAV-SLAS0x42Stato QZSS L1S SLAS
NAV-ODO0x09Odometro (distanza percorsa)
NAV-RESETODO0x10Reset odometro
NAV-CLOCK0x22Soluzione di clock del ricevitore
NAV-EOE0x61End of epoch (marca fine epoca)
NAV-TIMEGPS0x20Tempo GPS
NAV-TIMEGAL0x25Tempo Galileo
NAV-TIMEGLO0x23Tempo GLONASS
NAV-TIMEBDS0x24Tempo BeiDou
NAV-TIMEQZSS0x27Tempo QZSS
NAV-TIMEUTC0x21Tempo UTC
NAV-TIMELS0x26Info evento leap-second

⚙️ UBX-CFG (0x06) — configurazione · 18 messaggi

MsgIDDescrizione
CFG-VALSET0x8aScrive chiavi di config (RAM/BBR/Flash)
CFG-VALGET0x8bLegge chiavi di config
CFG-VALDEL0x8cCancella chiavi di config
CFG-CFG0x09Clear / save / load configurazione
CFG-RST0x04Reset ricevitore + clear backup (cold/warm/hot)
CFG-PRT0x00Config porte I/O (UART/I2C/SPI, baud)
CFG-MSG0x01Rate di output per singolo messaggio
CFG-RATE0x08Rate di navigazione/misura (1Hz, 10Hz…)
CFG-NAV50x24Motore di navigazione (dynamic model, soglie)
CFG-NAVX50x23Motore di navigazione expert
CFG-GNSS0x3eSelezione costellazioni (GPS/Gal/GLO/BDS)
CFG-NMEA0x17Configurazione estesa protocollo NMEA
CFG-INF0x02Quali messaggi INF emettere per protocollo
CFG-ANT0x13Controllo antenna (supervisor, alimentazione)
CFG-ITFM0x39Monitor jamming/interferenze
CFG-ODO0x1eOdometro + filtro COG a bassa velocità
CFG-DAT0x06Datum geodetico (custom)
CFG-BATCH0x93Configurazione data batching

📶 UBX-MGA (0x13) — A-GNSS / AssistNow · 9 messaggi

MsgIDDescrizione
MGA-GPS0x00Assistenza GPS (effemeridi/almanacco/health/UTC/iono)
MGA-GAL0x02Assistenza Galileo
MGA-GLO0x06Assistenza GLONASS
MGA-BDS0x03Assistenza BeiDou
MGA-QZSS0x05Assistenza QZSS
MGA-ANO0x20AssistNow Offline (orbite a lunga validità)
MGA-INI0x40Aiding iniziale (posizione/tempo/clock/frequenza)
MGA-DBD0x80Dump/restore navigation database
MGA-ACK0x60Acknowledge dei messaggi di assistenza

🔋 UBX-RXM (0x02) · 🩺 UBX-MON (0x0a) · 🔐 UBX-SEC (0x27)

MsgIDDescrizione
RXM-PMREQ0x41Power management request (backup/standby → 46µA)
RXM-MEASX0x14Misure satellitari (locationing/RRLP)
RXM-SFRBX0x13Subframe di navigazione broadcast (raw)
RXM-RLM0x59Galileo SAR return-link message
MON-VER0x04Versione firmware/hardware
MON-HW0x09Stato hardware
MON-HW30x37Stato pin I/O
MON-RF0x38Info catena RF (jamming, AGC, noise)
MON-COMMS0x36Statistiche porte di comunicazione
MON-SPAN0x31Spettro del segnale (analisi banda)
MON-GNSS0x28Selezione GNSS major attiva
MON-RXR0x21Stato ricevitore (sveglio/dorme)
MON-PATCH0x27Patch firmware installate
MON-BATCH0x32Stato buffer data batching
SEC-UNIQID0x03ID univoco del chip

📋 UBX-LOG (0x21) · UBX-INF (0x04) · UBX-ACK (0x05) · UBX-TIM (0x0d) · UBX-UPD (0x09)

MsgIDDescrizione
LOG-BATCH0x11Dati batched (posizioni registrate)
LOG-RETRIEVEBATCH0x10Richiede i dati batched
INF-DEBUG/ERROR/NOTICE/TEST/WARNING0x04/00/02/03/01Output informativo ASCII (5 livelli)
ACK-ACK / ACK-NAK0x01 / 0x00Conferma / rifiuto di un comando
TIM-TM20x03Time mark (timestamp evento esterno)
TIM-TP0x01Time pulse time data
TIM-VRFY0x06Verifica del tempo sorgente
UPD-SOS0x14Save-on-shutdown (backup stato in flash)

📜 NMEA standard (21) + PUBX proprietari (5)

MsgDescrizione
GGAFix data (posizione, n. satelliti, HDOP, quota) — il più usato
RMCRecommended Minimum (pos, velocità, data, status)
GLLLat/long + tempo + status
GNSGNSS fix data (multi-costellazione)
GSADOP + satelliti attivi
GSVSatelliti in vista (CNR per satellite)
VTGCourse over ground + velocità
ZDAData e ora
GSTStatistiche errore pseudorange
GRSResidui di range
GBSSatellite fault detection
GAQ/GBQ/GLQ/GNQ/GPQ/GQQPoll di un messaggio standard (6 query)
DTMDatum reference
VLWDistanza ground/water
TXTTrasmissione testo
RLMReturn link message (Galileo SAR)
PUBX,00 (POSITION)Posizione lat/long proprietaria
PUBX,03 (SVSTATUS)Stato satelliti
PUBX,04 (TIME)Ora del giorno + clock
PUBX,40 (RATE)Set rate di output NMEA
PUBX,41 (CONFIG)Set protocolli e baud rate

🗂️ Gruppi config (CFG-* via VALSET, ~30 → centinaia di chiavi)

CFG-PM (power), CFG-SIGNAL, CFG-RATE, CFG-NAVSPG, CFG-MSGOUT, CFG-ANA (AssistNow), CFG-MOT, CFG-ITFM, CFG-ODO, CFG-SBAS, CFG-QZSS, CFG-TP, CFG-SEC, CFG-TXREADY, CFG-NMEA, CFG-INFMSG, CFG-RINV, CFG-HW, CFG-BATCH, CFG-UART1/I2C/SPI (+INPROT/OUTPROT).

🆚 I 3 GPS u-blox a confronto (bench Visla)

MAX-M10SSAM-M10QDAN-F10N
Chip / bandeM10 · L1M10 · L1F10 · L1+L5 dual-band
Accuracy CEP~1.5 m~1.5 m~1 m (multipath dual-band)
Antennaesterna (SMA)patch 15×15 integratapatch 20×20 integrata + switch esterna
Design RFservezerozero
Posiz. antennalibera (lontano dal modem)fissafissa o esterna
Tracking (VCC datasheet)~7.5 mA (GPS)10 mA (multi)21 mA (multi)
Backup~32–46 µA~32–46 µA~31 µA
FirmwareM10 SPG 5.10 (ROM)M10 SPG 5.10 (ROM)F10 SPG 6.00 (flash, aggiornabile)
ComandiM10 (identici a SAM)M10 (identici a MAX)F10: +NavIC, +NAV-PL, +SEC-SIG, no CFG legacy
NavIC
Prezzo breakout~$46~$51~$70
Quandolow-power + antenna remotaproto rapido / zero RFaccuracy urbano / premium

Verdetto Tag Visla: MAX-M10S = il low-power con antenna piazzabile lontano dal modem LTE (~7.5mA, ma progetti tu l’RF). SAM-M10Q = proto rapido (antenna fissa, ~10mA). DAN-F10N = max precisione dual-band ma 2× consumo (21mA) + costo + GPS L5 ancora pre-operational → overkill per Tag base, senso per fleet/automotive.

🔗 Risorse