GNU/Linux >> Linux Esercitazione >  >> Linux

gpspipe restituisce timestamp corretto, ma data errata (21 dic 1995)

Questo sembra essere un noto bug di sistema/software:

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

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

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

e dalla manpage gpsd http://www.catb.org/gpsd/gpsd.html:

Ci sono esattamente due circostanze in cui gpsd fa affidamento sull'orologio del sistema host:

Nel segnale di trasmissione GPS, l'ora GPS è rappresentata utilizzando un numero della settimana che si rinnova dopo 2^10 o 2^13 settimane (circa 19,6 anni o 157 anni), a seconda del veicolo spaziale. I ricevitori sono tenuti a disambiguare questo alla data corretta, ma potrebbero avere difficoltà a causa di non conoscere il tempo entro la metà di questo intervallo o potrebbero avere bug. Gli utenti hanno segnalato date errate che sembrano essere dovute a questo problema. gpsd utilizza l'ora di avvio del demone per rilevare e compensare i rollover mentre è in esecuzione, ma per il resto riporta la data così come viene segnalata dal destinatario senza tentare di correggerla.

Se si utilizza un GPS solo NMEA (ovvero, non si utilizza la modalità binaria SiRF o Garmin o Zodiac), gpsd si basa sull'orologio di sistema per indicare il secolo corrente. Se l'orologio di sistema restituisce un valore non valido vicino allo zero e il GPS non emette GPZDA all'inizio del suo ciclo di aggiornamento (cosa che la maggior parte dei GPS NMEA di livello consumer non fa), allora la parte del secolo delle date fornite da gpsd potrebbe essere errata. Inoltre, in prossimità del cambio di secolo, un intervallo di date ampio in secondi quanto la precisione del tuo orologio di sistema potrebbe essere riferito al secolo sbagliato.


Ho appena risolto questo problema.
Il post di AndreJ è accurato e mi ha aiutato a iniziare la mia indagine sul motivo per cui l'orologio di sistema era così lontano.
Nel mio caso, sto collegando un ricevitore GPS a un Raspberry Pi 2 con Ubuntu 14.04. Raspberry Pis non ha orologi hardware e così presto nel processo di avvio, prima che ntp possa impostare l'orologio, l'ora/la data sono impostate vicino all'inizio dell'epoca (1 gennaio 1970).

Questo confonde gpsd:"Jan 1 00:00:13 ubuntu gpsd[814]:gpsd:ERROR:l'ora del sistema sembra fasulla, le date potrebbero non essere affidabili."

La soluzione per me è eseguire "fake-hwclock" che memorizza la data/ora esatta in un file e quindi imposta l'orologio di sistema da quel file molto presto nel processo di avvio. Anche se la tua macchina non dispone di un orologio hardware con batteria ed è rimasta spenta per un po', questa impostazione di data/ora sarà sufficientemente precisa da consentire a gpsd di "disambiguare alla data corretta".


Linux
  1. Controlla l'ora e la data del tuo computer con systemd

  2. [Risolto]:come impedire la sincronizzazione dell'orologio della macchina virtuale con la macchina host e impostare l'ora dell'orologio indipendente?

  3. Come convertire DATE in UNIX TIMESTAMP nello script di shell su MacOS

  4. perché C clock() restituisce 0

  5. comando linux date -s non funziona per modificare la data su un server

Comando Data in Linux

Come filtrare le voci dei file di registro in base all'intervallo di date

Visualizzazione dell'ora errata nella configurazione del doppio avvio di Windows-Linux? Ecco come risolverlo

Come ottenere l'orologio per mostrare la data?

7 Esempi di comando Date in Linux

Ubuntu 22.10 Nome in codice e data di rilascio