GNU/Linux >> Znalost Linux >  >> Linux

gpspipe vrací správné časové razítko, ale špatné datum (21. prosince 1995)

Zdá se, že se jedná o známou systémovou/softwarovou chybu:

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

a z manuálové stránky gpsd http://www.catb.org/gpsd/gpsd.html:

Existují přesně dvě okolnosti, za kterých gpsd spoléhá na hodiny hostitelského systému:

Ve vysílaném signálu GPS je čas GPS reprezentován číslem týdne, které se přetočí po 2^10 nebo 2^13 týdnech (asi 19,6 let nebo 157 let), v závislosti na kosmické lodi. Od přijímačů se vyžaduje, aby toto uvedli na správné datum, ale mohou mít potíže kvůli tomu, že nezná čas do poloviny tohoto intervalu, nebo mohou mít chyby. Uživatelé nahlásili nesprávná data, která jsou zřejmě způsobena tímto problémem. gpsd používá čas spuštění detekce a kompenzace převrácení démona, když je spuštěn, ale jinak hlásí datum tak, jak je nahlášeno příjemcem, aniž by se ho pokoušelo opravit.

Pokud používáte GPS pouze NMEA (to znamená, že nepoužíváte binární režim SiRF nebo Garminor Zodiac), gpsd se spoléhá na systémové hodiny, které mu sdělí aktuální století. Pokud systémové hodiny vrátí neplatnou hodnotu blízkou nule a GPS nevysílá GPZDA na začátku svého aktualizačního cyklu (což většina spotřebitelských NMEA GPS nedělá), pak část dat ze století, které gpsd dodává, může být chybná. Navíc v blízkosti obratu století může být rozsah dat tak široký v sekundách, jako je přesnost vašich systémových hodin, odkazován na nesprávné století.


Právě jsem prošel řešením tohoto problému.
Příspěvek AndreJ je přesný a pomohl k zahájení mého vyšetřování, proč byly systémové hodiny tak daleko.
V mém případě připojuji GPS přijímač k Raspberry Pi 2 se systémem Ubuntu 14.04. Raspberry Pis nemají hardwarové hodiny a tak brzy v procesu spouštění, než může ntp nastavit hodiny, jsou čas/datum nastaveny blízko začátku epochy (1. ledna 1970).

To mate gpsd:"Jan 1 00:00:13 ubuntu gpsd[814]:gpsd:ERROR:systémový čas vypadá falešně, data nemusí být spolehlivá."

Řešením pro mě je spustit 'fake-hwclock', který ukládá přesné datum/čas do souboru a poté nastaví systémové hodiny z tohoto souboru velmi brzy v procesu spouštění. I když váš stroj nemá hardwarové hodiny s baterií a byl nějakou dobu vypnutý, toto nastavení data/času bude dostatečně přesné, aby gpsd bylo možné „rozlišovat na správné datum.“


Linux
  1. 7 Linux hwclock Příklady příkazů pro nastavení hardwarových hodin Date Time

  2. Příklady příkazů date v Linuxu

  3. Příkaz linux date -s nefunguje pro změnu data na serveru

  1. Linux - příkaz mount vrací nulu/0, ale nefunguje

  2. Příkaz Date uvádí špatné číslo týdne pro 31. prosince

  3. Jak přidat časové razítko do protokolu skriptu bash?

  1. Jak filtrovat záznamy v souboru protokolu na základě časového období

  2. [Vyřešeno]:Jak zabránit synchronizaci hodin virtuálního počítače s hostitelským počítačem a nastavit nezávislý čas?

  3. Správné zamykání skriptů Shell?