从gpsd设置ntp时间

我试图configurationntpd来源于GPS接收器( BU-353S4 )的时间,但我得到一些错误。

我在Arch Linux Arm上使用ntpd 4.2.8.p6-3和gpsd 3.16-2。 我一直在关注维基上的教程,但没有任何疑难解答信息。

gpsd日志包含条目

gpsd:ERROR: response: {"class":"ERROR","message":"No such device as /dev/gps0"}\x0d\x0a

每6秒钟左右重复一次,除了开始,停止信息外没有别的。

/var/log/ntp.log包含:

 Listen and drop on 0 v6wildcard [::]:123 Listen and drop on 1 v4wildcard 0.0.0.0:123 Listen normally on 2 lo 127.0.0.1:123 Listen normally on 3 eth0 172.10.10.75:123 Listen normally on 4 lo [::1]:123 Listen normally on 5 eth0 [fe80::ba27:ebff:feba:af05%2]:123 Listening on routing socket on fd #22 for interface updates GPSD_JSON(0): GPSD revision=3.16 release=3.16 protocol=3.11 

ntpq -p输出

  remote refid st t when poll reach delay offset jitter ============================================================================== GPSD_JSON(0) .GPS. 0 l - 64 0 0.000 0.000 0.000 

/etc/ntp.conf包含

 restrict 127.0.0.1 restrict ::1 restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery # GPSD config server 127.127.46.0 fudge 127.127.46.0 time1 0.0 time2 0.0 refid GPS driftfile /var/lib/ntp/ntp.drift logfile /var/log/ntp.log 

然而sudo gpscat /dev/gps0输出(对我的未经训练的眼睛)有效的nmea gps信息,并且cgpsgpsmon都得到一个修理和输出有用的信息。

/dev/ttyUSB0具有权限crw-rw---- 1 root uucp 188gpsd在用户nobody下运行, ntpd以用户ntp运行

gpsd作为nobody运行,所以没有权限读取/dev/ttyUSB0 ,这正是它所抱怨的。

如果将nobody用户添加到组uucp ,则应该修复这些问题,但不build议这样做。 或者你可以把/dev/ttyUSB0上的模式更改为666,这样可怕一点。 最好的办法是编辑gpsd启动configuration文件,使其作为其他用户(可能是gpsd ,并使gpsd的主要组(也可能是gpsd )拥有/dev/ttyUSB0组。

假设gpsd设置了正确读取GPS的时间,这将启用ntpd宣传时间,知道(因为你已经configuration它),它是从第0层(ntp)源获得的。

请注意,您必须“在链接的/dev/gps0上运行gpsd,以便GPSD_JSON行按预期显示”。 因此,请检查您的GPSD是否在/dev/gps0上运行。 我的GPSD在我的服务器上的/dev/ttyS0上运行,当我将DEVICES更改为/etc/default/gpsd /dev/gps0后,NTPd可以成功连接GPSD。