Настройка модуля GPS

Добавил модуль GPS конфигурацию Wirenboard как указано в https://wirenboard.com/wiki/index.php?title=Wiren_Board_6:_WBE2R-R-GPS_GPS/GLONASS_Extension_Module
Что делать дальше? Как синхронизировать внутренние часы контроллера по GPS? Настройка ntp я так понимаю не требуется.

Из коробки синхронизация не настроена. У нас описана процедура установки и настройки ntpd для работы с временем из NMEA-сообщений приёмника и PPS-сигналом.

Если микросекундная точность не нужна, то можно ограничиться только NMEA-сообщениями.

Опишите пожалуйста подробнее задачу, постараемся подобрать решение.

Модуль в система представлен просто портом. Для того чтоб NTP демон “знал” как от него получить время - надо заменить ntpd или использовать скрипты.

Есть оборудование которое должно включаться по расписанию, тут Уходит время контроллера было указано что внутренние часы уходят на 10мин в год, для наших задач это много. Возможности синхронизировать время через интернет по ntp нет, поэтому сейчас поставили GPS модуль. Задача заключается в том, чтобы синхронизировать внутренние часы контроллера от GPS, точности ±1сек более чем достаточно.

https://wirenboard.com/wiki/NTP_GPS описано как сделать

Ну и https://www.lammertbies.nl/comm/info/gps-time с пункта “Install gpsd”
Смысл действий - поставить
локальный демон

apt install gpsd -y

Который с одной стороны берет время у GPS а с другой - отдает его ntp.

Застрял на здесь:
root@wirenboard-AP2OY26Z:~/ntp-4.2.8p15# ./configure --enable-linuxcaps
checking for a BSD-compatible install… /usr/bin/install -c
checking whether build environment is sane… yes
checking for a thread-safe mkdir -p… /bin/mkdir -p
checking for gawk… no
checking for mawk… mawk
checking whether make sets $(MAKE)… no
checking whether make supports nested variables… no
checking whether make supports nested variables… (cached) no
checking build system type… armv7l-unknown-linux-gnu
checking host system type… armv7l-unknown-linux-gnu
checking for style of include used by make… none
checking for cc… cc
checking whether the C compiler works… no
configure: error: in /root/ntp-4.2.8p15': configure: error: C compiler cannot create executables See config.log’ for more details

config.log.txt (10.6 КБ)

Попробуйте пропустить этап со сборкой ntpd и попробовать обычный ntpd из пакетов.

Варианты с NMEA Reference Clock Driver (с драйвером 20 - 127.127.20.0) так и не заработали, работающее решение нашлось здесь https://blog.rapid7.com/2015/07/27/adding-a-gps-time-source-to-ntpd/. Используется SHM Reference Clock (с драйвером 28 - 127.127.28.0)

У меня получилось следующее:

1. ставим пакеты

apt install ntp gpsd gpsd-clients

2. настраиваем gpsd

/etc/default/gpsd:

DEVICES="/dev/ttyMOD3"
GPSD_OPTIONS="-n"

3. настраиваем ntpd
на всякий случай оставил локальный сервер со stratum 10

/etc/ntp.conf:

# local
server 127.127.1.0
fudge 127.127.1.0 stratum 10

# GPS
server 127.127.28.0 minpoll 4 maxpoll 4 prefer
fudge 127.127.28.0 time1 0.0 refid GPS

driftfile /var/lib/ntp/ntp.drift
restrict default nomodify notrust
disable auth

4. проверяем работу

root@wirenboard-AP2OY26Z:~# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 LOCAL(0)        .LOCL.          10 l  388   64  100    0.000    0.000   0.002
*SHM(0)          .GPS.            0 l    7   16  377    0.000    9.404  20.126
1 симпатия

Отлично!. Рад что получилось, добавлю ваш вариант в вики.

Спасибо! А я правильно понимаю, что этот вариант не использует сигнал PPS?

Я не стал использовать, а вообще использование PPS в данном варианте возможно.

Похоже что системное время не сохраняется в rtc и после перезагрузки контроллера время по ntp уже естественно не синхронизируется от GPS т.к. разбег времени слишком большой.

Установил системное время вручную, далее

root@wirenboard-AGRFJBJT:~# hwclock;date

2016-12-01 13:36:05.224965+0300

Tue Jul 21 09:16:15 MSK 2020

после перезагрузки:

root@wirenboard-AGRFJBJT:~# hwclock;date

2016-12-01 13:45:40.763811+0300

Thu Dec 1 13:45:39 MSK 2016

Разве системное время не должно было сохраниться в rtc?

Вообще в WB6 “время” устроено так: таймер в самом кристалл и “энергонезависимый”, на батарейке на основной плате.
Чтобы установить “энергонезависимый” попробуйте

hwclock --systohc --localtime

https://support.wirenboard.com/t/uhodit-vremya-kontrollera/3686/6?u=brainroot