[ntp:questions] ntpd connect gpsd shared memory driver

A C agcarver+ntp at acarver.net
Tue Jun 18 18:06:03 UTC 2013


On 6/18/2013 10:39, Richard Cagley wrote:
> On Tue, Jun 18, 2013 at 9:27 AM, Rob <nomail at example.com> wrote:
>
>> As I wrote before, your ntp config is not correct.  please copy it
>> from the docs.  However, that is not the cause of the problem.
>> (it would be the cause of severe inaccuracy once you obtain NMEA data
>> as you are not using PPS)
>>
>
> yeah, figured I'd walk before I ran so I tried to make my ntp.conf file as
> simple as possible to at least get some timing info, which thanks to your
> and AC's help I now have.
>
> ok, now onto pps. I went here
> http://gpsd.berlios.de/gpsd.html
> ...and am now using this as my ntp.conf
> ---
> server 127.127.28.0 minpoll 4 maxpoll 4
> fudge 127.127.28.0 time1 0.420 refid GPS
> server 127.127.28.1 minpoll 4 maxpoll 4 prefer
> fudge 127.127.28.1 refid GPS1
> ---
>
> But, sadly no pps sync...
> ---
> / # ntpq -p
>       remote           refid      st t when poll reach   delay   offset
>   jitter
> ==============================================================================
> *SHM(0)          .GPS.            0 l    7   16  377    0.000    0.048
> 0.005
>   SHM(1)          .GPS1.           0 l    -   16    0    0.000    0.000
> 0.000
> ---
> I have pps debug output built into the kernel and can see pps events on the
> console while I look at gpsd output
> ---
> PPS event at 9862
> PPS event at 9962
> PPS event at 10062
> PPS event at 10162
> ---
>
> Sorry, this is so long, but here's a dump of the gpsd output. There are
> several things that concern me, such as some of the warning, but not sure
> of the severity
>
> / # gpsd -bn -N -D5 /dev/ttyO0
> gpsd:INFO: launching (Version 3.7)
> gpsd:IO: opening IPv4 socket
> gpsd:INFO: listening on port 2947
> gpsd:PROG: NTPD shmat(0,0,0) succeeded, segment 0
> gpsd:PROG: NTPD shmat(32769,0,0) succeeded, segment 1
> gpsd:PROG: NTPD shmat(65538,0,0) succeeded, segment 2
> gpsd:PROG: NTPD shmat(98307,0,0) succeeded, segment 3
> gpsd:PROG: shmat() succeeded, segment 131076
> gpsd:PROG: shared-segment creation succeeded,
> gpsd:PROG: PPS thread launched
> gpsd:INFO: NTPD ntpd_link_activate: 1
> gpsd:INFO: stashing device /dev/ttyO0 at slot 0
> gpsd:PROG: no etc/gpsd/device-hook present, skipped running ACTIVATE hook
> gpsd:INFO: opening read-only GPS data source type 2 and at '/dev/ttyO0'
> gpsd:PROG: PPS Create Thread gpsd_ppsmonitor
> gpsd:PROG: PPS chrony socket /var/run/chrony.ttyO0.sock doesn't exist
> gpsd:INFO: PPS cycle: 631139111, duration: 631139111 @ 1371576962.280231
> gpsd:INFO: speed 4800, 8N1
> gpsd:PROG: Probing "Garmin USB binary" driver...
> gpsd:PROG: Probe not found "Garmin USB binary" driver...
> gpsd:PROG: Probing "GeoStar binary" driver...
> gpsd:IO: Sent GeoStar packet id 0xc1
> gpsd:PROG: Probe not found "GeoStar binary" driver...
> gpsd:PROG: Probing "Trimble TSIP" driver...
> gpsd:INFO: speed 9600, 8O1
> gpsd:INFO: speed 4800, 8N1
> gpsd:PROG: Probe not found "Trimble TSIP" driver...
> gpsd:PROG: no probe matched...
> gpsd:INFO: gpsd_activate(): activated GPS (fd 4)
> gpsd:INFO: device /dev/ttyO0 activated
> gpsd:INFO: running with effective group ID 0
> gpsd:INFO: running with effective user ID 99
> gpsd:INFO: startup at 2013-06-18T17:36:02.000Z (1371576962)
> gpsd:PROG: switch_driver(Generic NMEA) called...
> gpsd:PROG: selecting Generic NMEA driver...
> gpsd:INFO: /dev/ttyO0 identified as type Generic NMEA (0.564143 sec @
> 4800bps)
> gpsd:IO: <= GPS:
> $GPRMC,173602.00,A,3425.96985,N,11951.97924,W,0.039,,180613,,,A*63
> gpsd:DATA: merge_ddmmyy(180613) sets year 2013
> gpsd:DATA: GPRMC: registers fractional time 173602.00
> gpsd:DATA: RMC: ddmmyy=180613 hhmmss=173602.00 lat=34.43 lon=-119.87
> speed=0.02 track=0.00 mode=2 status=1
> gpsd:DATA: GPRMC time is 1371576962.000000 = 2013-06-18T17:36:2.00Z
> gpsd:PROG: GPRMC sentence timestamped 173602.00.
> gpsd:PROG: GPRMC starts a reporting cycle.
> gpsd:DATA: packet type 1 from /dev/ttyO0 with
> {ONLINE|TIME|LATLON|SPEED|TRACK|STATUS|MODE|PACKET|DRIVER|CLEAR}
> gpsd:IO: <= GPS: $GPVTG,,T,,M,0.039,N,0.072,K,A*2C
> gpsd:DATA: packet type 1 from /dev/ttyO0 with {ONLINE|PACKET}
> gpsd:IO: <= GPS:
> $GPGGA,173602.00,3425.96985,N,11951.97924,W,1,06,2.39,2.7,M,-33.5,M,,*6B
> gpsd:DATA: GPGGA: registers fractional time 173602.00
> gpsd:DATA: GGA: hhmmss=173602.00 lat=34.43 lon=-119.87 alt=2.70 mode=3
> status=1
> gpsd:DATA: GPGGA time is 1371576962.000000 = 2013-06-18T17:36:2.00Z
> gpsd:PROG: GPGGA sentence timestamped 173602.00.
> gpsd:DATA: packet type 1 from /dev/ttyO0 with
> {ONLINE|TIME|LATLON|ALTITUDE|STATUS|MODE|PACKET}
> gpsd:IO: <= GPS: $GPGSA,A,3,16,06,07,23,10,13,,,,,,,3.29,2.39,2.26*00
> gpsd:PROG: GPGSA sets mode 3
> gpsd:DATA: GPGSA: mode=3 used=6 pdop=3.29 hdop=2.39 vdop=2.26
> gpsd:DATA: packet type 1 from /dev/ttyO0 with {ONLINE|MODE|DOP|PACKET|USED}
> gpsd:IO: <= GPS:
> $GPRMC,173603.00,A,3425.96981,N,11951.97923,W,0.039,,180613,,,A*61
> gpsd:DATA: merge_ddmmyy(180613) sets year 2013
> gpsd:DATA: GPRMC: registers fractional time 173603.00
> gpsd:DATA: RMC: ddmmyy=180613 hhmmss=173603.00 lat=34.43 lon=-119.87
> speed=0.02 track=0.00 mode=2 status=1
> gpsd:DATA: GPRMC time is 1371576963.000000 = 2013-06-18T17:36:3.00Z
> gpsd:PROG: GPRMC sentence timestamped 173603.00.
> gpsd:PROG: GPRMC starts a reporting cycle.
> gpsd:PROG: tagged GGA as a cycle ender.
> gpsd:DATA: packet type 1 from /dev/ttyO0 with
> {ONLINE|TIME|LATLON|SPEED|TRACK|MODE|PACKET|CLEAR}
> gpsd:IO: <= GPS: $GPVTG,,T,,M,0.039,N,0.072,K,A*2C
> gpsd:DATA: packet type 1 from /dev/ttyO0 with {ONLINE|PACKET}
> gpsd:IO: <= GPS:
> $GPGGA,173603.00,3425.96981,N,11951.97923,W,1,06,2.39,2.6,M,-33.5,M,,*68
> gpsd:DATA: GPGGA: registers fractional time 173603.00
> gpsd:DATA: GGA: hhmmss=173603.00 lat=34.43 lon=-119.87 alt=2.60 mode=3
> status=1
> gpsd:DATA: GPGGA time is 1371576963.000000 = 2013-06-18T17:36:3.00Z
> gpsd:PROG: GPGGA sentence timestamped 173603.00.
> gpsd:PROG: GPGGA ends a reporting cycle.
> gpsd:DATA: packet type 1 from /dev/ttyO0 with
> {ONLINE|TIME|LATLON|ALTITUDE|STATUS|MODE|PACKET|REPORT}

Your "Probe not found" messages are fine since those are for specific 
probes and it's obviously decoding data now using the generic NMEA.  The 
fatal error is the other one you had before ("no probe found") which is 
what happens when gpsd gives up totally.  The -b prevents gpsd from 
writing to and reprogramming the receiver.  It may have switched it to a 
binary mode that it doesn't understand which would explain the probe 
failure.

I suspect you may have a conflict between the kernel attempting to 
control PPS and gpsd attempting to use it.  Try adding "disable kernel" 
to the ntp.conf to shut off the kernel's use of PPS and see if that 
wakes up gpsd.  If so, your serial driver doesn't want to play nice and 
share the DCD line between two processes.



More information about the questions mailing list