chrony 的 gpsd.socket 无法工作

chrony 的 gpsd.socket 无法工作

我尝试使用 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

看起来你的refclockPPS 线路输入/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 教程中

相关内容