I've attached the strace files. The commands I used were: root@IrishMistII:/tmp# strace -o /tmp/chrony.strace.out chronyd root@IrishMistII:/tmp# strace -o /tmp/gpsd.strace.out gpsd -D 8 -F /var/run/chrony.ttyACM0.sock /dev/ttyACM0
On Aug 7, 2016 12:50 AM, "Steve Horton" <stevejhor...@gmail.com> wrote: > We need to see if gpsd is sending and if chrony is rx anything on that > socket. I'd start both process in strace to srart. Then maybe start gpsd in > debug -D 8 and see if its writing to that chrony socket. Strace will show > what's happening underneath. > > On Aug 6, 2016 11:37 PM, "Chris Greenman" <chris.m.green...@gmail.com> > wrote: > >> $ file /var/run/chrony.ttyACM0.sock >> /var/run/chrony.ttyACM0.sock: socket >> >> cat /etc/init.d/gpsd >> >> $ cat /etc/init.d/gpsd >> #!/bin/sh >> ### BEGIN INIT INFO >> # Provides: gpsd >> # Required-Start: $remote_fs $syslog $network >> # Should-Start: bluetooth dbus udev >> # Required-Stop: $remote_fs $syslog $network >> # Default-Start: 2 3 4 5 >> # Default-Stop: 0 1 6 >> # X-Start-Before: ntp >> # Short-Description: GPS (Global Positioning System) daemon >> # Description: The gpsd service daemon is able to monitor one or >> # more GPS devices connected to a host computer, making >> # all data on the location and movements of the sensors >> # available to be queried on TCP port 2947. >> ### END INIT INFO >> >> # Author: Bernd Zeimetz <b...@debian.org> >> # >> # Please remove the "Author" lines above and replace them >> # with your own name if you copy and modify this script. >> >> # Do NOT "set -e" >> >> # PATH should only include /usr/* if it runs after the mountnfs.sh script >> RUNDIR=/run/gpsd >> PATH=/sbin:/usr/sbin:/bin:/usr/bin >> DESC="GPS (Global Positioning System) daemon" >> NAME=gpsd >> DAEMON=/usr/sbin/$NAME >> PIDFILE=$RUNDIR/$NAME.pid >> SCRIPTNAME=/etc/init.d/$NAME >> >> # Exit if the package is not installed >> [ -x "$DAEMON" ] || exit 0 >> >> # Read configuration variable file if it is present >> [ -r /etc/default/$NAME ] && . /etc/default/$NAME >> >> if [ -z "$GPSD_SOCKET" ] && [ -z "$DEVICES" ]; then >> GPSD_SOCKET=/var/run/gpsd.sock >> fi >> >> if [ -n "$GPSD_SOCKET" ]; then >> GPSD_OPTIONS="$GPSD_OPTIONS -F $GPSD_SOCKET" >> fi >> >> # Load the VERBOSE setting and other rcS variables >> . /lib/init/vars.sh >> >> # Define LSB log_* functions. >> # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. >> . /lib/lsb/init-functions >> >> # >> # Function that starts the daemon/service >> # >> do_start() >> { >> # Return >> # 0 if daemon has been started >> # 1 if daemon was already running >> # 2 if daemon could not be started >> >> mkdir -p $RUNDIR || return 2 >> >> start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON >> --test > /dev/null \ >> || return 1 >> start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ >> $GPSD_OPTIONS -P $PIDFILE $DEVICES \ >> || return 2 >> } >> >> # >> # Function that stops the daemon/service >> # >> do_stop() >> { >> # Return >> # 0 if daemon has been stopped >> # 1 if daemon was already stopped >> # 2 if daemon could not be stopped >> # other if a failure occurred >> start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile >> $PIDFILE --name $NAME >> RETVAL="$?" >> [ "$RETVAL" = 2 ] && return 2 >> # Many daemons don't delete their pidfiles when they exit. >> rm -f $PIDFILE >> return "$RETVAL" >> } >> >> # >> # Function that sends a SIGHUP to the daemon/service >> # >> do_reload() { >> # >> # If the daemon can reload its configuration without >> # restarting (for example, when it is sent a SIGHUP), >> # then implement that here. >> # >> start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name >> $NAME >> return 0 >> } >> >> case "$1" in >> start) >> if [ "$START_DAEMON" = "true" ]; then >> [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" >> do_start >> case "$?" in >> 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; >> 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; >> esac >> else >> [ "$VERBOSE" != no ] && \ >> log_daemon_msg "Not starting $DESC" "$NAME" && \ >> log_end_msg 0 >> fi >> ;; >> stop) >> [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" >> do_stop >> case "$?" in >> 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; >> 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; >> esac >> ;; >> status) >> status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? >> ;; >> reload|force-reload) >> log_daemon_msg "Reloading $DESC" "$NAME" >> do_reload >> log_end_msg $? >> ;; >> restart) >> # >> # If the "reload" option is implemented then remove the >> # 'force-reload' alias >> # >> log_daemon_msg "Restarting $DESC" "$NAME" >> do_stop >> case "$?" in >> 0|1) >> do_start >> case "$?" in >> 0) log_end_msg 0 ;; >> 1) log_end_msg 1 ;; # Old process is still running >> *) log_end_msg 1 ;; # Failed to start >> esac >> ;; >> *) >> # Failed to stop >> log_end_msg 1 >> ;; >> esac >> ;; >> *) >> echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 >> exit 3 >> ;; >> esac >> >> : >> >> >> >> On Sat, Aug 6, 2016 at 11:08 PM, Steve Horton <stevejhor...@gmail.com> >> wrote: >> >>> Sorry..i meant your start script. So do you start gpsd after chrony is >>> allready running and the sock created? Does it get built correctly? Can you >>> do a file on it? >>> >>> On Aug 6, 2016 10:29 PM, "Chris Greenman" <chris.m.green...@gmail.com> >>> wrote: >>> >>>> No gpsd.conf. /etc/default/gpsd is : >>>> >>>> # Default settings for the gpsd init script and the hotplug wrapper. >>>> >>>> # Start the gpsd daemon automatically at boot time >>>> START_DAEMON="true" >>>> >>>> # Use USB hotplugging to add new USB devices automatically to the daemon >>>> USBAUTO="true" >>>> >>>> # Devices gpsd should collect to at boot time. >>>> # They need to be read/writeable, either by user gpsd or the group >>>> dialout. >>>> DEVICES="/dev/ttyACM0" >>>> >>>> # Other options you want to pass to gpsd >>>> GPSD_OPTIONS="-F /var/run/chrony.ttyACM0.sock" >>>> >>>> >>>> >>>> $ ps -ef |grep gpsd |grep -v grep >>>> gpsd 31426 1 0 13:36 ? 00:00:00 /usr/sbin/gpsd -N -F >>>> /var/run/chrony.ttyACM0.sock /dev/ttyACM0 >>>> >>>> cgps shows 3d fix >>>> >>>> On Sat, Aug 6, 2016 at 2:11 PM, Steve Horton <stevejhor...@gmail.com> >>>> wrote: >>>> >>>>> Ok..can I see your gpsd conf? >>>>> >>>>> On Aug 6, 2016 1:39 PM, "Chris Greenman" <chris.m.green...@gmail.com> >>>>> wrote: >>>>> >>>>>> I only included the relevant lines. When the socket didn't work >>>>>> either I commented it out and went back to shm >>>>>> >>>>>> Here is my full chrony.conf. Note, I commented out the ntp servers >>>>>> so that I can just concentrate on troubleshooting the GPS clock and >>>>>> uncommented the SOCK line >>>>>> >>>>>> >>>>>> #server 0.us.pool.ntp.org >>>>>> #server 1.us.pool.ntp.org >>>>>> #server 2.us.pool.ntp.org >>>>>> #server 3.us.pool.ntp.org >>>>>> >>>>>> driftfile /var/lib/chrony/drift >>>>>> >>>>>> allow >>>>>> >>>>>> # set larger delay to allow the NMEA source to overlap with >>>>>> # the other sources and avoid the falseticker status >>>>>> refclock SHM 0 refid GPS precision 1e-1 offset 0.9999 delay 0.2 >>>>>> #refclock SHM 1 refid PPS precision 1e-9 >>>>>> refclock SOCK /var/run/chrony.ttyACM0.sock refid GPSS >>>>>> >>>>>> makestep 1 -1 >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Sat, Aug 6, 2016 at 10:41 AM, Steve Horton <stevejhor...@gmail.com >>>>>> > wrote: >>>>>> >>>>>>> Not really Chris. I don't see a sock option in your configuration >>>>>>> file. Gpsd should write time out to a device file some where and chrony >>>>>>> can >>>>>>> read the time from that device file via a Unix domain socket. Like I >>>>>>> said..look into the sock option and how it relates to gpsd. >>>>>>> >>>>>>> On Aug 6, 2016 10:10 AM, "Chris Greenman" < >>>>>>> chris.m.green...@gmail.com> wrote: >>>>>>> >>>>>>>> Same thing. Already tried it. >>>>>>>> >>>>>>>> On Aug 6, 2016 6:35 AM, "Steve Horton" <stevejhor...@gmail.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> I'd look closer at the SOCK option under the refclock section. >>>>>>>>> https://chrony.tuxfamily.org/manual.html#refclock-directive >>>>>>>>> >>>>>>>>> On Aug 6, 2016 12:00 AM, "Chris Greenman" < >>>>>>>>> chris.m.green...@gmail.com> wrote: >>>>>>>>> > >>>>>>>>> > Hello, >>>>>>>>> > I'm having an issue with getting time from gpsd. >>>>>>>>> > >>>>>>>>> > My setup is: >>>>>>>>> > Raspberry Pi 3 running Jessie Lite >>>>>>>>> > USB U-Blox gps >>>>>>>>> > >>>>>>>>> > gpsd is receiving NMEA from the GPS, cgps also shows time and >>>>>>>>> position properly. >>>>>>>>> > >>>>>>>>> > My chrony.conf is: >>>>>>>>> >> >>>>>>>>> >> server 0.us.pool.ntp.org >>>>>>>>> >> server 1.us.pool.ntp.org >>>>>>>>> >> server 2.us.pool.ntp.org >>>>>>>>> >> server 3.us.pool.ntp.org >>>>>>>>> >> driftfile /var/lib/chrony/drift >>>>>>>>> >> allow >>>>>>>>> >> refclock SHM 0 refid GPS precision 1e-1 offset 0.9999 delay 0.2 >>>>>>>>> >> makestep 1 -1 >>>>>>>>> >> >>>>>>>>> > Chronyc sources shows this: >>>>>>>>> >> >>>>>>>>> >> $ chronyc sources >>>>>>>>> >> 210 Number of sources = 5 >>>>>>>>> >> MS Name/IP address Stratum Poll Reach LastRx Last sample >>>>>>>>> >> ============================================================ >>>>>>>>> =================== >>>>>>>>> >> #? GPS 0 4 0 10y +0ns[ >>>>>>>>> +0ns] +/- 0ns >>>>>>>>> >> ^+ time-c.nist.gov 1 9 375 110 -23ms[ >>>>>>>>> -22ms] +/- 47ms >>>>>>>>> >> ^* pool-96-248-122-64.cmdnnj 1 10 377 56 +9749us[ >>>>>>>>> +11ms] +/- 18ms >>>>>>>>> >> ^- 104.156.99.226 2 9 377 367 +15ms[ >>>>>>>>> +17ms] +/- 107ms >>>>>>>>> >> ^- 4.53.160.75 >>>>>>>>> >> >>>>>>>>> > This system is going to be used on a boat and might not have >>>>>>>>> internet. I can tell that both programs are accessing the shared >>>>>>>>> memory >>>>>>>>> using ipcs -m: >>>>>>>>> > >>>>>>>>> >> ------ Shared Memory Segments -------- >>>>>>>>> >> key shmid owner perms bytes nattch >>>>>>>>> status >>>>>>>>> >> 0x4e545030 0 root 600 80 2 >>>>>>>>> >>>>>>>>> >> 0x4e545031 32769 root 600 80 1 >>>>>>>>> >> >>>>>>>>> > Any idea why chrony isn't getting time from the GPS? >>>>>>>>> > >>>>>>>>> > Thanks >>>>>>>>> >>>>>>>> , >>>>>> >>>>> >>>> >>
gpsd.strace.out
Description: Binary data
chrony.strace.out
Description: Binary data