見出し画像

PiZero2W+GPS/PPSでMacOSを高精度に時刻合わせする その1

先に作成した記事では、MacOSにGPSレシーバをUSB接続し、GPS信号から時刻を取り出して時刻合わせを行いました。しかしFT8で送信を行うとGPSレシーバが停止するという問題が見つかり、検証を進められないために現時点ではこの方法はおすすめしていません。

そこで、代替案を検討しました。Macが自前でGPS信号を処理する代わりに、Raspberry Pi (以下、RasPi) にGSP信号を処理するNTPサーバを立て、MacからこのRasPiを参照すればよさそうです。


この時、MacOSとRasPiをLANケーブルで接続してもいいのですが、少なくとも私のMBAにはLANポートがなく、USB-C対応のLANアダプタが必要になります。では有線ではなく無線で接続しようとすると、APが必要になります (RasPiを無線APにするという選択肢もありますが) 。また、当然ですがRasPiの電源も必要になります。

そこでOTG接続です。RasPiとMacをUSBで接続し、ケーブル1本で給電と通信を賄うことができます。便利ですね。

ただし、このアイディアを実現するにはいくつかのハードルを越える必要があります。結構なボリュームになりますので、いくつかの記事に分けたいと思います。


Raspberry Piを用意する

最新モデルはRasPi5ですが、要求する電流が多ければ発熱も多いので、今回の目的には過剰スペックです。RasPi4はOTGに対応しますので候補に入れておきましょう。しかしもっとよいモデルがあります。

Raspberry Pi Zero 2 W

それがRaspberry Pi Zero 2 W (以下、PiZero2W) です。フリスクのケースに納まるサイズですが、64bit ARMコアの搭載されたLinux PCとして動作します。

Raspberry Pi Zero 2 W

一時期は世界的な半導体不足で入手困難でしたが、現時点では広く入手可能になっています。以下に国内の正規代理店のリンクを挙げますが、これら以外でも入手可能です。

旧モデルとして無線機能のないRaspberryPi Zeroや、WiFiに対応したRaspberryPi Zero Wもありますが、いずれもスペックが低く、セットアップ時にストレスを感じることが多々あります。ここは現行のPiZero2Wを採用しましょう。

2x20 ピンヘッダ

GPSレシーバをシリアル接続する際に、PiZero2Wの基板に直接はんだ付けしてもよいですが、ピンヘッダをはんだ付けしておくと便利です (代わりにコネクタとハウジングが必要になります) 。こちらは代理店以外からも入手可能です。


PiZero2Wをセットアップする

長くなりましたので、別の記事として分離しました。


PiZero2WとMacをOTG接続する

それでは電源を入れましょう。と言いたいところですが、その前にPiZero2WのUSBポートについて。

OTG接続時の注意点

通常は給電用のPWR INと書かれたUSBポートにケーブルを差しますが、今回はOTG接続なのでその隣 (まん中寄り) のUSBと書かれたポートにケーブルを接続します。

ケーブルのもう一旦はMacに接続します。USB-C・microUSBの変換ケーブル
(または変換アダプタ、USBハブ等) が必要です。ケーブルは短かい方が作業の邪魔になりませんが、長い方がアンテナ設置の自由度が増し、本番のGPS信号受信に有利かも知れません。

USBケーブルを接続

それではUSBケーブルを接続しましょう。通電してPiZero2Wが起動します。

初回起動時はパーティションサイズの変更などの処理が走りますので、時間が掛かります。ケーブルを差した後はしばらく待ちましょう。microSDのスピードによっては5分10分待つ必要があるかも知れませんが、焦ってはいけません。

MacOS側の設定

MacからPiZero2Wが認識されると、MacOSのシステム設定→ネットワークにある「その他のサービス」一覧に「RNDIS/Ethernet Gadget」が表示されます。

RNDIS/Ethernet Gadgetが表示される (ただし未接続)

表示されない場合は右下の「…」プルダウンからサービスを追加を選択し、ダイアログのプルダウンから「RNDIS/Ethernet Gadget」を選択し、追加します。

しばらくは「未接続」表示ですが、しばらく待つと 「自己割り当てIP」表示に変わり、表示が上段に移動します。

「自己割り当てIP」に変わり、最上段へ移動

この時点でOTG接続ができており、PiZero2WとMacの間で通信できる状態になっています。試しにpingを打ってみましょう。Imagerで指定したホスト名 + ".local" として参照できます。DNSやhostsファイルの設定は不要です。

% ping -c 3 raspberrypi.local

PING raspberrypi.local (192.168.2.20): 56 data bytes
64 bytes from 192.168.2.20: icmp_seq=0 ttl=64 time=0.849 ms
64 bytes from 192.168.2.20: icmp_seq=1 ttl=64 time=1.033 ms
64 bytes from 192.168.2.20: icmp_seq=2 ttl=64 time=1.037 ms

--- raspberrypi.local ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.849/0.973/1.037/0.088 ms

インターネット共有

さらにPiZero2Wからインターネット接続できるようにしましょう。

システム設定左ペイン上部の検索ウィンドウから「共有」と入力し、左ペインに表示された「インターネット共有」を選択し、右ペインの「インターネット共有」の行右端の (i) ボタンをクリックしてダイアログを表示します。

インターネット共有を設定する

ダイアログが表示されたら、以下のように設定します。

  • 共有する経路→Macのインターネット接続に合わせて選択。通常はWi-Fi

  • 「RNDIS/Ether Gadget」にチェック

  • 最上段の「インターネット共有」をオン

インターネット共有の設定ダイアログ

完了をクリックして設定を終了します。これでOTG接続したPiZero2Wからもインターネットを参照できるようになります。

SSHログイン・システム更新

Macのターミナルを開き、PiZero2WにSSHでリモートログインします。アカウント名がpi、ホスト名がraspberrypiの場合は以下のようになります;

$ ssh pi@raspberrypi.local
 
The authenticity of host 'raspberrypi.local (****::****:****:****:****%en7)' can't be established.
ED25519 key fingerprint is SHA256:********************************************.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'raspberrypi.local' (ED25519) to the list of known hosts.
pi@raspberrypi.local's password: 
Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

初回接続時は接続確認のメッセージが表示されるので、yesと答えてフィンガープリントを保存します。アカウント名/パスワードがデフォルトの pi/raspberry ままだと、上記の末尾2行のように警告が表示されます。

PiZero2Wパッケージ更新

それではまずはシステムを更新してみましょう。

$ sudo apt update

Hit:1 http://deb.debian.org/debian bullseye InRelease
Get:2 http://deb.debian.org/debian bullseye-updates InRelease [44.1 kB]         
Get:3 http://security.debian.org/debian-security bullseye-security InRelease [48.4 kB]
Get:4 http://archive.raspberrypi.org/debian bullseye InRelease [23.6 kB]        
Get:5 http://security.debian.org/debian-security bullseye-security/main arm64 Packages [270 kB]
Get:6 http://security.debian.org/debian-security bullseye-security/main armhf Packages [271 kB]
Get:7 http://security.debian.org/debian-security bullseye-security/main Translation-en [177 kB]
Get:8 http://archive.raspberrypi.org/debian bullseye/main arm64 Packages [307 kB]                
Get:9 http://archive.raspberrypi.org/debian bullseye/main armhf Packages [313 kB]                                                  
Fetched 1,454 kB in 10s (143 kB/s)                                                                                                 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
25 packages can be upgraded. Run 'apt list --upgradable' to see them.
$ sudo apt -y upgrade

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
(以下略)
$ sudo apt clean

問題なく更新できたら、いったんここで電源を落としておきましょう。

$ sudo shutdown -h now

PiZero2Wのランプが消えたらケーブルを抜いても大丈夫です。現時点では、いきなりUSBケーブルを引っこ抜くのはNGです。


その2へ続きます。


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