我无法配置 NTP 与 GPS 模块一起作为同步源(NMEA + PPS)

我无法配置 NTP 与 GPS 模块一起作为同步源(NMEA + PPS)

我无法在 Ubuntu 18.04.3 LTS(Linux 4.15.0-74-generic)上配置 NTP。作为同步源,我想使用 GPS 模块的 NMEA + PPS。

GPS模块通过USB使用SILABS CP2102接口转换器连接:

Bus 002 Device 003: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light

PPS GPS 接收器信号连接到转换器的 DCD 线。获取 NMEA 数据并在 NTP 中使用它们没有问题。使用 PPS 信号时出现问题。我执行 ldattach PPS /dev/ttyUSB0:

[ 1815.641450] pps_ldisc: PPS line discipline registered
[ 1815.641812] pps pps0: new PPS source usbserial2
[ 1815.641820] pps pps0: source "/dev/ttyUSB0" added

/dev中出现了对应的pps0节点,看上去一切都很正常,但就是不行。

ppswatch /dev/pps0
trying PPS source "/dev/pps0"
found PPS source "/dev/pps0"
time_pps_fetch() error -1 (Connection timed out)
time_pps_fetch() error -1 (Connection timed out)

因此,NTP 看不到 PPS 信号。在内核中,似乎包含支持:

# HSI clients
#
CONFIG_HSI_CHAR=m
CONFIG_PPS=m
# CONFIG_PPS_DEBUG is not set

#
# PPS clients support
#
# CONFIG_PPS_CLIENT_KTIMER is not set
CONFIG_PPS_CLIENT_LDISC=m
CONFIG_PPS_CLIENT_PARPORT=m
CONFIG_PPS_CLIENT_GPIO=m

ldattach 加载后的 pps_ldisc:

lsmod|grep pps
pps_ldisc              16384  1
pps_core               20480  2 pps_ldisc,ptp

如何查找问题?在哪里查找?

答案1

首先需要使 /dev/pps0 工作。 apt install pps-tools; ppstest /dev/pps0 如果它不工作,请确保 /dev/pps0 使用正确的源:dmesg | grep pps

[    5.358856] pps pps0: new PPS source pps.-1
[    5.358947] pps pps0: Registered IRQ 349 as PPS source

ntp 的 nmea 驱动程序需要“/dev/gps%d”/* GPS 串行设备/“/dev/gpspps%d”/PPSAPI 设备覆盖 */ -> 符号链接到 /dev/pps0

另外,请确保在 ntp.conf 中使用正确的设置,例如 https://www.eecis.udel.edu/~mills/ntp/html/drivers/driver20.html server 127.127.20.0 mode 88 maxpoll 1 prefer true fudge 127.127.20.0 time1 0 flag1 1 refid GPS

其中模式 88 线速 115200 bps 和进程 $GPZDA 或 $GPZDG

相关内容