Oops. Didn't see your other response. Yes, that "After" directive is mainly
what did the trick. I also removed "After=chronyd.service" from
gpsd.service as it seemed to be causing problems with gpsd startup.

Thanks for the links! I'll take a look at those to see if that's a better
way to have this work the way I want.

On Thu, Nov 30, 2017 at 6:52 AM, Joe Smith <joe.sm...@riptidesoftware.com>
wrote:

> Got rid of commandkey. I had planned to do that for a while but hadn't
> because it didn't seem to be causing any serious problem.
>
> That was precisely it. /dev/pps0 wasn't getting created by the kernel
> until later in the bootup process. I had to make some changes to
> chronyd.service and gpsd.service to ensure that both come up properly on
> boot. Main thing was to delay chronyd startup.
>
> I had to make a change to the chrony.conf to add makestep. For reasons I'm
> not yet sure of, the system clock on this BeagleBone always comes up
> waaaaaay off (like 26 days) at boot time. It would take an eternity for
> chronyd to get in sync with that big of a delta. The only purpose in life
> for this little server is to provide NTP so I'm not worried about any other
> applications being sensitive to the clock step. Just seems like the kernel
> would persist the system clock periodically so that when it boots up it's
> at least in the ballpark. I thought I read that it does that somewhere but
> can't remember where. I'll need to go back and research that. I may end up
> having to add some sort of battery backed RTC to this design to address it.
>
>
> On Wed, Nov 29, 2017 at 10:19 PM, Bill Unruh <un...@physics.ubc.ca> wrote:
>
>>
>> GEt rid of the commandkey line in chrony.conf
>>
>> Nov 03 17:16:53 beaglebone chronyd[590]: commandkey directive is no longer
>>> supported
>>> Nov 03 17:16:53 beaglebone chronyd[572]: open() failed on /dev/pps0
>>>
>>
>> Does /dev/pps0 exist when chrony starts? Chrony will not load the
>> pps-ldisc
>> module itself. You have to make sure it is loaded before chrony starts
>>
>> I do it by putting a script into /etc/init.d with the appropriate pointer
>> in
>> the /etc/rc.d/rc?.d directories. (NOt sure what the Debian numbering is of
>> the rc?.d )
>>
>> --------------------------
>> #! /bin/sh
>> #
>> # gps             Support for NTP i gps clock. #
>> # chkconfig: 345 70 15
>> # description: gps is a module to read the PPS
>> # Get config.
>> . /etc/sysconfig/network
>>
>> # Get functions
>> . /etc/rc.d/init.d/functions
>>
>> module="gps"
>> device="gps"
>> mode="664"
>> group=wheel
>>
>> case "$1" in
>> start)
>>           gprintf "Starting gps pps service"
>>           modprobe pps-ldisc
>>           ldattach 18 /dev/ttyS0
>>           ;;
>>
>> stop)
>>      killall ldattach
>>
>>      echo
>>     ;;
>> status)
>>     status ldattach
>>    ;;
>> restart)
>>    $0 stop
>>    $0 start
>>                 ;;
>> *)
>>    gprintf "Usage: gps {start|stop|status|restart}\n "
>>   exit 1
>> esac
>>
>> --------------------------------------------
>>
>>
>> Nov 03 17:16:53 beaglebone systemd[1]: chrony.service: Control process
>>> exited,
>>> code=exited status=1
>>> Nov 03 17:16:53 beaglebone systemd[1]: Failed to start chrony, an NTP
>>> client/server.
>>> Nov 03 17:16:53 beaglebone systemd[1]: chrony.service: Unit entered
>>> failed state.
>>> Nov 03 17:16:53 beaglebone systemd[1]: chrony.service: Failed with result
>>> 'exit-code'.
>>>
>>> I verified PPS with ppstest
>>>
>>> debian@beaglebone:~$ sudo ppstest /dev/pps0
>>>
>>
>> So it looks like /dev/pps0 was eventually started. It is a timing problem
>> --
>> pps0 needs to be created before chrony starts
>>
>>
>> trying PPS source "/dev/pps0"
>>> found PPS source "/dev/pps0"
>>> ok, found 1 source(s), now start fetching data...
>>> source 0 - assert 1478194022.222516784, sequence: 573 - clear
>>> 0.000000000,
>>> sequence: 0
>>> source 0 - assert 1478194023.305849881, sequence: 574 - clear
>>> 0.000000000,
>>> sequence: 0
>>> source 0 - assert 1478194024.389182301, sequence: 575 - clear
>>> 0.000000000,
>>> sequence: 0
>>>
>>> If I then start chronyd manually using "sudo systemctl start chrony" it
>>> starts
>>> successfully and I can see both sources
>>>
>>> debian@beaglebone:~$ chronyc sources
>>> 210 Number of sources = 2
>>> MS Name/IP address         Stratum Poll Reach LastRx Last sample
>>> ============================================================
>>> ===================
>>> #? NMEA                          0   4   377    11  +3819us[+3819us]
>>> +/-  106ms
>>> #* PPS                           0   4   377    12   +417ns[ +732ns] +/-
>>> 1042ns
>>>
>>> Only reason I can think of is that /dev/pps0 isn't there yet at the time
>>> systemd
>>> starts chronyd. Thoughts?
>>>
>>
>> Yup, that is what I think.
>>
>>
>>>
>

Reply via email to