[time-nuts] GPSDO+PC as a NTP server

Fio Cattaneo fio at cattaneo.us
Wed Oct 30 23:07:00 UTC 2019


Ah sorry you right. I wrote down the ntp.conf by memory and not by copy/pasting (I wasn’t home when I did it), your ntp.conf syntax is the correct one.

 

Looking at your post, I think the problem was that PPS was disabled outright. Looking at your post, I see:

 

>> root at gpsdo:~/ppsapitest # sysctl dev.uart.0.pps_mode=0x01
>> dev.uart.0.pps_mode: 0 -> 1

 

Sysctl output shows that pps_mode was originally 0 before the change.

The bit values for pps_mode can be found in the include files sys/dev/uart/uart_ppstypes.h: 0x0 = disabled, 0x1 = pps_cts, 0x2 = pps_dcd, …..

 

Glad it’s working now, have fun with your GPSDO 😊

 

 

From: Adam Kumiszcza <akumiszcza at gmail.com> 
Sent: Wednesday, 30 October, 2019 15:07
To: Fiorenzo Cattaneo <fio at cattaneo.us>; Discussion of precise time and frequency measurement <time-nuts at lists.febo.com>
Subject: Re: [time-nuts] GPSDO+PC as a NTP server

 

My ntp.conf was very similar:

 

server 127.127.20.0 mode 17 minpoll 4 maxpoll 4 prefer
fudge 127.127.20.0 flag1 1 flag3 1 time2 0.15698

 

Are you sure flag1 comes after server, not fudge? It gives me syntax error in /var/log/messages. Time2 calculated experimentally by the awk script.

 

# ntpq -c kerninfo
associd=0 status=042d leap_none, sync_uhf_radio, 2 events, kern,
pll offset:            2.54041
pll frequency:         -65.3446
maximum error:         7.453
estimated error:       0.2
kernel status:         pll ppsfreq ppstime nano
pll time constant:     4
precision:             0.001
frequency tolerance:   495.911
pps frequency:         -65.153
pps stability:         0
pps jitter:            0.000
calibration interval   4
calibration cycles:    0
jitter exceeded:       0
stability exceeded:    0
calibration errors:    0

 

As you can see, pps data looks broken. No calibration.

 

"cu -l /dev/gps0 -s 9600" gives me proper NMEA

 

I could not find ppstest for FreeBSD (pps-tools), but I compiled ppsapitest (https://github.com/freebsd/freebsd/tree/master/tools/test/ppsapi). 

 

 # kenv hint.uart.0.flags="0x10"

 # ./ppsapitest -v /dev/cuau0
Supported modebits: CAPTUREASSERT CAPTURECLEAR OFFSETASSERT OFFSETCLEAR CANWAIT TSPEC
^C
root at gpsdo:~/ppsapitest # sysctl dev.uart.0.pps_mode=0x01
dev.uart.0.pps_mode: 0 -> 1
root at gpsdo:~/ppsapitest # ./ppsapitest -v /dev/cuau0
Supported modebits: CAPTUREASSERT CAPTURECLEAR OFFSETASSERT OFFSETCLEAR CANWAIT TSPEC
1572471715 .999207702 8 1572471715 .050547992 8
1572471715 .999207702 8 1572471716 .050923133 9
1572471716 .998764118 9 1572471716 .050923133 9
1572471716 .998764118 9 1572471717 .051208066 10
1572471717 .999071162 10 1572471717 .051208066 10

 

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
oGPS_NMEA(0)     .GPS.            0 l    1   16  377    0.000    0.001   0.010
*192.168.0.200   80.50.231.226    2 u   12   64    7    0.064    1.272   0.010
 pool.ntp.org <http://pool.ntp.org>     .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp2.tktelekom. 80.50.231.226    2 u   10   64    7   34.972    5.244   0.614
 ntp.wide-net.pl <http://ntp.wide-net.pl>  194.146.251.101  2 u    6   64    7   85.966   -2.331   0.223
 ntp2.pl <http://ntp2.pl>          194.146.251.101  2 u    8   64    7   23.816    1.304   0.997
 162.159.200.123 10.73.8.83       3 u    8   64    7   42.993   -7.413   1.570
 162.159.200.1   10.73.8.83       3 u    4   64    7   43.889   -6.966   0.912
 SunSITE.icm.edu <http://SunSITE.icm.edu>  210.100.177.101  2 u    4   64    7   34.776    4.662   7.338
 46.175.224.7.ma <http://46.175.224.7.ma>  193.106.216.30   3 u    1   64    7   49.671   -0.098   1.377
 ip-159-253-242- 194.146.251.100  2 u    6   64    3   38.582    6.277   1.151
 old.histeria.pl <http://old.histeria.pl>  212.160.106.226  2 u    4   64    3   30.292    1.609   1.325
 afrodyta.comple 210.100.177.101  2 u    -   64    3   33.259    2.214   1.533

 

# ntpq -c kerninfo
associd=0 status=041d leap_none, sync_uhf_radio, 1 event, kern,
pll offset:            0.009016
pll frequency:         -63.8877
maximum error:         941.687
estimated error:       0.003
kernel status:         pll ppsfreq ppstime ppssignal nano
pll time constant:     4
precision:             0.001
frequency tolerance:   495.911
pps frequency:         -63.8877
pps stability:         0.342499
pps jitter:            0.001
calibration interval   32
calibration cycles:    17
jitter exceeded:       1
stability exceeded:    0
calibration errors:    2

 

As you can see, pps data appeared and I have my "o" in front of GPS_NMEA! :) I did not change ntp.conf, time2 offset is now ignored, I guess.

Offset and jitter from ntpq -crv after less than an hour now is even lower than my Raspberry Pi with better gps chip and running non stop, but I need more testing, of course.

 

Thank you again for your help!  dev.uart.0.pps_mode=0x01 did wonders.

 

Adam Kumiszcza

 

 

On Wed, Oct 30, 2019 at 9:01 PM Fiorenzo Cattaneo <fio at cattaneo.us <mailto:fio at cattaneo.us> > wrote:

Hmm that is odd. I haven't seen the sio man page, I refer and use the directions in uart man page 

 

https://www.freebsd.org/cgi/man.cgi?query=uart <https://www.freebsd.org/cgi/man.cgi?query=uart&sektion=4&manpath=freebsd-release-ports> &sektion=4&manpath=freebsd-release-ports

 

And set this sysctl variable in /boot/loader.conf (note that the uart man page is also wrong, you can only set pps_mode for specific devices and not for all devices):

 

dev.uart.0.pps_mode=0x10

 

To test it without having to reboot, use sysctl command.

 

Maybe the sio feature has been added recently, IDK, I still use FreeBSD kernel 11.1. What I know for sure is that the sysctl is actually implemented in the code -- see uart_core.c source.

 

 

For ntp.conf, I only use the NMEA refclock #20. I always had trouble with the PPS  refclock #22.

 

https://www.eecis.udel.edu/~mills/ntp/html/drivers/driver20.html

 

The entry is something like this:

 

Server 127.127.20.0 mode 17 flag1 1

 

Mode 17 tells ntpd to process RMC only and use 9600 bps. Default is 4800 bps. If you want to process all supported sentences at 9600 bps, use mode 16.

Flag1  tells ntpd to use PPS. Default is no PPS.

I also set max poll to 4.

 

If you are still having trouble, you can troubleshoot like this:

* set boot verbose mode in loader.conf, it will print the actual UART pps configuration.

* use cu first to double check that you are using the correct line at the correct speed, for instance:

       cu -l /dev/gps0 -s 9600

If you see NMEA sentences correctly, then you know you have the correct device at 9600bps

* download, build and run ppstest program to make sure PPS is setup correctly.

 

If you see NMEA sentences, but you don't see PPS, there are two possibilities (1) PPS capture is still set to the default DCD (2) PPS output from GPS receiver is disabled. The latter should not be the case with the GPSDO.

 

 

good luck!

 

 

 

 

 

 

 

-- Fio Cattaneo

Universal AC, can Entropy be reversed? -- "THERE IS AS YET
INSUFFICIENT DATA FOR A MEANINGFUL ANSWER."





On Oct 30, 2019, at 02:02, Adam Kumiszcza <akumiszcza at gmail.com <mailto:akumiszcza at gmail.com> > wrote:



HI again!

 

On Wed, Oct 23, 2019 at 9:37 PM Fiorenzo Cattaneo <fio at cattaneo.us <mailto:fio at cattaneo.us> > wrote:

> 2. I would like to get both NMEA and PPS signal from it on the NTP server.
> Currently PPS is on pin 8 (CTS) but according to
> http://doc.ntp.org/4.1.1/driver22.htm and
> https://www.satsignal.eu/ntp/NTP-on-Windows-serial-port.html it should
> rather be on pin 1 (DCD).

[...] 

(3) use FreeBSD instead, which supports runtime configuration of
either DCD or CTS for PPS

I use the latter, as I am big fan of FreeBSD

 

I'm trying to make it work on FreeBSD. 

 

I put hint.uart.0.flags="0x10000" in /boot/device.hints as per https://www.freebsd.org/cgi/man.cgi?query=sio <https://www.freebsd.org/cgi/man.cgi?query=sio&sektion=4> &sektion=4 (0x10000   PPS timestamping on CTS instead of DCD). 
I recompiled the kernel with PPS support.

My devfs.conf has the following:

link cuau0 gps0

link cuau0 refclock-0

link cuau0 pps0

 

But I still don't seem to get PPS (no "o" in ntpq -np). Which driver do you use? 127.127.22.0 or 127.127.20.0 or both? I'm only able to use 22.0, which is GPS_NMEA, but on some webpages it's the only one mentioned after discussing PPS.

 

Thanks in advance,

Adam Kumiszcza




More information about the Time-nuts_lists.febo.com mailing list