Skip to content

BS Protocol Specification V1.0

1 Introduction Quectel LC29H (BS) GNSS module supports GPS, GLONASS, Galileo, BDS and QZSS constellations. Concurrent tracking of GPS L1 C/A, GLONASS L1, Galileo E1, BDS B1I, QZSS L1 C/A, GPS L5, Galileo E5a, BDS B2a and QZSS L5 frequency bands provides fast and accurate acquisition and makes this module the ideal solution for a base station and for generating RTK corrections. This document describes the software commands that are used to control and modify the module configuration. The software commands are NMEA proprietary commands defined by Quectel (PQTM commands) and the chipset supplier (PAIR messages). To report GNSS information, the module supports outputting messages in RTCM format. The Quectel LC29H (BS) is designed to be used as a GNSS base station. The module supports the following protocols: Table 1: Supported Protocols Quectel assumes no responsibility if commands other than the ones listed herein are used. Protocol Type NMEA 0183 V3.10/V4.10 Input/output, ASCII, proprietary RTCM 10403.3 Output, binary NOTE

2 NMEA Protocol 2.1. Structure of NMEA Protocol Messages <Address> (<TalkerID><SentenceFormatter>) $ [,<Data>] *<Checksum> The range for checksum calculation Start of sentence character. Always $ Address field – contains talker identifier and sentence formatter Data field(s), delimited by , End of the sentence. Always <CR><LF> <CR><LF> Start with a * . 8-bit checksum value converted to two ASCII characters Figure 1: Structure of NMEA Protocol Messages Table 2: Structure of NMEA Protocol Messages Field Description $ Start of the sentence (Hex 0x24). <Address> In Proprietary Messages: In NMEA proprietary messages, this field consists of the proprietary character P followed by a three-character Manufacturer’s Mnemonic Code, used to identify the TALKER issuing a proprietary sentence, and any additional characters as required. <Data> Data fields, delimited by data field delimiter ‘,’. Variable length (depends on the NMEA message type). <Checksum> Checksum field follows the checksum delimiter character ‘*’. Checksum is the 8-bit exclusive OR of all characters in the sentence, including the ‘,’ the field delimiter, between but not including the ‘$’ and the ‘*’ delimiters. <CR><LF> End of the sentence (Hex 0x0D 0x0A).

2.2. PQTM Messages This chapter explains the PQTM messages (proprietary NMEA messages defined by Quectel) supported by LC29H (BS). 2.2.1. PQTMCFGSVIN Sets/gets the survey-in feature. The base station receiver (i.e., the module) must work in static mode, which can be entered via Survey-in mode or Fixed mode. The Survey-in mode (<Mode> = 1) determines the receiver’s position by building a weighted mean of all valid 3D positioning solutions. You can set values of <MinDur> and <3D_AccLimit> to define the minimum observation time and 3D position standard deviation used for the position estimation. The Fixed mode (<Mode> = 2) requires user to manually enter the receiver position coordinates. Any error in the base station position will translate directly into rover position error. Type: Set/Get Synopsis: //Set: $PQTMCFGSVIN,W,<Mode>,<MinDur>,<3D_AccLimit>,<ECEF_X>,<ECEF_Y>,<ECEF_Z>*<Checksum ><CR><LF> //Get: $PQTMCFGSVIN,R*<Checksum><CR><LF> Parameter: Field Format Unit Description <Mode> Numeric

Section titled “2.2. PQTM Messages This chapter explains the PQTM messages (proprietary NMEA messages defined by Quectel) supported by LC29H (BS). 2.2.1. PQTMCFGSVIN Sets/gets the survey-in feature. The base station receiver (i.e., the module) must work in static mode, which can be entered via Survey-in mode or Fixed mode. The Survey-in mode (<Mode> = 1) determines the receiver’s position by building a weighted mean of all valid 3D positioning solutions. You can set values of <MinDur> and <3D_AccLimit> to define the minimum observation time and 3D position standard deviation used for the position estimation. The Fixed mode (<Mode> = 2) requires user to manually enter the receiver position coordinates. Any error in the base station position will translate directly into rover position error. Type: Set/Get Synopsis: //Set: $PQTMCFGSVIN,W,<Mode>,<MinDur>,<3D_AccLimit>,<ECEF_X>,<ECEF_Y>,<ECEF_Z>*<Checksum ><CR><LF> //Get: $PQTMCFGSVIN,R*<Checksum><CR><LF> Parameter: Field Format Unit Description <Mode> Numeric”

Configure the receiver mode. 0 = Disable 1 = Survey-in mode 2 = Fixed mode (ARP position is given in ECEF.) <MinDur> Numeric Second Survey-in minimum duration. Range: 0–86400. Default value: 43200. <3D_AccLimit> Numeric Meter Limit 3D positioning accuracy in survey-in mode. Default value: 15.0. If this field is 0, it means there is no limit. <ECEF_X> Numeric Meter WGS84 ECEF X coordinate. Default value: 0.0.

Result: ⚫ If successful, the module returns: //Response to Set command: $PQTMCFGSVIN,OK*<Checksum><CR><LF> //Response to Get command: $PQTMCFGSVIN,OK,<Mode>,<MinDur>,<3D_AccLimit>,<ECEF_X>,<ECEF_Y>,<ECEF_Z>*<Checksu m><CR><LF> ⚫ If failed, the module returns: $PQTMCFGSVIN,ERROR,<ErrCode>*<Checksum><CR><LF> Parameter included in the result: Example: //Set: $PQTMCFGSVIN,W,2,0,0.0,-2472446.4619,4828304.1363,3343730.2653*34 $PQTMCFGSVIN,OK*70 //Get: $PQTMCFGSVIN,R*26 $PQTMCFGSVIN,OK,2,0,0.0,-2472446.4619,4828304.1363,3343730.2653*67 2.2.2. PQTMSAVEPAR Saves the configurations set via $PQTM commands to NVM. Reset the module after executing this command. Type: Command Field Format Unit Description <ECEF_Y> Numeric Meter WGS84 ECEF Y coordinate. Default value: 0.0. <ECEF_Z> Numeric Meter WGS84 ECEF Z coordinate. Default value: 0.0. Field Format Unit Description <ErrCode> Numeric

Section titled “Result: ⚫ If successful, the module returns: //Response to Set command: $PQTMCFGSVIN,OK*<Checksum><CR><LF> //Response to Get command: $PQTMCFGSVIN,OK,<Mode>,<MinDur>,<3D_AccLimit>,<ECEF_X>,<ECEF_Y>,<ECEF_Z>*<Checksu m><CR><LF> ⚫ If failed, the module returns: $PQTMCFGSVIN,ERROR,<ErrCode>*<Checksum><CR><LF> Parameter included in the result: Example: //Set: $PQTMCFGSVIN,W,2,0,0.0,-2472446.4619,4828304.1363,3343730.2653*34 $PQTMCFGSVIN,OK*70 //Get: $PQTMCFGSVIN,R*26 $PQTMCFGSVIN,OK,2,0,0.0,-2472446.4619,4828304.1363,3343730.2653*67 2.2.2. PQTMSAVEPAR Saves the configurations set via $PQTM commands to NVM. Reset the module after executing this command. Type: Command Field Format Unit Description <ECEF_Y> Numeric Meter WGS84 ECEF Y coordinate. Default value: 0.0. <ECEF_Z> Numeric Meter WGS84 ECEF Z coordinate. Default value: 0.0. Field Format Unit Description <ErrCode> Numeric”

Error code. 1 = Invalid parameters.

Synopsis: $PQTMSAVEPAR*<Checksum><CR><LF> Parameter: None Result: ⚫ If successful, the module returns: $PQTMSAVEPAR,OK*72 ⚫ If failed, the module returns: $PQTMSAVEPAR,ERROR,<ErrCode>*<Checksum><CR><LF> Parameter included in the result: Example: $PQTMSAVEPAR*5A $PQTMSAVEPAR,OK*72 2.2.3. PQTMRESTOREPAR Restores all parameters set via $PQTM commands to default values. Type: Command Synopsis: $PQTMRESTOREPAR*<Checksum><CR><LF> Parameter: None Field Format Unit Description <ErrCode> Numeric

Section titled “Synopsis: $PQTMSAVEPAR*<Checksum><CR><LF> Parameter: None Result: ⚫ If successful, the module returns: $PQTMSAVEPAR,OK*72 ⚫ If failed, the module returns: $PQTMSAVEPAR,ERROR,<ErrCode>*<Checksum><CR><LF> Parameter included in the result: Example: $PQTMSAVEPAR*5A $PQTMSAVEPAR,OK*72 2.2.3. PQTMRESTOREPAR Restores all parameters set via $PQTM commands to default values. Type: Command Synopsis: $PQTMRESTOREPAR*<Checksum><CR><LF> Parameter: None Field Format Unit Description <ErrCode> Numeric”

Error code. 1 = Invalid parameters

Result: ⚫ If successful, the module returns: $PQTMRESTOREPAR,OK*3B ⚫ If failed, the module returns: $PQTMRESTOREPAR,ERROR,<ErrCode>*<Checksum><CR><LF> Parameter included in the result: Example: $PQTMRESTOREPAR*13 $PQTMRESTOREPAR,OK*3B 2.2.4. PQTMVERNO Queries the firmware version information. Type: Command Synopsis: $PQTMVERNO*<Checksum><CR><LF> Parameter: None Result: ⚫ If successful, the module returns: $PQTMVERNO,<VerStr>,<BuildDate>,<BuildTime>*<Checksum><CR><LF> ⚫ If failed, the module returns: $PQTMVERNO,ERROR,<ErrCode>*<Checksum><CR><LF> Field Format Unit Description <ErrCode> Numeric

Section titled “Result: ⚫ If successful, the module returns: $PQTMRESTOREPAR,OK*3B ⚫ If failed, the module returns: $PQTMRESTOREPAR,ERROR,<ErrCode>*<Checksum><CR><LF> Parameter included in the result: Example: $PQTMRESTOREPAR*13 $PQTMRESTOREPAR,OK*3B 2.2.4. PQTMVERNO Queries the firmware version information. Type: Command Synopsis: $PQTMVERNO*<Checksum><CR><LF> Parameter: None Result: ⚫ If successful, the module returns: $PQTMVERNO,<VerStr>,<BuildDate>,<BuildTime>*<Checksum><CR><LF> ⚫ If failed, the module returns: $PQTMVERNO,ERROR,<ErrCode>*<Checksum><CR><LF> Field Format Unit Description <ErrCode> Numeric”

Error code. 1 = Invalid parameters

Parameters included in the result: Example: $PQTMVERNO*58 $PQTMVERNO,LC29HBSNR01A01S,2022/08/31,15:22:59*27 2.3. PAIR Messages This chapter explains PAIR messages (proprietary NMEA messages defined by the chipset supplier). “P” means proprietary message, and “AIR” means the command defined by the chipset supplier. 2.3.1. Packet Type: 001 PAIR_ACK Acknowledges a PAIR command. An acknowledgement packet $PAIR001 is returned to inform the sender that the receiver has received the packet. Type: Output Synopsis: $PAIR001,<CommandID>,<Result>*<Checksum><CR><LF> Parameter: Field Format Unit Description <VerStr> String

Section titled “Parameters included in the result: Example: $PQTMVERNO*58 $PQTMVERNO,LC29HBSNR01A01S,2022/08/31,15:22:59*27 2.3. PAIR Messages This chapter explains PAIR messages (proprietary NMEA messages defined by the chipset supplier). “P” means proprietary message, and “AIR” means the command defined by the chipset supplier. 2.3.1. Packet Type: 001 PAIR_ACK Acknowledges a PAIR command. An acknowledgement packet $PAIR001 is returned to inform the sender that the receiver has received the packet. Type: Output Synopsis: $PAIR001,<CommandID>,<Result>*<Checksum><CR><LF> Parameter: Field Format Unit Description <VerStr> String”

Version string. <BuildDate> yyyy/mm/dd - Firmware build date. <BuildTime> hh:mm:ss

Section titled “Version string. <BuildDate> yyyy/mm/dd - Firmware build date. <BuildTime> hh:mm:ss”

Error code. 1 = Invalid parameters Field Format Unit Description <CommandID> Numeric

Section titled “Error code. 1 = Invalid parameters Field Format Unit Description <CommandID> Numeric”

Type of command/packet to be acknowledged. <Result> Numeric

Section titled “Type of command/packet to be acknowledged. <Result> Numeric”

Result type. 0 = Command has been successfully sent. 1 = Command is being processed. Please wait for the result.

Example: $PAIR001,006,0*3D 2.3.2. Packet Type: 432 PAIR_RTCM_SET_OUTPUT_MODE Sets RTCM output mode. Type: Set Synopsis $PAIR432,<Mode>*<Checksum><CR><LF> Parameter: Field Format Unit Description <Mode> Numeric

Section titled “Example: $PAIR001,006,0*3D 2.3.2. Packet Type: 432 PAIR_RTCM_SET_OUTPUT_MODE Sets RTCM output mode. Type: Set Synopsis $PAIR432,<Mode>*<Checksum><CR><LF> Parameter: Field Format Unit Description <Mode> Numeric”

RTCM output mode setting. -1 = Disable outputting RTCM-3 messages 0 = Enable outputting RTCM-3 MSM4 messages 1 = Enable outputting RTCM-3 MSM7 messages Result: Returns $PAIR001 message. Example: $PAIR432,1*22 $PAIR001,432,0*3E 2.3.3. Packet Type: 433 PAIR_RTCM_GET_OUTPUT_MODE Queries RTCM output mode. Field Format Unit Description 2 = Command sending failed. 3 = <CommandID> is not supported. 4 = Command parameter error. Out of range/some parameters were lost/checksum error. 5 = MNL service is busy. You can try again soon.

Type: Get Synopsis $PAIR433*<Checksum><CR><LF> Parameter: None Result: Returns $PAIR001 message and the query result. Query result message format: $PAIR433,<Mode>*<Checksum><CR><LF> Parameter included in the result: Example: $PAIR433*3E $PAIR001,433,0*3F $PAIR433,-1*0E 2.3.4. Packet Type: 434 PAIR_RTCM_SET_OUTPUT_ANT_PNT Enables/disables outputting stationary antenna reference point in RTCM format. Type: Set Synopsis $PAIR434,<Enable>*<Checksum><CR><LF> Field Format Unit Description <Mode> Numeric

Section titled “Type: Get Synopsis $PAIR433*<Checksum><CR><LF> Parameter: None Result: Returns $PAIR001 message and the query result. Query result message format: $PAIR433,<Mode>*<Checksum><CR><LF> Parameter included in the result: Example: $PAIR433*3E $PAIR001,433,0*3F $PAIR433,-1*0E 2.3.4. Packet Type: 434 PAIR_RTCM_SET_OUTPUT_ANT_PNT Enables/disables outputting stationary antenna reference point in RTCM format. Type: Set Synopsis $PAIR434,<Enable>*<Checksum><CR><LF> Field Format Unit Description <Mode> Numeric”

RTCM output mode setting. -1 = Disable outputting RTCM-3 messages 0 = Enable outputting RTCM-3 MSM4 messages 1 = Enable outputting RTCM-3 MSM7 messages

Parameter: Result: Returns $PAIR001 message. Example: $PAIR434,1*24 $PAIR001,434,0*38 2.3.5. Packet Type: 435 PAIR_RTCM_GET_OUTPUT_ANT_PNT Queries the setting of outputting stationary antenna reference point in RTCM format. Type: Get Synopsis $PAIR435*<Checksum><CR><LF> Parameter: None Result: Returns $PAIR001 message and the query result. Query result message format: $PAIR435,<Enable>*<Checksum><CR><LF> Parameter included in the result: Field Format Unit Description <Enable> Numeric

Section titled “Parameter: Result: Returns $PAIR001 message. Example: $PAIR434,1*24 $PAIR001,434,0*38 2.3.5. Packet Type: 435 PAIR_RTCM_GET_OUTPUT_ANT_PNT Queries the setting of outputting stationary antenna reference point in RTCM format. Type: Get Synopsis $PAIR435*<Checksum><CR><LF> Parameter: None Result: Returns $PAIR001 message and the query result. Query result message format: $PAIR435,<Enable>*<Checksum><CR><LF> Parameter included in the result: Field Format Unit Description <Enable> Numeric”

Enable/disable outputting stationary RTK reference station ARP (message type 1005). 0 = Disable 1 = Enable Field Format Unit Description <Enable> Numeric

Section titled “Enable/disable outputting stationary RTK reference station ARP (message type 1005). 0 = Disable 1 = Enable Field Format Unit Description <Enable> Numeric”

Status of outputting stationary RTK reference station ARP (message type 1005).

Example: $PAIR435*38 $PAIR001,435,0*39 $PAIR435,1*25 2.3.6. Packet Type: 436 PAIR_RTCM_SET_OUTPUT_EPHEMERIS Enables/disables outputting satellite ephemeris in RTCM format. Type: Set Synopsis $PAIR436,<Enable>*<Checksum><CR><LF> Parameter: Result: Returns $PAIR001 message. Example: $PAIR436,1*26 $PAIR001,436,0*3A 2.3.7. Packet Type: 437 PAIR_RTCM_GET_OUTPUT_EPHEMERIS Queries the status of satellite ephemeris in RTCM format. Type: Get Field Format Unit Description 0 = Disabled 1 = Enabled Field Format Unit Description <Enable> Numeric

Section titled “Example: $PAIR435*38 $PAIR001,435,0*39 $PAIR435,1*25 2.3.6. Packet Type: 436 PAIR_RTCM_SET_OUTPUT_EPHEMERIS Enables/disables outputting satellite ephemeris in RTCM format. Type: Set Synopsis $PAIR436,<Enable>*<Checksum><CR><LF> Parameter: Result: Returns $PAIR001 message. Example: $PAIR436,1*26 $PAIR001,436,0*3A 2.3.7. Packet Type: 437 PAIR_RTCM_GET_OUTPUT_EPHEMERIS Queries the status of satellite ephemeris in RTCM format. Type: Get Field Format Unit Description 0 = Disabled 1 = Enabled Field Format Unit Description <Enable> Numeric”

Enable/disable outputting satellite ephemeris in RTCM format. 0 = Disable 1 = Enable

Synopsis $PAIR437*<Checksum><CR><LF> Parameter: None Result: Returns $PAIR001 message and the query result. Query result message format: $PAIR437,<Enable>*<Checksum><CR><LF> Parameter included in the result: Example: $PAIR437*3A $PAIR001,437,0*3B $PAIR437,1*27 Field Format Unit Description <Enable> Numeric

Section titled “Synopsis $PAIR437*<Checksum><CR><LF> Parameter: None Result: Returns $PAIR001 message and the query result. Query result message format: $PAIR437,<Enable>*<Checksum><CR><LF> Parameter included in the result: Example: $PAIR437*3A $PAIR001,437,0*3B $PAIR437,1*27 Field Format Unit Description <Enable> Numeric”

Status of outputting satellite ephemeris in RTCM format. 0 = Disabled 1 = Enabled

3 RTCM Protocol The LC29H (BS) module supports the RTCM protocol according to RTCM Standard 10403.3 Differential GNSS (Global Navigation Satellite Systems) Services - Version 3. This protocol is used to transfer GNSS raw measurement data and is available from https://www.rtcm.org/. 3.1. Supported RTCM Messages The LC29H (BS) module supports outputting RTCM-3 messages listed below. Message Type Mode Message Name 1005 Output Stationary RTK Reference Station ARP 1019 Output GPS Ephemerides 1020 Output GLONASS Ephemerides 1042 Output BDS Satellite Ephemeris Data 1044 Output QZSS Ephemerides 1046 Output Galileo I/NAV Satellite Ephemeris Data 1074 Output GPS MSM4 1077 Output GPS MSM7 1084 Output GLONASS MSM4 1087 Output GLONASS MSM7 1094 Output Galileo MSM4 1097 Output Galileo MSM7 1114 Output QZSS MSM4 1117 Output QZSS MSM7

The $PAIR432 command can enable/disable MSM4/MSM7 (1074, 1077, 1084, 1087, 1094, 1097,1114, 1117, 1124 and 1127) messages if the corresponding constellation is enabled. 2. The $PAIR434 command can enable/disable Stationary RTK Reference Station ARP (1005) message. 3. The $PAIR436 command can enable/disable ephemeris (1019, 1020, 1042, 1044 and 1046) messages if the corresponding constellation is enabled. Message Type Mode Message Name 1124 Output BDS MSM4 1127 Output BDS MSM7 NOTE

4 Appendix A References Table 3: Terms and Abbreviations Abbreviation Description ACK Acknowledgement ARP Antenna Reference Point ASCII American Standard Code for Information Interchange BDS BeiDou Navigation Satellite System ECEF Earth Centered Earth Fixed Galileo Galileo Satellite Navigation System (EU) GLONASS Global Navigation Satellite System (Russia) GNSS Global Navigation Satellite System GPS Global Positioning System MNL MTK Navigation Lib MSM Multiple Signal Messages NMEA NMEA (National Marine Electronics Association) 0183 Interface Standard NVM Non-Volatile Memory PAIR Proprietary Protocol of MTK QZSS Quasi-Zenith Satellite System RTCM Radio Technical Commission for Maritime Services RTK Real-Time Kinematic WGS84 World Geodetic System 1984

5 Appendix B Special Characters Table 4: Special Characters Special Character Definition <…> Parameter name. Angle brackets do not appear in the message. […] Optional field of a message. Square brackets do not appear in the message. {…} Repeated field of a message. Curly brackets do not appear in the message. Underline Default setting of a parameter.