Configurar e integrar un RTC en Raspbian Jessie: hwclock y ntpd

En el artículo anterior vimos como configurar el interfaz i2c en Raspbian para conectar un RTC. Para interactuar con él necesitamos hacer algunos cambios más.

Para añadir el soporte para el RTC puede añadirse una superposición de árbol de dispositivos (device tree overlay), añadiendo una opción dtoverlay al final de /boot/config.txt. Al tratarse de un DS3231, la opción es dtoverlay=i2c-rtc,ds3231. Al reiniciar el equipo y ejecutar el comando:

~$ sudo i2cdetect -y 1

Veremos que en la dirección 0x68 las letras UU.

Eso significa que el sistema operativo ha reconocido el RTC y está conectado a él (UU indica que el dispositivo está ocupado).

Ahora debemos desactivar el fake hwclock para que no interfiera con nuestro RTC:

~$ sudo apt-get -y remove fake-hwclock ~$ sudo update-rc.d -f fake-hwclock remove

Y comenta las siguientes líneas en /lib/udev/hwclock-set con un corchete:

if [ -e /run/systemd/system ] ; then exit 0 fi

Para interactuar con el RTC utilizaremos el comando hwclock. Para leer la hora:

~$ sudo hwclock -r

Para cargar la hora del sistema operativo al RTC:

~$ sudo hwclock -w

Para cargar la hora del RTC al sistema operativo:

~$ sudo hwclock -s

Para cambiar la hora del RTC a una fecha dada:

sudo hwclock –set –date="yyyy-mm-dd hh:mm:ss"

Y ahora npd

Para integrar nuestro RTC con npd abrimos el archivo /etc/ntp.conf, y añadimos las siguientes líneas justo despues de los servidores NTP:

server 127.127.1.1 fudge 127.127.1.1 stratum 12

Reiniamos ntpd y comprobamos que conecta con el RTC con ntpq -p:

El tercer elemento corresponde con el RTC. Con esta configuración, en el caso de que ntpd no sea capaz de conectar con ninguno de los servidores, NTP cargará la hora del RTC.

Por último unos trúcos para mantener la hora precisa durante largos periodos de tiempo.