I’m using a LC76G GNSS module as the basis for a Stratum 1 NTP time server. It is working well for the most part, with RMS offsets (as reported by chronyd) of less than 100ns. However, there is a periodic event that occurs approximately every 3hrs, and lasts for 30min, where the RMS offset becomes very noisy and jumps to 10’s of microseconds. I have not been able to resolve this, and I am looking for suggestions.
The LC76G module is currently running the following firmware version,
$PQTMVERNO,LC76GABNR12A04S,2025/05/08,09:47:20*37
Some digging suggests that the periodic noise may be due to the EASY function of the module. However, I have not been able to test this, as the control commands ($PAIR490/491) appear to have been removed from my version of the firmware as noted in version 1.5 of the protocol specification, and by trial and error.
I have tried to eliminate as many other variables as I can think of,
Host background processes
Limit constellation to GPS only
Set “Stationary Navigation Mode” ($PAIR080,4)
None have changed the behavior. The noise event always occurs approx every 3hrs 24/7. Any suggestions?
The periodic noise you are observing is most likely related to the EPOC (Enhanced Prediction Orbit on Chip) function. While you initially suspected the EASY feature, your current firmware version (LC76GABNR12A04S) has already transitioned from the legacy EASY technology to the newer EPOC implementation. As a result, EASY-specific commands (e.g., $PAIR490/491) are no longer supported or responsive in this firmware.
There, below are the steps to disable EPOC:
How to Disable EPOC
Since your firmware supports EPOC, the updated command set should be used for configuration.
Disable EPOC
$PAIR496,0*2D
Query status
You can verify whether EPOC is disabled using:
$PAIR508*37
This command returns the EPOC status along with the current constellation configuration.
Check prediction activity
To determine whether a prediction cycle is running during the observed noise events, use:
$PAIR509*36
Saving the Configuration
To ensure the EPOC setting remains disabled after a restart, please save the configuration to non-volatile memory (NVM):
Disable EPOC
$PAIR496,0*2D
Save settings
$PAIR513*3D
Restart (optional but recommended)
$PAIR002*38
This will reboot the GNSS system and confirm that the configuration is retained.
Thank you! I will try this out. Can you point me at documentation that describes the EPOC settings? I have version 1.5 of the protocol specification, but this is not included in that document. I will test the commands you provided, and reply with my results.
So unfortunately, disabling EPOC did not resolve the issue with the periodic 1PPS signal. See this link for an example of what I’m seeing from chronyd. This image was taken before I disabled EPOC, but afterwords it looks the same (this is a cleaner image).
Here are the commands and responses I used. I tried just resetting the module, as well as power cycling it after making the changes.
I first validated that EPOC was enabled (it was - GPS only). I then disabled it, and again validated it was disabled. I then also cleared the EPOC data from NVM (PAIR507), and validated it was now cleared (PAIR509) which returned “$PAIR509,3,1,0000000000000000*18”.
12hrs later, after still observing the 3hr periodic 1PPS noise, I validated that EPOC was disabled, and the prediction status still showed all zeros (as above).
I’m going to try using a completely different host computer/OS to rule out any hardware or software issues, but I really don’t think that is the problem. If anyone has any other ideas, I would appreciate hearing them.
I finally got the time to experiment with this issue more.
I can report that the large periodic 1PPS noise I reported was not an issue with the LC76G module, but rather something that was part of the OS I was running on the connected RPi 4b (arch64). I moved to an Alpine Linux in-memory OS, and the issue went away. I was unable to track down the root cause in the offending OS.
With further testing, I can confirm that disabling EPOC mode does improve the RMS Offset as reported by chronyd. The mean RMS offset was reduced by approx 35% by disabling EPOC mode, saving the setting, and restarting the module.
I also tried using “high precision timing mode”, and this also improved the RMS Offset (though only 5-8%).
Setting “Stationary Mode” seems like it might also improve things, but it comes and goes. Perhaps this is because I don’t know how to set the actual location of the antenna for “Stationary Mode”. The module seems to choose an arbitrary fixed 3D location, but it is often many meters from the actual “surveyed” position I calculate from days of observation from a location with a a full-sky view (40+ sats in view). If there was a way to set the actual location, perhaps “Stationary Mode” would improve the timing more.
Hi @cragen It is excellent to hear that the 1PPS noise issue was resolved by switching to a more stable OS environment and that you have successfully verified the performance gains from disabling EPOC and enabling high-precision timing mode. Also glad to hear that the LC76G module was not an issue at all.