RTCモジュール(ds3231)のセットアップ。
I2Cインターフェースを有効にする
sudo nano /boot/config.txt
#dtparam=i2c_arm=on の記述を探し、有効化する
dtparam=i2c_arm=on
に変更
Raspberry Pi にRTC 取付
ピン配置
RasPiピン番号 DS3231モジュール
1 3V3 power VIN 電源(3.3V)
3 GPIO2 (SDA) SDA I2Cデータ
5 GPIO3 (SCL) SCL I2Cクロック
7 GPIO4 (GPCLK0) NC 未使用
9 Ground GND グランド (0V基準電圧)
起動して状態確認
i2cdetect -y 1
下記状態(アドレス0x68が68)ならOK
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
RTCモジュールをOSに登録
sudo nano /boot/config.txt
最終行に下記内容を追記する。
dtoverlay=i2c-rtc,ds3231
再起動
reboot
起動して状態確認
i2cdetect -y 1
下記状態(アドレス0x68がUU)ならOK
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
・RTCの時刻をシステム時刻に設定するサービスを登録
/etc/systemd/systemに、下記の内容のhwclock-start.service ファイルを新規作成。
sudo nano /etc/systemd/system/hwclock-start.service
下記内容張り付け
[Unit]
Description=hwclock-start to read rtc and write to system clock
After=sysinit.target
[Service]
Type=oneshot
ExecStart=/sbin/hwclock --hctosys --utc
[Install]
WantedBy=basic.target
再起動実施
sudo reboot
RTCの時刻をシステム時刻に設定するサービスを登録しサービスを起動。
sudo systemctl daemon-reload
sudo systemctl enable hwclock-start.service
sudo systemctl start hwclock-start.service
ネットに接続していれば、(15分程度待つ場合もある)正しい時刻が設定される。
手動で設定する場合
sudo hwclock --set --date "18 Aug 2023 15:00:00"
確認
date
timedatectl
fake-hwclock の解除。
sudo systemctl stop fake-hwclock
sudo systemctl disable fake-hwclock
sudo apt remove fake-hwclock
以上で、
ネットに接続されていない場合、RTCの時刻がシステム時刻に適用される、
インターネットに接続されている場合はその値がRTCに設定されてシステム時刻に適用されるはず。
*HiFiBerry 搭載する場合は物理的に干渉するので排他仕様、常時起動で有線LAN接続している場合はnptと同期設定すれば良いが、konalinuxは設定済みっぽい。
確認コマンド=timedatectl
timedatectl
Local time: 土 2023-08-19 20:04:07 JST
Universal time: 土 2023-08-19 11:04:07 UTC
RTC time: n/a
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
NTPサービスはアクティブになっているのでOK???要確認。