Yo tengo:
- Raspberry Pi con 2015-05-05-raspbian-wheezy
- ds1307 conectado (es una placa Adafruit, las resistencias pullup no están instaladas).
Cómo puedo:
- configurar controladores
- ¿se asegura de que el Pi realmente use el tiempo RTC al inicio?
De hecho, he hecho la primera parte, por lo que puedo ver, pero no tuve suerte con la segunda. Gran parte de la información disponible, incluidas las instrucciones de Adafruit, son obsoletas debido a esto: https://www.raspberrypi.org/forums/viewtopic.php?t=97314
Entonces, primer paso: habilita el I2c y los controladores en raspi-config, agrega dtoverlay=i2c-rtc,ds1307
al final de /boot/config.txt, y tiene controladores, y hwclock
funciona para mí ahora, aparentemente (no puede ejecutar i2cdetect, más en eso luego).
Ahora necesita eliminar fake-hwclock y configurarlo para que realmente lea el rtc al inicio. He estado tratando de seguir este consejo, que está en gran medida de acuerdo con otras cosas que he visto, y es muy reciente: https://www.raspberrypi.org/forums/viewtopic.php?p=842661#p842661
(eso es para un RTC diferente, pero solo estoy siguiendo la segunda parte sobre la eliminación de fake-hwclock y así sucesivamente).
Pero no tuve suerte, y las 'líneas para comentar' allí no existen en mi pi. Mi pi aparece el 1 de enero de 1970 a las 00:00 y hwclock -r
dice que el RTC está dañado. Incluso si no me apagué desde que configuré el RTC y reinicié el pi, parece que debe haber sido dañado por el inicio.
Tampoco he podido ejecutar i2cdetect en absoluto. Se queja de que los dispositivos / dev / i2c (algo) no existen, y de hecho no ...
Actualización provisional
OK, he establecido que:
- la corrupción es solo de la información de hora / fecha. Si uso i2cset para llenar el nvram con un patrón, esa información no se modifica al reiniciar, pero el año va a 0x66
- Si elimino el
,ds1307
de la líneadtoverlay=i2c-rtc,ds1307
en config.txt, ¡el sistema aparece sin dañar el RTC! Lo que respalda la idea de que el controlador está corrompiendo los datos. Observé el código del controlador, revisa el tiempo y cambia cosas que no le gustan (por ejemplo, cambia el formato de 12 horas a 24 horas). Entonces, quizás el problema es que el controlador está instalado en un momento en que el puerto I2C no está realmente listo para funcionar (¿tal vez debido a que los relojes no están listos?) - Si hago esto después del inicio:
sudo sh -c 'echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device'
hace que se cargue el controlador rtc_ds1307 y que aparezca / dev / rtc0. Y el tiempo aún está bien. Y eso puede usarse como base para modificar los scripts de inicio - Un detalle más divertido: si lo uso
hwclock -s
en un script justo después de escribir en /sys/..../new_device, falla. Tiene que haber unsleep 0.5
o algo en medio.
Parece que ahora tengo un sistema que se puede apagar y encender, y que tendrá la hora correcta. Escribiré esto correctamente pronto.
dtparam=i2c1=on
a config.txt como trabajado para micksulley en enero raspberrypi.org/forums/viewtopic.php?f=28&t=97639 - Reinicio. Todavía no / dev / i2c *, aún no hay i2cdetect.
sudo invoke-rc.d hwclock.sh start
no hace nada, sale porque /run/udev
existe. Pero sudo invoke-rc.d hwclock.sh show
lee el reloj y sudo invoke-rc.d hwclock.sh stop
copia el reloj del sistema en el reloj de hardware.