Я пытался получить более точное время из данных GPS с помощью модуля ublox и centos, но кажется, что gpsd.sock
не работает должным образом, чтобы получить данные к хронам.
Я что-то упускаю?
[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
и нет вывода в хронических источниках "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
Похоже, ваша строка 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
. это правда, это то, где он есть, но это не то, где вы хотите, чтобы Хрони делал сокет для питания gpsd. вот что говорят эти две строчки. он говорит Chrony создать эти два специальных файла сокетов, в которые gpsd будет отправлять данные. Таким образом, вы не хотите, чтобы Chrony создавал специальный файл сокета прямо поверх реального устройства pps в /dev/pps0
.
Эта процедура непроста, и многочисленные онлайн-примеры могут быть удобочитаемыми. лучшее пошаговое руководство было в учебнике по GPSD.