PiZero2W+GPS/PPSでMacOSを高精度に時刻合わせする その4
その3の続き、いよいよクライマックスです。最後にMac側に時刻合わせの環境を整え、PiZero2Wを接続して時刻合わせを行います。
Macにchronyをインストールする
PiZero2Wにもchronyをインストールしましたが、あちらはNTPサーバ、こちらはNTPクライアントとして動作させます。
HomeBrew
Mac用のパッケージ管理ツールであるHomeBrewを使ってchronyをインストールします。まずはHomeBrewをインストールします。
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
インストール
HomeBrewがインストールできたら、brewコマンドでchronyをインストールします。
% brew update
% brew install chrony
設定
設定ファイルを作成します。デフォルトの設定ファイルの配置場所がPiZero2Wとは異なりますのでご注意を。
% vi /etc/chrony.conf
server raspberrypi.local trust iburst
pool pool.ntp.org iburst
driftfile /var/db/chrony/chrony.drift
bindcmdaddress /opt/homebrew/var/run/chrony/chronyd.sock
log tracking measurements statistics
logdir /var/log/chrony
maxupdateskew 100.0
dumponexit
dumpdir /var/db/chrony
rtcsync
makestep 0.1 3
server行は、PiZero2Wのインストール時に設定した ホスト名.local を指定します。
時刻合わせする
接続
PiZero2WをMacにOTG接続し、接続が確立するのを待ちます。PiZero2Wに割り当てられているIPアドレスも確認したいので、pingを打ってみましょう。
% ping -c 3 raspberrypi.local
PING raspberrypi.local (192.168.2.12): 56 data bytes
64 bytes from 192.168.2.12: icmp_seq=0 ttl=64 time=0.941 ms
64 bytes from 192.168.2.12: icmp_seq=1 ttl=64 time=0.989 ms
64 bytes from 192.168.2.12: icmp_seq=2 ttl=64 time=0.852 ms
--- raspberrypi.local ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.852/0.927/0.989/0.057 ms
私の環境では、PiZero2Wに 192.168.2.12 がIPアドレスとして割り当てられていることが確認できました。
chronyd起動
接続が確立したら、Mac側でchronydを起動します。chronydはバックグラウンドで動作しますので、特にメッセージ等が表示されないままプロンプトが戻ればOKです。
% sudo chronyd
動作確認
PiZero2Wのchronydサーバに接続できているか確認しましょう。
% sudo chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.2.12 1 6 377 10 +11us[ +72us] +/- 448us
^? time.cloudflare.com 3 7 377 5 +5010us[+5010us] +/- 70ms
^? x.ns.gin.ntt.net 2 7 377 69 +791us[ +852us] +/- 66ms
^? ntp-b2.nict.go.jp 1 6 377 2 -206us[ -206us] +/- 9026us
^? time.cloudflare.com 3 6 377 5 +6009us[+6009us] +/- 70ms
接続時に確認したPiZero2WのIPアドレス 192.168.2.12 の行の2文字目が * になっており、時刻ソースにPiZero2Wが選択されていることを確認できます。
トラッキング情報も見てみましょう。
% sudo chronyc tracking
Reference ID : C0A8020C (192.168.2.12)
Stratum : 2
Ref time (UTC) : Tue Jun 04 14:33:56 2024
System time : 0.000016564 seconds slow of NTP time
Last offset : -0.000024515 seconds
RMS offset : 0.001497272 seconds
Frequency : 0.041 ppm fast
Residual freq : -0.007 ppm
Skew : 0.233 ppm
Root delay : 0.000798958 seconds
Root dispersion : 0.000114949 seconds
Update interval : 64.3 seconds
Leap status : Normal
これを見る限りでは問題なく動作しているようです。
簡易的に、NICTが提供しているJST Clockのページをブラウザで開いて、時刻合わせができているか確認します。
ネットワークの状態によっては「0.1秒遅れています」となることもあるようですが、今回は「合っています」となりました。問題なさそうです。
これでGPSからのPPS信号でMacを時刻合わせできるようになりました!
その5に続きます。