Синхронизация времени от GPS модуля
(Redirected from Получение точного времени через GPS/Glonass)
This is the approved revision of this page, as well as being the most recent.
This is the approved revision of this page, as well as being the most recent.
Модуль GPS можно использовать в качестве источника точного времени.
Работает это так: локальный демон gpsd получает время с GPS-устройства и отдаёт его демону ntpd, который дальше работает с временем стандартным способом.
Настройка синхронизации времени контроллера с GPS:
- Установите необходимые пакеты
apt install ntp gpsd gpsd-clients
- В конфигурационном файле gspd укажите порт к которому подключено устройство. А также установите параметр
GPSD_OPTIONS="-n", это нужно чтобы синхронизация со спутниками начинала выполняться сразу после запуска.nano /etc/default/gpsdDEVICES="/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