我无法在 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