Protocol Overview
Technical reference for the NMEA 0183, PAIR, PQTM, and RTCM3 protocols as implemented by the Quectel LC29H GNSS module family. Protocol constants and internal identifiers are sourced from QNMEA.dll decompilation and the Quectel LC29H GNSS Protocol Specification V1.1.
Applies to: LC29H(AA), LC29H(BA), LC29H(CA), LC29H(DA), LC29H(BS)
NMEA Sentence Format
Section titled “NMEA Sentence Format”Every NMEA 0183 sentence follows this wire format:
$TTSSS,field1,field2,...,fieldN*XX\r\n| Component | Bytes | Description |
|---|---|---|
$ | 1 | Start delimiter (0x24) |
TT | 2 | Talker ID |
SSS | 3 | Sentence ID (e.g. GGA, RMC) |
, | 1 each | Field separator (0x2C) |
* | 1 | Checksum delimiter (0x2A) |
XX | 2 | Checksum as uppercase hex |
\r\n | 2 | Line terminator (0x0D 0x0A) |
Protocol Constants
Section titled “Protocol Constants”From QNMEA.dll decompilation:
| Constant | Value | Notes |
|---|---|---|
TALKERID_LEN | 2 | Characters before sentence ID |
SENTENCEID_LEN | 3 | Characters after talker ID |
CHECKSUM_LEN | 2 | Hex digits after * |
MIN_NMEA_LEN | 12 | Shortest valid sentence |
MAX_NMEA_LEN | 82 | Longest valid sentence (NMEA spec limit) |
Checksum Calculation
Section titled “Checksum Calculation”The checksum is the XOR of every byte between $ and *, exclusive of both delimiters:
checksum = 0for each byte between '$' and '*': checksum = checksum XOR byteformat as "%02X"Example — $GNRMC,010555.000,A,2232.4682,N,11404.6748,E,0.00,125.29,230822,,,D*71:
XOR all bytes in GNRMC,010555.000,A,2232.4682,N,11404.6748,E,0.00,125.29,230822,,,D yields 0x71.
Coordinate Encoding
Section titled “Coordinate Encoding”| Field | Format | Example | Decimal |
|---|---|---|---|
| Latitude | DDMM.MMMMM | 2232.4682 | 22 + 32.4682/60 = 22.54114 |
| Longitude | DDDMM.MMMMM | 11404.6748 | 114 + 04.6748/60 = 114.07791 |
Hemisphere indicators N/S and E/W follow the numeric field. South and West are negative in decimal degrees.
Talker IDs
Section titled “Talker IDs”The LC29H actively uses a subset of 24 registered talker IDs depending on which constellations are enabled.
| Talker ID | System | Notes |
|---|---|---|
GP | GPS (USA) | L1 C/A, L5 |
GL | GLONASS (Russia) | L1 |
GA | Galileo (EU) | E1, E5a |
GB | BeiDou (China) | B1I, B2a (preferred BeiDou talker) |
BD | BeiDou (China) | Alternate BeiDou talker ID |
QZ | QZSS (Japan) | L1 C/A, L5 |
GN | Multi-GNSS combined | Used when fix includes multiple constellations |
GI | NavIC / IRNSS (India) | Registered but not tracked by LC29H |
PQ | Proprietary Quectel | Used in $PQ prefixed proprietary sentences |
Primary talker IDs in output: GP, GL, GA, GB, QZ, and GN.
Sentence ID Index
Section titled “Sentence ID Index”From QNMEA.dll, sentence types are assigned numeric indices used by PAIR062 (set output rate) and PAIR063 (query output rate).
| Index | Sentence | Full Name |
|---|---|---|
| 0 | GGA | Global Positioning System Fix Data |
| 1 | GLL | Geographic Position — Latitude/Longitude |
| 2 | GSA | GNSS DOP and Active Satellites |
| 3 | GSV | GNSS Satellites in View |
| 4 | RMC | Recommended Minimum Specific GNSS Data |
| 5 | VTG | Course Over Ground and Ground Speed |
| 6 | ZDA | Time and Date |
| 7 | GRS | GNSS Range Residuals |
| 8 | GST | GNSS Pseudorange Error Statistics |
Proprietary Sentence Prefixes
Section titled “Proprietary Sentence Prefixes”PAIR — Quectel/MediaTek Proprietary Commands
Section titled “PAIR — Quectel/MediaTek Proprietary Commands”$PAIR<NNN>,<param1>,<param2>,...*XX\r\n| ID Range | Category | Examples |
|---|---|---|
| 001 | ACK/NACK | Response to all PAIR set commands |
| 003–007 | System restart | Cold/hot/warm start, factory reset |
| 021 | Version query | Firmware version |
| 050 | Fix rate | Position fix interval (100–10000 ms) |
| 051 | Baud rate | UART1 baud rate |
| 066–067 | Constellation | Enable/disable GPS, GLONASS, Galileo, BeiDou, QZSS |
| 070–076 | NMEA output | Per-sentence output rate |
| 080–081 | Navigation mode | Normal, fitness, stationary, drone |
| 382–383 | SBAS | SBAS augmentation (AA variant) |
| 432–437 | RTCM output | RTCM mode, antenna ref, ephemeris (DA/BS) |
| 470–472 | EPO | Extended Prediction Orbit (AA variant) |
| 490–491 | EASY | Self-generated ephemeris (AA variant) |
| 511, 513 | NVRAM | Save navigation data / save config to flash |
| 650 | Backup mode | Ultra-low-power RTC backup (~7 uA) |
| 690–691 | Periodic mode | Power-saving duty cycle |
| 752 | PPS | Pulse-per-second output |
| 830–831 | Raw measurement | Raw GNSS observation output |
| 864–867 | Port config | Per-port baud rate and flow control |
See PAIR Commands for the complete reference.
PQTM — Quectel Platform Commands
Section titled “PQTM — Quectel Platform Commands”$PQTM<NAME>,<params>...*XX\r\n| Command | Direction | Description |
|---|---|---|
PQTMVERNO | Query/Response | Firmware version, hardware, SDK |
PQTMSAVEPAR | Set | Save all parameters to flash |
PQTMRESTOREPAR | Set | Restore factory defaults |
PQTMGNSSRESTART | Set | Restart GNSS engine |
PQTMCFGPORT | Read/Write | Port protocol and baud rate |
PQTMCFGNMEAMSG | Read/Write | Per-port NMEA message rate |
PQTMCFGEAMASK | Read/Write | Satellite elevation mask |
PQTMCFGDRMODE | Read/Write | Dead reckoning mode (BA/CA) |
PQTMCFGSVIN | Read/Write | Survey-in configuration (BS) |
See PQTM Commands for the complete reference.
ACK/NACK Protocol
Section titled “ACK/NACK Protocol”Every PAIR set command generates an acknowledgement response:
$PAIR001,<CommandID>,<Result>*XX\r\nResult Codes
Section titled “Result Codes”| Code | Name | Description |
|---|---|---|
| 0 | Success | Command accepted and executed |
| 1 | Fail | Command execution failed |
| 2 | Not Supported | Command ID not recognized or not available |
| 3 | Invalid Parameter | Parameter out of range or wrong type |
| 4 | Timeout | Command timed out during execution |
Example Exchange
Section titled “Example Exchange”Host -> $PAIR066,1,1,1,1,0*3A (enable GPS+GLONASS+Galileo+BeiDou, disable QZSS)Module<- $PAIR001,066,0*3B (success)
Host -> $PAIR050,500*21 (set fix rate to 500ms / 2Hz)Module<- $PAIR001,050,0*36 (success)
Host -> $PAIR050,50*14 (set fix rate to 50ms -- out of range)Module<- $PAIR001,050,3*35 (invalid parameter)Fix Quality Indicators
Section titled “Fix Quality Indicators”GGA field 5 encodes the GNSS fix quality:
| Value | Name | Description |
|---|---|---|
| 0 | No Fix | Position not available |
| 1 | GPS Fix | Standard GNSS autonomous fix (SPS) |
| 2 | DGPS Fix | Differential correction applied (SBAS or RTCM) |
| 3 | PPS Fix | Precise Positioning Service (military GPS) |
| 4 | RTK Fixed | Carrier-phase ambiguities resolved; centimeter accuracy |
| 5 | RTK Float | Carrier-phase ambiguities not resolved; decimeter accuracy |
| 6 | Estimated | Dead reckoning or estimated position |
| 7 | Manual | Position entered manually |
| 8 | Simulation | Simulator mode |
For RTK operation, the typical progression is: 0 (no fix) → 1 (autonomous) → 5 (RTK float) → 4 (RTK fixed).
Default Output Configuration
Section titled “Default Output Configuration”Out of the box, the LC29H outputs these sentences at 1 Hz on UART1 (115200 baud, 8N1):
| Sentence | Default Rate | PAIR Command |
|---|---|---|
| GGA | 1 (every fix) | PAIR073 |
| GLL | 0 (disabled) | PAIR070 |
| GSA | 1 (every fix) | PAIR074 |
| GSV | 1 (every fix) | PAIR075 |
| RMC | 1 (every fix) | PAIR071 |
| VTG | 1 (every fix) | PAIR072 |
| GNS | 0 (disabled) | PAIR076 |
Rate values: 0 = disabled, 1 = every position fix, 2 = every second fix, up to 20.
Variant Feature Matrix
Section titled “Variant Feature Matrix”| Feature | AA | BA | CA | DA | BS |
|---|---|---|---|---|---|
| Standard NMEA (GGA/RMC/GSA/GSV/VTG/GLL) | Yes | Yes | Yes | Yes | Yes |
| GNS output | Yes | Yes | Yes | Yes | Yes |
| SBAS augmentation (PAIR382) | Yes | — | — | — | — |
| EASY ephemeris prediction (PAIR490) | Yes | — | — | — | — |
| Constellation selection (PAIR066) | Yes | — | — | — | — |
| RTK rover (RTCM3 input) | — | Yes | — | Yes | — |
| RTK base (RTCM3 output) | — | — | — | — | Yes |
| Dead reckoning (PQTMCFGDRMODE) | — | Yes | Yes | — | — |
| CAN bus interface (PQTMCFGCAN) | — | Yes | — | — | — |
| Survey-in (PQTMCFGSVIN) | — | — | — | — | Yes |
| Raw measurement output (PAIR830) | — | — | — | — | Yes |
| Navigation mode (PAIR080) | Yes | Yes | Yes | Yes | Yes |
| Power management (PAIR650/690) | Yes | Yes | Yes | Yes | Yes |
| PPS output (PAIR752) | Yes | Yes | Yes | Yes | Yes |