Sunday, July 20, 2014

Raspberry Pi GPS Stratum 1 NTP server

First. most of the credit for this goes to this page.

I stumbled across it after asking myself (and Twitter) how accurate a GPS based NTP server on the Raspberry Pi could be. Accurate timekeeping has always been an interest of mine. Back when I was in college I breadboarded a CHU modem. I bought an early Magellan developer's board and always intended to turn that into a stratum 1 NTP server, but never got around to it. It was always made more difficult because desktop computers generally didn't have very good facilities for accepting the PPS input. Of course, the Raspberry Pi is a whole 'nother story.

I designed a GPS Pi Plate for the purpose, but it turns out that if you just get yourself the Adafruit Ultimate GPS module breakout board, you can pretty easily make yourself a custom 5 pin cable and be done with it.

What you need to make is a 5 pin .1" SIP cable. This cable is going to connect between pins 4 through 12 (that is 4, 6, 8, 10 and 12) on the GPIO connector and the bottom 5 pins of the breakout board (TX, RX, Vin, GND and PPS).

What you want to do is connect pin 4 to Vin, 6 to GND, 8 to RX, 10 to TX and 12 to PPS.

You can use these to achieve this. I used my own supply, but it's the same concept.

I went down the user-space path. All I had to do was install gpsd (and I'm not entirely sure how necessary that was) and rpi_gpio_ntp. The ntpd that comes with wheezy works just fine and is capable of accepting the 127.127.8.x "server" declarations.

ntp.kfu.com is the result - it's a public stratum 1 server. The catch is that it's IPv6 only. :)

No comments:

Post a Comment