我尝试使用 ublox 模块和 centos 从 gps 数据中获取更准确的时间,但似乎gpsd.sock
无法正常将数据传送到 chrony。
我遗漏了什么吗?
[root@info /]# cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
allow
refclock SOCK /var/run/chrony.ttyS0.sock delay 0.5 refid GPS
refclock PPS /dev/pps0 lock NMEA refid PPS prefer trust
并且 chrony 源“GPS”中没有输出
[root@info /]# chronyc sources
210 Number of sources = 6
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
#? GPS 0 4 0 - +0ns[ +0ns] +/- 0ns
#* PPS 0 4 0 311 -382ns[ -613ns] +/- 538ns
^- 162.159.200.1 3 8 173 17 +8684us[+8684us] +/- 71ms
[root@info /]# cat /lib/systemd/system/gpsd.socket
[Unit]
Description=GPS (Global Positioning System) Daemon Sockets
[Socket]
ListenStream=/var/run/gpsd.sock
ListenStream=0.0.0.0:2947
#SocketMode=0600
SocketMode=0755
[Unit]
Description=GPS (Global Positioning System) Daemon
Requires=gpsd.socket
# Needed with chrony SOCK refclock
After=chronyd.service
[Install]
Also=gpsd.socket
WantedBy=sockets.target
[root@info /]# cat /etc/systemd/system/multi-user.target.wants/gpsd.service
[Unit]
Description=GPS (Global Positioning System) Daemon
Requires=gpsd.socket
# Needed with chrony SOCK refclock
After=chronyd.service
[Service]
EnvironmentFile=-/etc/sysconfig/gpsd
ExecStart=/usr/sbin/gpsd -N -G $OPTIONS $DEVICES
[Install]
WantedBy=multi-user.target
Also=gpsd.socket
答案1
看起来你的refclock
PPS 线路输入/etc/chrony.conf
不正确。看起来你把它指向了设备,但它应该指向gpsd
期望的位置,并以期望的格式。
我的两个refclock
插座线看起来像这样并且正在工作:
refclock SOCK /run/chrony.ttyUSB0.sock refid GPS precision 1e-1 offset 0.9999
refclock SOCK /run/chrony.pps0.sock refid PPS precision 1e-7
您的 PPS 行指向/dev/pps0
。没错,它就在那里,但那不是您希望 Chrony 为 gpsd 创建套接字的位置。这就是这两行的意思。它告诉 Chrony 为 gpsd 创建这两个特殊的套接字文件以向其发送数据。因此,您不希望 Chrony 在 中的真实 pps 设备之上创建一个特殊的套接字文件/dev/pps0
。
这个过程并不简单,网上的许多例子可能会让人困惑。最好的分步指南就在 GPSD 教程中。