Я уже читал о компиляции NTP с помощью timepps.h, чтобы получить поддержку PPS. Есть ли простой способ проверить уже скомпилированную или скорее установленную версию репозитория (Ubuntu 14.04.1, Kernel 3.13.0-37) на поддержку PPS?
РЕДАКТИРОВАТЬ некоторые googles позже ...
Я вставил это в мой /etc/ntp.conf и перезапустил ntpd. Кажется, эта конфигурация будет правильной? Я использую эту секцию GPS /dev/ttyS0 . Согласно документации это должно удовлетворить GPS с PPS. Бодрейт составляет 9600 .
server 127.127.20.0 mode 18 minpoll 4 iburst prefer true
fudge 127.127.20.0 flag1 1 flag2 0 flag3 1 flag4 1
Я потратил некоторое время, чтобы заставить его работать, потому что apparmor заблокировал ntpd, открыв последовательный порт. Я понял это из syslos. Поэтому я добавил эту строку в /etc/apparmor.d/tunables/ntpd . Тогда это сработало.
@{NTPD_DEVICE}="/dev/ttyS0"
Разрешения на устройства
$ ll /dev/ttyS0 /dev/pps* /dev/gps*
lrwxrwxrwx 1 root root          5 Okt 18 23:00 /dev/gps0 -> ttyS0
lrwxrwxrwx 1 root root          4 Okt 18 23:00 /dev/gpspps0 -> pps0
crw-rw-rw- 1 root dialout 251,  0 Okt 18 23:00 /dev/pps0
crw-rw-rw- 1 root dialout   4, 64 Okt 18 23:09 /dev/ttyS0
$ id ntp
uid=106(ntp) gid=113(ntp) Gruppen=113(ntp),20(dialout)
Чтобы достичь этого навсегда, я создал несколько правил udev . Принимая во внимание, что команда setserial, кажется, не вступает в силу, если я проверяю порт с setserial -a /dev/ttyS0 после загрузки системы.
$ cat /etc/udev/rules.d/09-pps.rules
# Provide a symlink to /dev/ttyS0 and set low_latency for latency improvement
KERNEL=="ttyS0", SYMLINK+="gps0", MODE="0666"
KERNEL=="ttyS0", RUN+="/bin/setserial /dev/%k low_latency"
KERNEL=="ttyS0", RUN+="/usr/sbin/ldattach pps /dev/%k"
# Symlink /dev/pps0 to /dev/gpspps0
KERNEL=="pps0", SUBSYSTEM=="pps", DRIVER=="", SYMLINK+="gpspps0"
KERNEL=="pps0", GROUP="dialout"
KERNEL=="pps0", MODE="0666"
После этого мне пришлось один раз удалить /var/lib/ntp/ntp.conf.dhcp . Потому что он получается из /etc/ntp.conf при любом событии DHCP или просто перезагрузке. Таким образом, он будет генерировать новый при запуске.
Нужно ли мне еще вход 127.127.22. * (Драйвер ATOM PPS)? Потому что, как указано в документации, если я использую flag1=1 PPS будет использоваться неявно? Нет, он работает только с GPS NMEA (127.127.20.u).
Мой вывод ntpq -p сейчас
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
-fritz.box       185.31.136.34    3 u   36   64  177    0.298    4.496   0.076
*arcticfox.dorid 192.53.103.104   2 u   43   64  177   14.125    2.041   1.307
+monitman.com    158.43.128.33    2 u   44   64  177   25.325    4.703   0.314
+spacys.de       212.82.32.15     2 u   43   64  177   24.156   -1.503   2.094
-cse-server.com  122.227.206.195  3 u   38   64  177   24.372   -3.421   0.618
oGPS_NMEA(0)     .GPS.            0 l    1   16  377    0.000   -0.270   0.024
Для поддержки часов ATOM я должен скомпилировать ntp с включенной поддержкой часов ATOM.
