Синхронизация времени от GPS модуля
Это утверждённая версия страницы. Она же — наиболее свежая версия.
Модуль GPS можно использовать в качестве источника точного времени.
Работает это так: локальный демон gpsd получает время с GPS-устройства и отдаёт его демону ntpd, который дальше работает с временем стандартным способом.
Настройка синхронизации времени контроллера с GPS:
- Установите необходимые пакеты
apt install ntp gpsd gpsd-clients
- В конфигурационном файле gspd укажите порт к которому подключено устройство. А также установите параметр
GPSD_OPTIONS="-n"
, это нужно чтобы синхронизация со спутниками начинала выполняться сразу после запуска.nano /etc/default/gpsd
DEVICES="/dev/ttyMOD4" GPSD_OPTIONS="-n"
- Настройте ntpd. Для этого откройте конфигурационный файл:
nano /etc/ntp.conf
- И дополните его следующим образом:
driftfile /var/lib/ntp/ntp.drift restrict default nomodify notrust disable auth # local server 127.127.1.0 fudge 127.127.1.0 stratum 10 # GPS server 127.127.28.0 minpoll 4 maxpoll 4 fudge 127.127.28.0 flag1 1 time1 0.35 refid GPS stratum 2 tinker panic 0 stepout 1 # PPS server 127.127.28.2 minpoll 4 maxpoll 4 prefer fudge 127.127.28.2 refid PPS stratum 1 # Local users may interrogate the ntp server more closely. restrict 127.0.0.1 restrict 127.127.1.0 restrict 127.127.20.0 restrict 127.127.22.0 restrict 127.127.22.2 restrict 127.127.28.0 restrict 127.127.28.1 restrict 127.127.28.2
- Установите запуск gpsd после wb-hwconf-manager.service. Это нужно, чтобы gpsd запускался после перезагрузки контроллера автоматически.
- Откройте файл
/lib/systemd/system/gpsd.service
в текстовом редакторе: nano /lib/systemd/system/gpsd.service
- И приведите его к следующему виду:
[Unit] Description=GPS (Global Positioning System) Daemon Requires=gpsd.socket # Needed with chrony SOCK refclock # After=chronyd.service After=wb-hwconf-manager.service [Service] EnvironmentFile=-/etc/default/gpsd ExecStart=/usr/sbin/gpsd -N $GPSD_OPTIONS $DEVICES [Install] Also=gpsd.socket
- Создайте ссылку для systemd:
ln -s /lib/systemd/system/gpsd.service /etc/systemd/system/multi-user.target.wants/
- Перезапустите systemctl:
systemctl daemon-reload
- Затем перезапустите gpsd:
systemctl restart gpsd
- Откройте файл
- После этого можно проверить работу NTP сервера командой
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
Посмотреть ошибки и статус GPS-модуля можно командой
ntpq -c clockvar
Узнать статус демонов gpsd и ntp
systemctl status gpsd
systemctl status ntp