NTP GPS: различия между версиями
Brainroot (обсуждение | вклад) (Дополнил по исправлению автозапуска.) |
|||
(не показано 6 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: Синхронизация времени от GPS модуля}} | |||
Модуль GPS можно использовать в качестве источника точного времени. | |||
Работает это так: локальный демон '''gpsd''' получает время с GPS-устройства и отдаёт его демону '''ntpd''', который дальше работает с временем стандартным способом. | |||
Настройка синхронизации времени контроллера с GPS: | |||
#Установите необходимые пакеты | |||
#:<syntaxhighlight lang="bash"> | |||
apt install ntp gpsd gpsd-clients | |||
</syntaxhighlight> | |||
#В конфигурационном файле gspd укажите порт к которому подключено устройство. А также установите параметр <code>GPSD_OPTIONS="-n"</code>, это нужно чтобы синхронизация со спутниками начинала выполняться сразу после запуска. | |||
#:<syntaxhighlight lang="bash"> | |||
nano /etc/default/gpsd | |||
</syntaxhighlight> | |||
#:<syntaxhighlight lang="bash"> | |||
DEVICES="/dev/ttyMOD4" | |||
GPSD_OPTIONS="-n" | |||
</syntaxhighlight> | |||
#Настройте ntpd. Для этого откройте конфигурационный файл: | |||
#:<syntaxhighlight lang="bash"> | |||
nano /etc/ntp.conf | |||
</syntaxhighlight> | |||
#:И дополните его следующим образом: | |||
#:<syntaxhighlight lang="bash"> | |||
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 | |||
1. | # 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 | |||
</syntaxhighlight> | |||
#Установите запуск '''gpsd''' после '''wb-hwconf-manager.service'''. Это нужно, чтобы '''gpsd''' запускался после перезагрузки контроллера автоматически. | |||
#:Откройте файл <code>/lib/systemd/system/gpsd.service</code> в текстовом редакторе: | |||
#:<syntaxhighlight lang="bash"> | |||
nano /lib/systemd/system/gpsd.service | |||
</syntaxhighlight> | |||
#:И приведите его к следующему виду: | |||
#:<syntaxhighlight lang="bash"> | |||
''' | |||
<syntaxhighlight lang="bash"> | |||
[Unit] | [Unit] | ||
Description=GPS (Global Positioning System) Daemon | Description=GPS (Global Positioning System) Daemon | ||
Строка 69: | Строка 70: | ||
Also=gpsd.socket | Also=gpsd.socket | ||
</syntaxhighlight> | </syntaxhighlight> | ||
#: | |||
#:Создайте ссылку для systemd: | |||
<syntaxhighlight lang="bash"> | #:<syntaxhighlight lang="bash"> | ||
ln -s /lib/systemd/system/gpsd.service /etc/systemd/system/multi-user.target.wants/ | ln -s /lib/systemd/system/gpsd.service /etc/systemd/system/multi-user.target.wants/ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
#:Перезапустите systemctl: | |||
<syntaxhighlight lang="bash"> | #:<syntaxhighlight lang="bash"> | ||
systemctl daemon-reload | systemctl daemon-reload | ||
</syntaxhighlight> | |||
#:Затем перезапустите gpsd: | |||
#:<syntaxhighlight lang="bash"> | |||
systemctl restart gpsd | |||
</syntaxhighlight> | |||
#После этого можно проверить работу NTP сервера командой | |||
#:<syntaxhighlight lang="bash"> | |||
ntpq -p | |||
</syntaxhighlight> | |||
#:В результате должен получиться такой вывод: | |||
#:<syntaxhighlight lang="bash"> | |||
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 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Посмотреть ошибки и статус GPS-модуля можно командой | |||
<syntaxhighlight lang="bash"> | |||
ntpq -c clockvar | |||
</syntaxhighlight> | |||
Узнать статус демонов gpsd и ntp | |||
<syntaxhighlight lang="bash"> | |||
systemctl status gpsd | |||
systemctl status ntp | |||
</syntaxhighlight> | |||
==Полезные ссылки== | |||
*[https://support.wirenboard.com/t/nastrojka-modulya-gps/5353 Обсуждение настройки GPS-модуля на портале тех. поддержки] | |||
*[https://www.rapid7.com/blog/post/2015/07/27/adding-a-gps-time-source-to-ntpd/ Статья про настройку gpsd (англ.)] | |||
*[https://www.lammertbies.nl/comm/info/gps-time Полезная статья про синхронизацию времени по GPS (англ.)] | |||
*[http://www.ntp.org/ Официальный сайт протокола NTP] | |||
Текущая версия на 13:34, 12 мая 2023
Модуль 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