Skip to content

GNSS Protocol Reference

The Wireless Tracker uses the Unicore UC6580 GNSS module, which communicates via the Unicore protocol (compatible with NMEA-0183). This page covers the most commonly used commands.

ParameterValue
Default Baud115200
Data Bits8
ParityNone
Stop Bits1
GPIO TX33 (GNSS → ESP32)
GPIO RX34 (ESP32 → GNSS)

All messages follow this format:

$MSGNAME,data1,data2,data3,...[*CC]\r\n
  • $ - Message start
  • MSGNAME - Command name
  • , - Parameter separator
  • *CC - Optional checksum (XOR of all characters between $ and *)
  • \r\n - Message terminator

Query device information:

$PDTINFO

Response:

$PDTINFO,UC6580,G1B1,V4.1,R3.4.0.19,080101000001,000101114303845
FieldDescription
pdtNameProduct name
configConfiguration
hwVerHardware version
fwVerFirmware version
PNProduct number
SNSerial number
$RESET,type,clrMask
clrMaskStart Type
h00Hot start
h01Warm start
h85Cold start

Example (cold start):

$RESET,0,h85

Query current port:

$CFGPRT

Set port configuration:

$CFGPRT,portID,addr,baud,inProto,outProto
ParameterDescription
portID1 = UART1, 2 = UART2
addrAlways h0
baud9600, 115200, 230400, 460800
inProtoInput protocol mask
outProtoOutput protocol mask

Enable/disable specific messages:

$CFGMSG,msgClass,msgID,switch
MessageClassIDSwitch
GGA000=off, 1=on
GLL010=off, 1=on
GSA020=off, 1=on
GSV030=off, 1=on
RMC040=off, 1=on
VTG050=off, 1=on
ZDA060=off, 1=on
GST070=off, 1=on

Example (enable GGA):

$CFGMSG,0,0,1
$CFGSYS,sysMask
sysMaskSystems
H01GPS+SBAS+QZSS
H10BDS only
H11GPS+BDS+Galileo+SBAS+QZSS
H101GPS+GLONASS+Galileo+SBAS+QZSS

Save current settings to flash:

$CFGSAVE
$GPGGA,time,lat,N,lon,E,quality,numSV,HDOP,alt,M,sep,M,diffAge,diffStation*cs
FieldDescription
timeUTC time (hhmmss.ss)
latLatitude (ddmm.mmmmm)
N/SNorth/South indicator
lonLongitude (dddmm.mmmmm)
E/WEast/West indicator
quality0=invalid, 1=GPS, 2=DGPS
numSVNumber of satellites
HDOPHorizontal dilution
altAltitude (meters)
$GPRMC,time,status,lat,N,lon,E,speed,course,date,magVar,magE,mode*cs
FieldDescription
timeUTC time
statusA=valid, V=invalid
speedSpeed over ground (knots)
courseCourse over ground (degrees)
dateUTC date (ddmmyy)
$GPGSV,numMsg,msgNum,numSV,prn1,elv1,az1,snr1,...*cs

Reports visible satellites with:

  • PRN number
  • Elevation angle (0-90°)
  • Azimuth (0-359°)
  • Signal-to-noise ratio (dB-Hz)
#include <HardwareSerial.h>
HardwareSerial GNSS(1);
void setup() {
Serial.begin(115200);
// Enable GNSS power (V1.1)
pinMode(3, OUTPUT);
digitalWrite(3, HIGH);
delay(100);
// Initialize GNSS serial
GNSS.begin(115200, SERIAL_8N1, 33, 34);
Serial.println("GNSS initialized");
}
void loop() {
while (GNSS.available()) {
char c = GNSS.read();
Serial.write(c);
}
}
ParameterValue
Horizontal (RMS)1.5 m
Vertical (RMS)2.5 m
Time (RMS)5 ns
Velocity0.02 m/s
ModeTime
Cold Start< 26 s
Warm Start< 2 s
Recapture1 s
ModeGPSBDSGalileoGLONASS
Cold Start-148 dBm-146 dBm-144 dBm-144 dBm
Tracking-165 dBm-163 dBm-163 dBm-158 dBm