GNU/Linux >> Tutoriales Linux >  >> Linux

gpspipe devuelve la marca de tiempo correcta, pero la fecha incorrecta (21 de diciembre de 1995)

Esto parece ser un error conocido del sistema/software:

http://forums.gpsreview.net/discussion/29425/garmin-gps-iii-plus-date-problem

http://ondacontinua.com/ubb/Forum6/HTML/002815.html

http://www.colorado.edu/geography/gcraft/notes/gps/gpseow.htm

y de la página de manual de gpsd http://www.catb.org/gpsd/gpsd.html:

Hay exactamente dos circunstancias en las que gpsd depende del reloj del sistema host:

En la señal de transmisión de GPS, el tiempo de GPS se representa mediante un número de semana que pasa después de 2^10 o 2^13 semanas (alrededor de 19,6 años o 157 años), según la nave espacial. Se requiere que los receptores desambigüen esto a la fecha correcta, pero pueden tener dificultades debido a que no conocen el tiempo dentro de la mitad de este intervalo, o pueden tener errores. Los usuarios informaron fechas incorrectas que parecen deberse a este problema. gpsd usa la hora de inicio del daemon detecta y compensa los cambios mientras se está ejecutando, pero de lo contrario informa la fecha tal como la informa el receptor sin intentar corregirla.

Si usa un GPS solo NMEA (es decir, no usa el modo binario SiRF o Garminor Zodiac), gpsd se basa en el reloj del sistema para indicar el siglo actual. Si el reloj del sistema devuelve un valor no válido cercano a cero y el GPS no emite GPZDA al comienzo de su ciclo de actualización (algo que no hacen la mayoría de los GPS NMEA de nivel de consumidor), entonces la parte del siglo de las fechas que entrega gpsd puede ser incorrecta. Además, cerca del cambio de siglo, un rango de fechas tan amplio en segundos como la precisión del reloj de su sistema puede referirse al siglo equivocado.


Acabo de pasar por la solución de este problema.
La publicación de AndreJ es precisa y me ayudó a comenzar mi investigación sobre por qué el reloj del sistema estaba tan desfasado.
En mi caso, estoy conectando un receptor GPS a una Raspberry Pi 2 con Ubuntu 14.04. Raspberry Pis no tiene relojes de hardware y, por lo tanto, al principio del proceso de arranque, antes de que ntp pueda configurar el reloj, la hora/fecha se configuran cerca del comienzo de la época (1 de enero de 1970).

Esto confunde a gpsd:"1 de enero 00:00:13 ubuntu gpsd[814]:gpsd:ERROR:la hora del sistema parece falsa, es posible que las fechas no sean confiables".

La solución para mí es ejecutar 'fake-hwclock' que almacena la fecha/hora exacta en un archivo y luego configura el reloj del sistema desde ese archivo muy temprano en el proceso de arranque. Incluso si su máquina carece de un reloj de hardware con batería y ha estado apagada durante un tiempo, esta configuración de fecha/hora será lo suficientemente precisa como para que gpsd pueda "desambiguar la fecha correcta".


Linux
  1. 7 ejemplos de comandos Linux hwclock para configurar la fecha y la hora del reloj del hardware

  2. Cómo convertir DATE a UNIX TIMESTAMP en script de shell en MacOS

  3. por qué C clock () devuelve 0

  4. Comparación de fechas en Bash

  5. Linux:el comando de montaje devuelve cero/0 pero no funciona

Comando de fecha en Linux

¿Se muestra la hora incorrecta en la configuración de arranque dual de Windows-Linux? Aquí está cómo solucionarlo

¿Bloqueo correcto en scripts de Shell?

¿Cómo hacer que el reloj muestre la fecha?

7 ejemplos de comando de fecha en Linux

Ubuntu 22.10 Nombre en clave y fecha de lanzamiento