Tag Archives: IRIG

Pi GPPS Clocks

Use Chris’ PPS kernel (until I have time or am compelled to compile my own).

Compile ntp 4.2.6p5 as follows (from aquarat):
But first: apt-get install libcap-dev

./configure --enable-ATOM --enable-NMEA --enable-linuxcaps; make; make install

Disable TTY on /dev/AMA0 in /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Set baud rate in /boot/config.txt
init_uart_baud=9600

and
Disable GPU sdram pause
# Disable GPU sdram mem pause
disable_pvt=1

Comment out getty in /etc/inittab:

#Spawn a getty on Raspberry Pi serial line
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Add pps-gpio to /etc/modules

Disable all but $GPRMC sentences (in rc.local in my case since I have no battery):

/bin/echo -e '$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29\r\n' > /dev/ttyAMA0
/etc/init.d/ntp restart

vi /etc/udev/rules.d/09.pps.rules

KERNEL=="ttyAMA0", SYMLINK+="gps0"
KERNEL=="pps0", OWNER="root", GROUP="tty", MODE="0777", SYMLINK+="gpspps0"

Be sure to restart ntp after reducing sentence output. Mine started drifting negative when I didn’t restart.

Here is my ntp.conf.
Some will argue about whether using stratum 1 sanity servers is necessary, noselect, on and on, yada yada.
This works for me and gets me pretty good stability.

I think the numbers speak for themselves. Bear in mind that I will have 2 different GPS clocks in the near future so I am less inclined to sync to an outside source. I keep some of the better known S1 clocks in there purely for my peace of mind. I’m part of the ntppool so I do not use them to sync in the event of a GPS failure. Again, opinions vary.

GPS1:
remote refid st t when poll reach delay offset jitter
==============================================================================
+tick.usno.navy. .IRIG. 1 u 28 64 377 63.014 -0.940 6.541
+ntp.okstate.edu .USNO. 1 u 23 64 377 49.207 -0.392 0.185
-navobs1.wustl.e .GPS. 1 u 14 64 377 49.768 -3.915 0.237
-tick.uh.edu .GPS. 1 u 16 64 377 56.676 5.286 0.388
oGPS_NMEA(0) .GPS1. 0 l 5 8 377 0.000 0.017 0.003
+hcpi002.lan.sid .GPS2. 1 u 8 64 377 0.850 0.157 0.126

GPS2:
remote refid st t when poll reach delay offset jitter
==============================================================================
+tick.usno.navy. .IRIG. 1 u 13 64 377 63.536 -0.624 0.249
+ntp.okstate.edu .USNO. 1 u 16 64 377 49.068 -0.524 0.161
-navobs1.wustl.e .GPS. 1 u 15 64 377 50.469 -4.109 0.163
-tick.uh.edu .GPS. 1 u 5 64 377 56.892 4.870 0.387
oGPS_NMEA(0) .GPS2. 0 l 2 8 377 0.000 -0.100 0.008
+hcpi001.lan.sid .GPS1. 1 u 13 64 377 0.809 -0.358 0.168

Note that the GPSes are still slewing since ntpd was recently restarted.

GPS1 ntp.conf:
driftfile /var/log/ntpstats/ntp.drift
statsdir /var/log/ntpstats/

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# Sanity Servers
server tick.usno.navy.mil iburst
server ntp.okstate.edu iburst
server navobs1.wustl.edu iburst
server tick.uh.edu iburst

restrict default nomodify noquery
restrict 127.0.0.1
restrict 10.1.1.0 mask 255.255.255.0 nomodify

server 127.127.20.0 mode 17 minpoll 3 prefer #use $GPRMC only!
fudge 127.127.20.0 flag1 1 time2 0.350 refid GPS1

peer gps2.lan.side

GPS2 ntp.conf:
driftfile /var/log/ntpstats/ntp.drift
statsdir /var/log/ntpstats/

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# Sanity Servers
server tick.usno.navy.mil iburst
server ntp.okstate.edu iburst
server navobs1.wustl.edu iburst
server tick.uh.edu iburst

restrict default nomodify noquery
restrict 127.0.0.1
restrict 10.1.1.0 mask 255.255.255.0 nomodify

server 127.127.20.0 mode 17 minpoll 3 prefer #use $GPRMC only!
fudge 127.127.20.0 flag1 1 time2 0.350 refid GPS2

peer gps1.lan.side