Io ho:
- Raspberry Pi con 2015-05-05-raspbian-wheezy
- ds1307 allegato (è una scheda Adafruit, resistori pullup non installati).
Come posso:
- configurare i driver
- assicurarsi che il Pi utilizzi effettivamente l'ora RTC all'avvio?
In realtà ho fatto la prima parte, per quanto posso dire, ma senza fortuna con la seconda. Molte delle informazioni disponibili, comprese le istruzioni di Adafruit, sono obsolete a causa di ciò: https://www.raspberrypi.org/forums/viewtopic.php?t=97314
Quindi, primo passo: abiliti I2c e driver in raspi-config, aggiungi dtoverlay=i2c-rtc,ds1307
alla fine di /boot/config.txt, e hai i driver e hwclock
funziona per me ora, a quanto pare (non è possibile eseguire i2cdetect, altro più avanti).
Ora è necessario rimuovere fake-hwclock e configurarlo in modo che legga effettivamente l'RTC all'avvio. Ho cercato di seguire questo consiglio - che è in gran parte in accordo con altre cose che ho visto ed è molto recente - https://www.raspberrypi.org/forums/viewtopic.php?p=842661#p842661
(vale per un diverso RTC, ma sto solo seguendo la seconda parte sulla rimozione di fake-hwclock e così via).
Ma nessuna fortuna, e le "righe da commentare" non esistono sul mio pi. Il mio pi arriva il 1 gennaio 1970 00:00 e hwclock -r
dice che l'RTC è corrotto. Anche se non mi sono spento da quando ho impostato RTC e riavviato il pi, quindi sembra che sia stato corrotto all'avvio.
Inoltre, non sono stato in grado di eseguire i2cdetect. Si lamenta che i dispositivi / dev / i2c (qualcosa) non esistono - e in effetti non ...
Aggiornamento intermedio
OK, ho stabilito che:
- la corruzione è solo delle informazioni di data / ora. Se utilizzo i2cset per riempire il nvram con un modello, tali informazioni non vengono modificate al riavvio, ma l'anno passa a 0x66
- Se rimuovo il
,ds1307
dalla lineadtoverlay=i2c-rtc,ds1307
in config.txt, allora il sistema viene fuori senza corrompere l'RTC! Il che supporta l'idea che il driver stesso sta corrompendo i dati. Ho guardato il codice del driver, che passa attraverso il tempo e cambia le cose che non gli piacciono (ad esempio cambia il formato da 12 ore a 24 ore). Quindi, forse il problema è che il driver è installato in un momento in cui la porta I2C non è effettivamente pronta per funzionare (forse perché gli orologi non sono pronti?) - Se lo faccio dopo l'avvio:
sudo sh -c 'echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device'
fa caricare il driver rtc_ds1307 e appare / dev / rtc0. E il tempo è ancora OK. E così che può essere usato come base per modificare gli script init - Un altro dettaglio divertente: se uso
hwclock -s
in uno script subito dopo aver scritto su /sys/..../new_device, non riesce. Ci deve essere unsleep 0.5
o qualcosa tra.
Quindi sembra che ora ho un sistema che può essere spento e avviato e avrò l'ora corretta - lo scriverò correttamente presto.
dtparam=i2c1=on
a config.txt come ha funzionato per micksulley a gennaio raspberrypi.org/forums/viewtopic.php?f=28&t=97639 - Riavvia. Ancora nessun / dev / i2c *, ancora nessun i2cdetect.
sudo invoke-rc.d hwclock.sh start
non fa nulla, esce perché /run/udev
esiste. Ma sudo invoke-rc.d hwclock.sh show
legge l'orologio e sudo invoke-rc.d hwclock.sh stop
copia l'orologio di sistema sull'orologio hardware.