Cannot send commands to GPS Air530

Hello…

A followup on this thread.

A quick update for Serial communication example for XIAO ESP32S3 via Grove Expansion Base with pins D7,D6 for Rx,Tx respectively.

Regards…


  // GPS pass data Serial test (from serial port tester)

  // Receives from the main USB serial port, sends to the (Serial 1) port.
  // Receives from serial port 1(GPS AIR530), sends to the USB main serial (Serial 0).

  // This example works on Xiao Nref52840 Sense (serial1)port pins 7,8

  // The circuit:
  // - GPS AIR530 serial device attached to Serial port 1
  // - USB Serial Monitor open on Serial port (this one is port 21)
  // - Once you get data then try the U center app (older version )
  // - add free Google API key to prefrences to get the whole experiernce. total time 30 minutes
  

// Serial communication example for XIAO ESP32S3 via Grove Expansion Base
// This example reads incoming data from Serial1 (via Grove port)
// and prints it to the Serial monitor (via USB).

#define RX_PIN D7 // Grove RX pin (connected to Grove device TX)
#define TX_PIN D6 // Grove TX pin (connected to Grove device RX)

void setup() 
{
    // Initialize USB serial for debugging
    Serial.begin(115200); 
    while (!Serial); // Wait for the Serial port to connect

    // Initialize hardware serial (Serial1) on the Grove pins D6 and D7
    // The baud rate must match your Grove device's baud rate.
    Serial1.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN); 

    Serial.println("XIAO ESP32S3 Serial Example Started");
    Serial.println("Monitoring Serial1 (Grove) for incoming data...");
}

void loop() 
{
  // Check if data is available from the Grove device on Serial1
  if (Serial1.available()) 
  {
      // Read the incoming byte
      char inByte = Serial1.read();
      
      Serial.write(inByte);
  }


    // read from port 0, send to port 1:
    if (Serial.available()) 
    {
      int inByte = Serial.read();
      Serial1.write(inByte);
    }


}
1 Like

I too can see the NEMA location - but unable to send commands.

Should this command work:
Serial1.println(“$PGKC462*2F”);

I guess my real question is “Can the Air530 be configured to work with RTKLIB” ?
This site seems to indicate yes: RTKLIB-compatible GPS devices - OpenStreetMap Wiki

Hi there,

So the Short answer: No — not for RTK. The Air530 (and Air530Z) only outputs NMEA 0183 positioning sentences and accepts a few proprietary “$PGKC...” control commands. It does not expose the raw observations (carrier phase + code pseudorange) that RTKLIB needs for RTK/PPP. So you can feed its NMEA stream into RTKLIB as a plain “single” position source, but you can’t do centimeter-level RTK with it if that’s the objective?

The official Air530 manual shows NMEA 0183 output and device control via $PGKC commands, with no mention of raw/phase outputs. That’s a dead giveaway it’s a navigation-solution receiver, not a raw-data receiver.

RTKLIB’s own docs/wiki make it clear: it needs receivers that output raw carrier phase + pseudorange (u-blox M8T/M8P/ZED-F9P, SkyTraq, NovAtel, etc.). Those are listed on the OSM “RTKLIB-compatible devices” page; Air530 isn’t one of them.
the Air530 is a solid low-cost GNSS for position/time, but it’s not an RTK-class sensor. If the goal is centimeter-level demos, bite the bullet and spec a true raw-capable receiver.

HTH
GL :slight_smile: PJ :v:

Here are some solid options:

  • u‑blox ZED-F9P — A dual-frequency (L1/L2) RTK/PPP capable module; very popular with RTKLIB users.
  • u-blox M8T or M8P — Single-frequency modules that output raw measurements and are supported by RTKLIB. RTKLIB Explorer+2RTKLIB Explorer+2
  • ComNav receivers — professional-grade, dual-frequency, used with RTKLIB in survey/precision fields. RTKLIB Explorer+1
  • Emlid RS+ (and other Emlid boards) — built on raw-capable GNSS hardware and supported by RTKLIB setups. RTKLIB Explorer+1

Thank you for your info. I updated RTKLIB-compatible GPS devices - OpenStreetMap Wiki and marked the Grove GPS as red.

1 Like