見出し画像

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のページをブラウザで開いて、時刻合わせができているか確認します。

JST Clockで簡易的に確認

ネットワークの状態によっては「0.1秒遅れています」となることもあるようですが、今回は「合っています」となりました。問題なさそうです。

これでGPSからのPPS信号でMacを時刻合わせできるようになりました!


その5に続きます。


この記事が気に入ったらサポートをしてみませんか?