# Another cheap PPS GPS module from Garmin

**URL:** <https://community.ntppool.org/t/another-cheap-pps-gps-module-from-garmin/2332>\
**Category:** Uncategorized\
**Created:** [April 11, 2022, 2:28pm UTC](https://community.ntppool.org/t/another-cheap-pps-gps-module-from-garmin/2332 "2022-04-11T14:28:24Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Bas](https://sea2.discourse-cdn.com/flex016/user_avatar/community.ntppool.org/bas/32/465_2.png) [@Bas](https://community.ntppool.org/u/Bas)\
**Post date:** [April 11, 2022, 2:28pm UTC](https://community.ntppool.org/t/another-cheap-pps-gps-module-from-garmin/2332/1 "2022-04-11T14:28:24Z")

</div>

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](https://www.garmin.com/nl-BE/p/27594/pn/010-00321-36)

This is my plan:

[https://www.lammertbies.nl/comm/info/gps-time](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.

---

<div class="post-metadata">

**Author:** ![Bas](https://sea2.discourse-cdn.com/flex016/user_avatar/community.ntppool.org/bas/32/465_2.png) [@Bas](https://community.ntppool.org/u/Bas)\
**Post date:** [April 15, 2022, 1:09pm UTC](https://community.ntppool.org/t/another-cheap-pps-gps-module-from-garmin/2332/2 "2022-04-15T13:09:34Z")

</div>

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

```auto
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

```auto
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:

```auto
# 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"

```

---

<div class="post-metadata">

**Author:** ![Bas](https://sea2.discourse-cdn.com/flex016/user_avatar/community.ntppool.org/bas/32/465_2.png) [@Bas](https://community.ntppool.org/u/Bas)\
**Post date:** [April 18, 2022, 9:28pm UTC](https://community.ntppool.org/t/another-cheap-pps-gps-module-from-garmin/2332/3 "2022-04-18T21:28:59Z")

</div>

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](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:

```auto
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

```

```auto
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:

```auto
# 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.

```auto
     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 🙂

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.

```auto
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.
