gpsd.socket для chrony не работает

Я пытался получить более точное время из данных 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
0
задан 27 October 2019 в 09:36
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. это правда, это то, где он есть, но это не то, где вы хотите, чтобы Хрони делал сокет для питания gpsd. вот что говорят эти две строчки. он говорит Chrony создать эти два специальных файла сокетов, в которые gpsd будет отправлять данные. Таким образом, вы не хотите, чтобы Chrony создавал специальный файл сокета прямо поверх реального устройства pps в /dev/pps0.

Эта процедура непроста, и многочисленные онлайн-примеры могут быть удобочитаемыми. лучшее пошаговое руководство было в учебнике по GPSD.

0
ответ дан 23 November 2020 в 03:49

Теги

Похожие вопросы