【ntpsec】geminiさんに聞いてみよう

監視カメラを運用しているので、そこで動かしているZoneMinderにはできるだけ正確な時計を与えてやらないといけない。

Raspberry Pi 4には、USB接続のGPSを接続していて、それをgpsd経由でntpsecにデータを渡してやり、GPSから時刻データを得るようにしている。

サーバー負荷に応じて、GPSから得た時刻データを調整するのだが、見ているウチに「あれ、進めるんだっけ?遅らせるんだっけ?」と混乱してくるので、AIのgeminiさんに丸投げ(^^:

ntpq -pn の結果から判断すると、適切な time1 の設定値は 0.077(またはより正確には 0.077251)となります。
計算の根拠
NTPにおける offset(オフセット)の単位はミリ秒(ms)です。
現在の設定(time1 0.106)において、基準となる公的機関の NICT(日本の標準時サーバー)と、お使いの GPS(SHM(0))の間で以下のズレが生じています。
    • SHM(0) のオフセット: +5.7048 ms (システム時間より 5.7ms 進んでいる)
    • NICT のオフセット: -23.0438 ms (システム時間より 23.0ms 遅れている)

GPS(SHM)を正確な NICT の時刻に一致させるためには、両者の差分である 28.7486 ms5.7048 - (-23.0438))だけ GPS の時間を遅らせる(マイナスする)必要があります。
    • 現在の設定値: 0.106
    • 必要な修正量: -0.0287486
    • 新しい設定値: 0.106 - 0.0287486 = 0.0772514

修正後の設定例
/etc/ntp.conf の該当箇所を以下のように書き換えてください。

この設定値は、USB接続のGPSからデータを取ってくるのに、遅延が発生するので、設定値によって、遅延分の時刻を先に進ませるという趣旨のパラメータ。

なので、設定値を増やすと時計が進むし、少なくすると時計が遅れるという仕組み。

ntpqコマンドで状態を見ると、基準となっているのが、Raspberry Pi 4のシステム時計で、それよりもGPSやNTPサーバーの時刻が進んでいたら正の値で、遅れていると負の値になる。

GPSの値と、基準とするNTPサーバーの値を見ていると、プラスだったりマイナスだったりするので、混乱してくるのだ(笑)

geminiさんに丸投げは楽でいいね 🙂