元々ntpdでStratum 1を運用していたのに、pacman -Syuしていたら、動かなくなりました。
GPS18xLVCとの接続等は、既存記事にお任せします。RS-232CのCD信号にPPS信号をつないで、# ldattach PPS /dev/ttyS0
している前提です。
確認
PPSは動作しているでしょうか。/dev/pps1をpps-toolsで確認します。なお、自分の環境では、/dev/pps0はigbがPTP用に占有している模様。
$ sudo ./ppstest /dev/pps1
trying PPS source "/dev/pps1"
found PPS source "/dev/pps1"
ok, found 1 source(s), now start fetching data...
source 0 - assert 1449307365.000003704, sequence: 597116 - clear 1448717727.100462350, sequence: 7479
source 0 - assert 1449307366.000001027, sequence: 597117 - clear 1448717727.100462350, sequence: 7479
source 0 - assert 1449307367.000002126, sequence: 597118 - clear 1448717727.100462350, sequence: 7479
source 0 - assert 1449307368.000002811, sequence: 597119 - clear 1448717727.100462350, sequence: 7479
問題ないようです。
原因
pacmanで入れるntpdは、PPS readyでないようです。例えばType22のPPS refclockを使う設定でjournalctlすると、refclock_newpeer: clock type 22 invalid
といったエラーが出ます。
対策
とりあえず自分でコンパイルして、ntpdを上書きしました。
記載時の最新版ntp-4.2.8p4では、/usr/include/timepps.hがある状態でconfigureすれば、PPS readyとなるようです。
timepps.hは、LinuxPPSから入手して/usr/include/に設置。configure; make
し、ntpd/ntpdを/usr/sbin/にinstall。
設定
詳細追えていませんが、Linux arch-rm 4.2.5-1-ARCHとntp-4.2.8p4の組み合わせ?では、flag3が1だと、PPSにならないようでした。flag3 0にして、clock disciplineは、一旦ntpdのものを使用。
# NMEA driver
server 127.127.20.0 minpoll 4 maxpoll 4 mode 32 iburst prefer
fudge 127.127.20.0 flag1 1 flag2 0 flag3 0 time2 0.600
結果
$ ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
oGPS_NMEA(0) .GPS. 0 l 12 16 377 0.000 -0.001 0.001
こうでなくっちゃね。
次
謎
元々も自分でbuildしていたのかも?