DS3231 for pi
2018年11月30日 - 未分類
Raspberry Piには、RTCが付いていないので、電源起動時の時計が狂ってしまいます。fake-hwclockというものが、Raspberry Piの終了時の時刻を記録して、再開時に、その時刻をセットするようですが、停止していた時間だけ誤差が生じます。通常は、インターネットに接続していて、ntpでネットワーク時間を取得するので問題はありませんが、インターネットに接続できない場合には、時刻の設定が手動となるために面倒です。
DS3231 for piは、Raspberry PiのGPIOに挿して使えるRTCです。
このように挿して使います。
$i2cdetect -y 1
で、68が表示されます。
$ sudo vi /boot/config.txt
dtparam=i2c_arm=on
dtoverlay=i2c-rtc,ds3231
を追加して、リブートします。fake-hwclockは、使わないので停止します。
# sudo systemctl stop fake-hwclock # sudo systemctl disable fake-hwclock
RTCを初期化します。
$sudo hwclock --systohc
ルールファイルを作成します。
$ sudo vi /etc/udev/rules.d/85-hwclock.rules
# On the Raspberry Pi the RTC isn't available when systemd tries,
# set the time from RTC now when it is available.
KERNEL=="rtc0", RUN+="/sbin/hwclock --rtc=$root/$name --hctosys"
再度、reboot後には、RTCが使える状態になっています。i2cdetectでは、68がUUに変わります。システムが使っているという意味でしょう。
$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --
$ sudo hwclock -r
2018-11-30 09:44:35.560653+0900 時刻が表示されます。この時刻は、dateコマンドの時刻と同じになります。 再度、リブートしてから、RTCの動作を確認します。
$ timedatectl
Local time: 木 2019-05-09 08:50:35 JST
Universal time: 水 2019-05-08 23:50:35 UTC
RTC time: 水 2019-05-08 23:50:35
Time zone: Asia/Tokyo (JST, +0900)
Network time on: yes
NTP synchronized: no
RTC in local TZ: no
MacOSXでもsshfsを使う
brewで以下の2つをインストールすれば使えるようになります。
$ brew cask install osxfuse
$ brew install sshfs