J'ai:
- Raspberry Pi avec 2015-05-05-raspbian-wheezy
- DS1307 attaché (c'est une carte Adafruit, résistances de pullup non installées).
Comment puis-je:
- configurer les pilotes
- assurez-vous que le Pi utilise réellement l'heure RTC au démarrage?
J'ai fait la première partie, pour autant que je sache, mais pas de chance avec la seconde. Une grande partie des informations disponibles, y compris les instructions Adafruit, sont obsolètes pour cette raison: https://www.raspberrypi.org/forums/viewtopic.php?t=97314
Donc, première étape: vous activez l'I2c et les pilotes dans raspi-config, ajoutez dtoverlay=i2c-rtc,ds1307
à la fin de /boot/config.txt, et vous avez des pilotes, et cela hwclock
fonctionne pour moi maintenant, apparemment (ne peut pas exécuter i2cdetect, plus à ce sujet plus tard).
Vous devez maintenant supprimer fake-hwclock et configurer de sorte qu'il lit réellement le rtc au démarrage. J'ai essayé de suivre ce conseil - qui est en grande partie en accord avec d'autres choses que j'ai vues et qui est très récent - https://www.raspberrypi.org/forums/viewtopic.php?p=842661#p842661
(c'est pour un RTC différent, mais je ne fais que suivre la deuxième partie sur la suppression des fausses heures et ainsi de suite).
Mais pas de chance, et les «lignes à commenter» n'existent pas sur mon pi. Mon pi arrive avec 1 janvier 1970 00:00 et hwclock -r
dit que le RTC est corrompu. Même si je ne me suis pas éteint depuis la configuration du RTC et le redémarrage du pi, il semble donc qu'il ait dû être corrompu par le démarrage.
Je n'ai également pas pu exécuter i2cdetect du tout. Il se plaint que les périphériques / dev / i2c (quelque chose) n'existent pas - et en effet ils n'existent pas ...
Mise à jour provisoire
OK, j'ai établi que:
- la corruption n'est que de l'heure / date info. Si j'utilise i2cset pour remplir le nvram avec un modèle, cette information n'est pas modifiée au redémarrage, mais l'année passe à 0x66
- Si je supprime le
,ds1307
de la lignedtoverlay=i2c-rtc,ds1307
dans config.txt, le système apparaît sans corrompre le RTC! Ce qui soutient l'idée que le pilote lui-même est en train de corrompre les données. J'ai regardé le code du pilote, et il passe par le temps et change les choses qu'il n'aime pas (par exemple, il passe de 12 heures au format 24 heures). Donc, peut-être que le problème est que le pilote est installé à un moment où le port I2C n'est pas réellement prêt à fonctionner (peut-être parce que les horloges ne sont pas prêtes?) - Si je fais cela après le démarrage:
sudo sh -c 'echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device'
cela provoque le chargement du pilote rtc_ds1307 et l'apparition de / dev / rtc0. Et le temps est encore OK. Et donc cela peut être utilisé comme base pour modifier les scripts d'initialisation hwclock -s
Encore un détail amusant: si j'utilise dans un script juste après avoir écrit dans /sys/..../new_device, il échoue. Il doit y avoir unsleep 0.5
ou quelque chose entre.
Il semble donc que j'ai maintenant un système qui peut être arrêté et démarré, et aura le bon moment - je vais écrire cela correctement bientôt.
dtparam=i2c1=on
à config.txt comme travaillé pour micksulley en janvier raspberrypi.org/forums/viewtopic.php?f=28&t=97639 - Reboot. Toujours pas / dev / i2c *, toujours pas de détection i2c.
sudo invoke-rc.d hwclock.sh start
ne fait rien, elle sort car /run/udev
existe. Mais sudo invoke-rc.d hwclock.sh show
lit l'horloge et sudo invoke-rc.d hwclock.sh stop
copie l'horloge système sur l'horloge matérielle.