NavSpark-GL giving time 1 second off


My NavSpark, used in an ntp server, had been giving NMEA timestamps roughly within about 200ms off of actual time.

I checked on it today, and noticed the timestamps had fallen behind by over 1 second of actual.

After plugging/replugging, the time is still off by 1 second.

I sent a binary cold start command to it as well (several times), and the time is still off.

Location and altitude are still just as accurate as before.

Any ideas what would cause this jump from actual, and why it persists?



You need to be a member of NavSpark Community to add comments!

Join NavSpark Community

Email me when people reply –


  • Should be due to +1sec leap second adjustment happened on June 30,2015. Jan 29 2015 firmware default value has old leap second, off by 1 second. May take up to 12.5 minutes to get the new leap second info from signal. If using firmware built by latest Board Manager support Arduino library, it'll have leap second adjusted. We'll update the shipping and web-store firmware next week.

  • Hi,

    I still have a problem similar to the one posted by Matt.

    I am measuring timestamps using two NavSpark-GL with the GPIO10 (TRIG) pin connected to the same source. The two NavSpark-GL have been flashed with the latest firmware from January 29, 2015.

    However, I see that sometimes the two timestamps are off by exactly one second. This skew seems to be persistent after a reboot: after I manually reset the board the two timestamps either remain in perfect sync or they are always off by one second.  

    I am using standard code from the examples (see below).

    Does anyone have a similar issue?


    #include "sti_gnss_lib.h"
    #include "GNSS.h"

    const uint8_t blue_led = 0;

    void setup() {
      GnssConf.init(); /* do initialization for GNSS */
      GnssInfo.timestamp.setTrigCapture(TS_TRIG_ON, TS_TRIG_RISING, (void*)userFuncforTimeStamp);
      const char reboot_msg[] = "REBOOTED\r\n";
      gnss_uart_putline(0, (U08*)reboot_msg, strlen(reboot_msg));
    void loop() {
      uint16_t* prnList=NULL;
      char buf[64];
      char time_buf[64];

      do {
        if (GnssInfo.timestamp.pop() == true) {
          int len = sprintf(buf, "%s\r\n", time_buf);
          gnss_uart_putline(0, (U08*) buf, len);
      } while (GnssInfo.timestamp.numRecord() != 0);


    void task_called_after_GNSS_update(void) {
        char buf[64];
        int len = sprintf(buf, "NumGPSInView = %2d, NumGPSInUse = %2d\r\n", GnssInfo.satellites.numGPSInView(NULL), GnssInfo.satellites.numGPSInUse(NULL));
        gnss_uart_putline(0, (U08*) buf, len);

    void userFuncforTimeStamp(TIME_STAMPING_STATUS_T ts) {
      if (ts.time_is_valid) {
        if (GnssInfo.timestamp.push(ts) == true) {
          // add necessary code for successful data push here

  • Hey,

    Thanks - the updated firmware fixed it!


  • Firmware on respective NavSpark product page and Arduino IDE on RESOURCE page has been updated to fix this issue.

  • Thank you for reporting the issue. We'll provide update firmware tomorrow.

  • If it matters, I am using gpsd and ntpd to view the reported gps time.

This reply was deleted.