Понадобилось синхронизировать сервер с внешним источником времени (устройство, которое только разрабатывается). Решил использовать драйвер 20 "Generic NMEA GPS Receiver" в качестве источника синхронизации ntp (поскольку устройство только разрабатывается, можно выбрать любой протокол).
Для пробы написал небольшой скрипт, который в com-порт каждую секунду генерирует строки в соответствии с документацией. Использовал режим GPRMC.
Генерируемые строки:
$GPRMC,174509,A,5542.23,N,03741.60,E,0.6,2.2,051112,1.1,E*78
$GPRMC,174510,A,5542.23,N,03741.60,E,0.6,2.2,051112,1.1,E*70
$GPRMC,174512,A,5542.23,N,03741.60,E,0.6,2.2,051112,1.1,E*72
$GPRMC,174513,A,5542.23,N,03741.60,E,0.6,2.2,051112,1.1,E*73Соответственно каждая строка заканчивается <cr><ln>
Остальные параметры брал из примера википедии. Пробовал так же пропустить остальные параметры (просто запятые подряд), пробвал убрать контрольную сумму (в доке на драйвер написано что она опциональная), резальтат один, логи ntp говорят:5 Nov 12:44:45 ntpd[1135]: clock GPS_NMEA(0) event 'clk_badtime' (0x06)
ntpq говорит:
ntpq> cv
assID=0 status=0606 clk_badtime, last_clk_badtime,
device="NMEA GPS Clock",
timecode="$GPRMC,174513,A,5542.23,N,03741.60,E,0.6,2.2,051112,1.1,E*73",
poll=2, noreply=0, badformat=0, baddata=26, fudgetime1=0.000, stratum=0,
refid=GPS, flags=0Пробовал использовать режим GPGLL, тоже самое
>[оверквотинг удален]
> Генерируемые строки:
> $GPRMC,174509,A,5542.23,N,03741.60,E,0.6,2.2,051112,1.1,E*78
> $GPRMC,174510,A,5542.23,N,03741.60,E,0.6,2.2,051112,1.1,E*70
> $GPRMC,174512,A,5542.23,N,03741.60,E,0.6,2.2,051112,1.1,E*72
> $GPRMC,174513,A,5542.23,N,03741.60,E,0.6,2.2,051112,1.1,E*73
> Соответственно каждая строка заканчивается <cr><ln>
> Остальные параметры брал из примера википедии. Пробовал так же пропустить остальные параметры
> (просто запятые подряд), пробвал убрать контрольную сумму (в доке на драйвер
> написано что она опциональная), резальтат один, логи ntp говорят:
> 5 Nov 12:44:45 ntpd[1135]: clock GPS_NMEA(0) event 'clk_badtime' (0x06)звучит банально, но: почитать RFC вместо вики?
> ntpq говорит:
> ntpq> cv
> assID=0 status=0606 clk_badtime, last_clk_badtime,
> device="NMEA GPS Clock",
> timecode="$GPRMC,174513,A,5542.23,N,03741.60,E,0.6,2.2,051112,1.1,E*73",
> poll=2, noreply=0, badformat=0, baddata=26, fudgetime1=0.000, stratum=0,
> refid=GPS, flags=0
> Пробовал использовать режим GPGLL, тоже самое
> звучит банально, но: почитать RFC вместо вики?Хм, вобщем-то я читал документацию на драйвер 20 отсюда: http://www.fifi.org/doc/ntp-doc/html/driver20.htm
Разночтений не нашёл
RFC не читал, спасибо, прочитаю :)
>> звучит банально, но: почитать RFC вместо вики?
> Хм, вобщем-то я читал документацию на драйвер 20 отсюда: http://www.fifi.org/doc/ntp-doc/html/driver20.htm
> Разночтений не нашёл
> RFC не читал, спасибо, прочитаю :)потом можно будет почитать исходник парсера ntp
Вобщем Дело оказалось вовсе не в этом.
ntp ругался в случае если время на GPS сильно уходило вперёд (4 часа)