我已经读过编译 NTP和时间pps.h提供以获得 PPS 支持。有没有一种简单的方法来检查存储库的已预编译或已安装的版本(Ubuntu 14.04.1,内核 3.13.0-37) 以获得 PPS 支持?
编辑稍后谷歌一下……
我将其插入我的/etc/ntp.conf
并重新启动 ntpd。这个配置似乎正确吗?我正在使用这个GPS 分线板上/dev/ttyS0
。根据文档这应该可以满足带 PPS 的 GPS 要求。波特率为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)
为了永久实现这一点,我创建了一些udevsetserial -a /dev/ttyS0
规则。而如果我在系统启动后使用 setserial 命令检查端口,则该命令似乎不起作用。
$ 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 时钟,我必须编译启用了 ATOM 时钟支持的 ntp。
答案1
为什么不让自己轻松一点,尝试使用 PPS 功能呢?编辑您的配置文件并包含相关的 PPS 标志并启动 ntpd。这似乎很明显,我不确定我是否错过了一个约束。
我不清楚您所说的“存储库的已安装版本”是什么意思?您是指 Linux 发行版吗?如果是,答案是肯定的,但这取决于您使用的发行版。但尝试使用 PPS 似乎是最好的测试。
重建 ntp 并支持 PPS
一旦您确认已正确配置 gps 设备,您可以通过以下方式重建支持 pps 的 ntp:
# apt-get build-dep ntp
# apt-get install pps-tools ubuntu-dev-tools
# apt-get source ntp
# cd <The ntp version directory something like ntp-4.2.6.p5+dfsg >
# dpkg-buildpackage -uc -us -nc
# dpkg -i ../ntp*.deb
为了避免 apt 无法安装新版本,并且不支持 ATOM 时钟,请使用
# echo ntp hold | dpkg --set-selections