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
>>>>>>>>
>>>>>>>
>>>>>
>>>
>

Reply via email to