tengo desde hace un par de años un programilla que hice para sincronizar la hora del ordenador
con servidores de tiempo en Internet. El motivo de hacerlo vino de pruebas que hice con otros programas y que no me dejaron contento. Al conectarse con los servidores habitualmente daban una buena hora, pero de vez en cuando les daba una neura y daban errores de más de 50ms.
Mi programa (AstroTimeSync) se conecta simultáneamente con varios servidores, toma la hora de cada uno de ellos y saca la media. Para evitar que los servidores que han dado una hora mala estropeen la medición hago un sigma-clipping para excluir las mediciones muy diferentes a las demás. Con esta técnica consigo precisiones mejores que una centésima de segundo.
Creo que puede ser de utilidad para más gente, por lo que he decido publicarlo. Como no gano nada con ella, doy la aplicación tal cual. No me comprometo ni a dar soporte, ni corregir fallos, ni siquiera a que funcione bien


Es una aplicación para Windows y requiere tener instalado .Net 2.0 y una conexión a Internet. La instalación consiste en simplemente descomprimir el .zip en una carpeta.
El archivo servers.txt contiene los servidores NTP a los que se conecta. Se puede modificar este archivo para añadir o quitar servidores. En cualquier caso no conviene sobrepasar los 15 servidores. Para cada servidor se hacen tres peticiones.
La aplicación es muy sencilla. Basta con pulsar el botón Start para que se inicie el proceso de mediciones. El valor de la frecuencia determina el número de segundos entre mediciones.
Si se pulsa el botón "Sync Now" realiza inmediatamente una medición independientemente de la frecuencia de mediciones. Si se desactiva "Set Clock" el programa calcula el error del reloj pero no lo corrige.
Importante: Para poder cambiar la hora del ordenador requiere ejecutarse con permisos de administrador. Si no se desea ejecutar la aplicación en modo de Administrador, se puede borrar el archivo "AstroTimeSync.exe.manifest". En este caso se realizarán las mediciones y calculará la corrección, pero no cambiará la hora del ordenador.
El archivo de configuración AstroTimeSync.exe.config permite configurar varias opciones:
- AutoStart: Si vale True la aplicación inicia las mediciones automáticamente al arrancar la aplicación sin necesidad de pulsar Start.
- Frequency: Valor por defecto para la frecuencia de mediciones.
- SetClock: Valor por defecto para "Set clock".
La aplicación dispone de un modo oculto consiste en que cuando se minimiza la aplicación desaparece de la barra de tareas. Para poderla recuperar la aplicación pone un icono en el área de notificaciones de la barra de tareas (junto al reloj). Haciendo un dobleclick sobre el icono se restaura la aplicación. Además he añadido un parámetro "Minimized" en el archivo de configuración que cuando vale "True" hace que la aplicación arranque minimizada.
El parámetro de agresividad configura si el error del reloj se corrige totalmente (valor 10) o si se reduce la corrección. Dado que la medida del error del reloj tiene sus propios errores conviene aplicar correcciones un poco menores para evitar oscilaciones en el reloj. Si el reloj oscila mucho hay que bajar el valor de la agresividad. Por el contrario, si las correcciones no llegan a corregir la deriva del reloj hay que aumentar la agresividad.
Esta versión calcula la deriva del reloj del sistema y aplica una corrección directamente sobre el reloj. Esto hace que el reloj se desvíe mucho menos entre medidas y la hora se mantenga más constante. La velocidad de la deriva se muestra en milisegundos por minuto (ms/min). Para calcular la deriva se necesitan como mínimo 9 medidas que abarquen 4 minutos. Para conseguirlas rápidamente la aplicación aumenta automáticamente la frecuencia de medidas hasta que se cumple la condición.
Con la corrección de deriva el funcionamiento es tan bueno que realmente no merece la pena bajar la frecuencia por debajo de los 60s. He hecho pruebas con un ordenador que tiene un reloj bastante malo con una deriva de más de 7 milisegundos por minuto. El RMS que obtengo con esta versión es de unos 2.5ms con una frecuencia de 60s. Con la versión anterior el RMS rondaba los 8ms. En ordenadores con mejores relojes el RMS puede estar por debajo de los 2ms.
La aplicación se puede obtener en este enlace:
Última versión: https://dl.dropboxusercontent.com/.../AstroTimeSync.zip