私が持っています:
- Raspberry Pi with 2015-05-05-raspbian-wheezy
- ds1307が接続されています(これはAdafruitボードで、プルアップ抵抗は取り付けられていません)。
方法:
- ドライバーの構成
- Piが起動時に実際にRTC時間を使用することを確認しますか?
私が知る限り、実際には最初の部分を実行しましたが、2番目の部分では運がありません。Adafruitの手順を含む、そこにある情報の多くは、これが原因で廃止されています。https://www.raspberrypi.org/forums/viewtopic.php?t = 97314
したがって、最初のステップ:raspi-configでI2cとドライバーを有効にし、/ boot / config.txt dtoverlay=i2c-rtc,ds1307
の最後に追加します。ドライバーがあり、hwclock
今は私のために機能します(i2cdetectを実行できないなど)。後で)。
次に、fake-hwclockを削除し、起動時に実際にrtcを読み取るように設定する必要があります。私はこのアドバイスに従うように努めてきました-これは私が見た他の事柄とほぼ一致しており、ごく最近です-https://www.raspberrypi.org/forums/viewtopic.php?p = 842661#p842661
(これは別のRTCの場合ですが、私は偽のhwclockなどを削除することについての2番目の部分だけに従っています)。
しかし、運が悪く、「コメントアウトされる行」は私のpiには存在しません。私のpiは1970年1月1日00:00に表示されhwclock -r
、RTCが破損していると言います。RTCを設定してpiを再起動してから電源を切らなかった場合でも、起動時に破損したようです。
また、i2cdetectをまったく実行できませんでした。デバイス/ dev / i2c(something)が存在しない、そして実際には存在しないという不満があります...
暫定アップデート
OK、私はそれを確立しました:
- 破損は時間/日付情報のみです。i2csetを使用してnvramにパターンを入力すると、その情報は再起動時に変更されませんが、年は0x66になります
- config.txt
,ds1307
の行からを削除するとdtoverlay=i2c-rtc,ds1307
、RTCを破損することなくシステムが起動します。これは、ドライバー自体がデータを破損しているという考えをサポートしています。私はドライバのコードを見てきましたが、それは時間を経て、好ましくないものを変更します(たとえば、12時間形式から24時間形式に変更されます)。したがって、おそらく問題は、I2Cポートが実際に動作する準備ができていないときにドライバがインストールされていることです(おそらく、クロックが準備されていないためでしょうか?) - 起動後にこれを行う
sudo sh -c 'echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device'
と、rtc_ds1307ドライバーが読み込まれ、/ dev / rtc0が表示されます。そして、時間はまだ大丈夫です。そして、それはinitスクリプトを変更する方法の基礎として使用することができます - もう1つの楽しい詳細:
hwclock -s
/sys/..../new_deviceに書き込んだ直後にスクリプトで使用すると、失敗します。sleep 0.5
間に何かがある必要があります。
だから、シャットダウンして起動できるシステムができたようです。正しい時刻になるでしょう-これはすぐに正しく書き上げます。
dtparam=i2c1=on
1月にmicksulleyために働いたとしてのconfig.txtにraspberrypi.org/forums/viewtopic.php?f=28&t=97639 を再起動します- 。まだ/ dev / i2c *はなく、まだi2cdetectはありません。
sudo invoke-rc.d hwclock.sh start
は何もせず、/run/udev
存在するため終了します。しかしsudo invoke-rc.d hwclock.sh show
、クロックを読み取り、sudo invoke-rc.d hwclock.sh stop
システムクロックをハードウェアクロックにコピーします。