LoginSignup
10
11

More than 5 years have passed since last update.

RaspberryPi - DS3231(RTC)設定

Last updated at Posted at 2016-06-24
  • I2C-RTC, SPI-Ethernet, UART(USB-Serial)を接続の図
    RPiZero_RTC_Ether.png

環境

  • Raspberry Pi (Zero/2/3で確認)
  • DS3231 (RTC バックアップ電池つき)
  • Raspbian: 2016-05-27-raspbian-jessie-lite.img

手順

  1. sudo raspi-config
    • I2C有効化
      9 Advanced Options > A6 I2C > Enable
  2. sudo vi /boot/config.txt

    /boot/config.txt以下を最後に追加
    ...
    dtoverlay=i2c-rtc,ds3231
    
  3. sudo reboot
    再起動

  4. sudo vi /lib/udev/hwclock-set

    /lib/udev/hwclock-set以下をコメントアウト
    ...
    #if [ -e /run/systemd/system ] ; then
    #    exit 0
    #fi
    ...
    
  5. サービス停止(fake-hwclock,ntp)、ntpdateで時刻補正をして、RTCに保存、shutdown

    sudo update-rc.d fake-hwclock disable
    sudo update-rc.d ntp disable
    sudo apt-get -y install ntpdate i2c-tools
    sudo sh -c 'ntpdate pool.ntp.org ; hwclock -w'
    sudo shutdown -h now
    
  6. 電源をおとして、ちょいとまってから、電源を入れなおして、時刻確認: date

  • 1970年とかになってる???
  • 数秒(電源を落としていた時間くらい)ずれてる???

その他

fake-hwclock

  • /sbin/fake-hwclock

    • シャットダウン時に、現在時刻を/etc/fake-hwclock.dataへ保存。
      (date -u '+%Y-%m-%d %H:%M:%S' > $FILE)
    • 起動時に、/etc/fake-hwclock.dataを読み込み、現在時刻として、設定。
    • 参考:

      fake-hwclock.dataの中身
      pi@raspberrypi:/etc/init.d$ cat /etc/fake-hwclock.data
      2016-06-25 01:17:01
      
  • サービス: /etc/init.d/fake-hwclock/sbin/fake-hwclockを呼ぶ

    • stop|reload|restart|force-reload)

          echo "Stopping fake hwclock: saving system time."
          fake-hwclock save;;
      
    • start)

          echo "Starting fake hwclock: loading system time."
          fake-hwclock load $FORCE ;;
      
  • 通常の時刻は、ntpで補正... してるんだよね?

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11