Another cheap PPS GPS module from Garmin

Hi all,

I ordered me a cheap Garmin GPS 18x LVC.
That is an RS-232 receiver.

Price is about 79 euro and can be ordered from Garmin directly.

https://www.garmin.com/nl-BE/p/27594/pn/010-00321-36

This is my plan:

https://www.lammertbies.nl/comm/info/gps-time

(but with Chronyd and not NTPd)

I should be able to tell more in a few days when it arrives.

Soldering the plugs isn’t hard and well described.

As it has a long wire of 5m it’s perfect to place outside or far away from disturbances.

It works very well, didn’t expect such an improvement over USB.

210 Number of sources = 9
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
GPS                        12   7   175    -20.252    147.974  +3331us  6161us
PPS                        18   7   271     -0.000      0.189     -3ns    16us

It’s very sunny today and no clouds, but it works well.

Settings used in Chrony.conf

refclock SHM 0 poll 4 refid GPS offset 0.507 precision 1e-3
refclock SHM 1 poll 4 refid PPS lock GPS precision 1e-9 prefer

Settings used in Gpsd config:

# Start the gpsd daemon automatically at boot time
START_DAEMON="true"

# Use USB hotplugging to add new USB devices automatically to the daemon
USBAUTO="true"

# Devices gpsd should collect to at boot time.
# They need to be read/writeable, either by user gpsd or the group dialout.
DEVICES="/dev/ttyS0"
BAUDRATE="4800"

# Other options you want to pass to gpsd
GPSD_OPTIONS="-n"

It wasn’t much more precise then the USB GPS.
The accuracy was about the same.

My USB PPS GPS:

https://community.ntppool.org/t/usb-gps-with-pps-and-pretty-cheap-too/1586

So I combined it with my Garmin RS-232 GPS+PPS as listed above.

I reach a pretty good accuracy now:

210 Number of sources = 8
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
GPS                        17  10   257    +37.458     83.403    -12ms  5924us
GPS2                       19   9   290     +5.619      7.475  -6640us   710us
PPS                         6   6    38     -0.225      3.238    -70ns    11us
PPS                         7   4    48     -8.022      5.128    -61us    25us
210 Number of sources = 8
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
#- GPS                           0   4   377    14    -19ms[  -19ms] +/-   53ms
#- GPS2                          0   4   377    13  -6066us[-6065us] +/-   51ms
#* PPS                           0   3   377     6  +2635ns[+3819ns] +/-   13us
#- PPS                           0   3   377     8   +155us[ +155us] +/-   32us

I fugured that since both receivers don’t have the same reception receiver and antenna, they combined give a far better accuracy then each of them alone.

The config I’m using now it this:

# GPS on RS232 isn't needed for total time.
refclock SHM 0 poll 4 refid GPS offset 0.532 precision 1e-3 maxlockage 32 delay 0.1
refclock SHM 2 poll 4 refid GPS2 offset 0.134 precision 1e-3 maxlockage 32 delay 0.1
refclock SHM 1 poll 3 refid PPS lock GPS offset 0.00075 precision 1e-8 prefer
refclock SHM 3 poll 3 refid PPS lock GPS2 offset 0.1013 precision 1e-8 prefer

It depends on where the sat’s are on the horizon if one or the other is better or not.

At the list of TimeTeamBelgium I’m pretty good listed most of the time, where I used to be almost always the least accurate.

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+ntp-main-1.oma. .EXT.            1 u  143  512  377   10.255   +0.257   1.753
*ntp-main-2.oma. .MRS.            1 u  327  512  377    8.724   -0.208   0.997
-heppen.be       .PPS.            1 u  249  512  377   27.182   +0.018   1.313
+ntp0.nl.uu.net  .GPS.            1 u  128  512  377   21.547   +2.366   1.313
+time1.esa.int   .MRS.            1 u   74  512  377   16.187   -0.089  10.944
+ptbtime1.ptb.de .PTB.            1 u  111  512  377   26.447   +0.060   1.228
+ptbtime2.ptb.de .PTB.            1 u  493  512  377   27.515   +0.308   1.567
+ntp1.rrze.uni-e .DCFp.           1 u  342  512  377   21.880   -1.098   2.282
+ntp2.rrze.uni-e .MBGh.           1 u  467  512  377   22.517   +0.435   1.172

I’m mostly in the upper part of accuracy now and not dead last :slight_smile:

In short, it helps to use multiple GPS+PPS devices and put them about 1 meter apart of eachother.
Different brands have different antenna’s and different receiver-chips, combine them does help, help a lot.

However, if you do want to use just 1 GPS+PPS, I can recommend the Garmin RS-232 version (soldering needed), else the USB version is good second.

I also set Chronyd and GPSD at Nice -20 and Realtime-scheduling in systemd.

nano /lib/systemd/system/chrony.service

then add this under [Service]

Nice=-20
CPUSchedulingPriority=rr

Do the same for GPSD. It will improve accuracy a lot as the CPU gives it maximum CPU-time and priority above everything else.