+* Ninfacyzga-1 Time Tracking
#+TITLE: Ninfacyzga-1 Time Tracking
#+AUTHOR: Steven Baltakatei Sandoval
#+EMAIL: baltakatei@gmail.com
-* Time Tracking
+#+DATE: 2023-03-14
+
** About
This document was created by Steven Baltakatei Sandoval on
-~2020-07-23T22:27Z~ under a [[https://creativecommons.org/licenses/by-sa/4.0/][Creative Commons BY-SA 4.0 license]]. It
-was updated by Steven Baltakatei Sandoval on ~2020-10-17T23:31Z~
+~2020-07-23T22:27+00~ under a [[https://creativecommons.org/licenses/by-sa/4.0/][Creative Commons BY-SA 4.0 license]]. It
+was updated by Steven Baltakatei Sandoval on ~2023-03-14T19:47+00~.
** Narrative
The ~ninfacyzga-01~ device is equipped with an Ozzmaker BerryGPS-IMU
-module which provides time and location data to ~gpsd~ and ~chrony~. The
-time is provided by GPS satellites which themselves are
+module which provides time and location data to ~gpsd~ and
+~chrony~. The time is provided by GPS satellites which themselves are
equipped [fn:nasa_20020408_atomicclock] with atomic clocks. This
-extremely accurate set of clocks are needed since a GPS receiver
-calculates its position in space using a General Relativity
+extremely accurate set of clocks is needed since a GPS receiver
+determines its position in space using a [[https://en.wikipedia.org/wiki/Error_analysis_for_the_Global_Positioning_System#Special_and_general_relativity][General Relativity]]
calculation that uses the small variations in the time stamps received
from each satellite. This means that ~gpsd~ may be used to set the
system clock without a need for an internet connection to a default
*** Initial Startup
**** Perform initial setup.
See [[file:../setup/README.org][Main Setup]] procedure.
+
**** Install Hardware for time tracking
See [[https://ozzmaker.com/forums/topic/connecting-gps-pps-pin/][this]] Ozzmaker forum topic about connecting the BerryGPS-IMU
~T_PULSE~ pin to GPIO 18.
by adding the following line to ~/boot/config.txt~ as described on
[[https://ozzmaker.com/forums/topic/problems-with-pps-on-a-pi0w-running-raspian-and-attached-to-a-berrygps-imuv3/][this Ozzmaker page]]:
+: # Enable PPS on GPIO 18
: dtoverlay=pps-gpio,gpiopin=18
The ~/boot/config.txt~ file can be modified via:
The Ozzmaker BerryGPS-IMU makes NMEA sentences available via the
serial "UART" device ~/dev/ttyAMA0~. If bluetooth has not been
disabled, the Raspberry Pi OS automatically creates a software "UART"
-device at ~/dev/serial0~. See the "[[file:~/git-OC/ninfacyzga-01/doc/setup/README.org::*Disable%20Bluetooth][Disable Bluetooth]]" section in the
+device at ~/dev/serial0~. See the "[[file:../setup/README.org::*Disable%20Bluetooth][Disable Bluetooth]]" section in the
[[file:../setup/README.org][Main Setup]] Initial Startup procedure for instructions on how to
disable bluetooth to free up ~/dev/ttyAMA0~ for use by ~gpsd~.
***** Setup ~gpsd~
-See the "[[file:~/git-OC/ninfacyzga-01/doc/location/README.org::*Setup%20~gpsd~][Setup ~gpsd~]]" subsection within the "Initial Startup" section
-of the Location Logging [[file:~/git-OC/ninfacyzga-01/doc/location/README.org][~README.org~]] file. There is one additional
+See the "[[file:../location/README.org::*Setup%20~gpsd~][Setup ~gpsd~]]" subsection within the "Initial Startup" section
+of the Location Logging [[file:../location/README.org][~README.org~]] file. There is one additional
change that must be made which is to add a ~/dev/pps0~ item to the
~DEVICES=~ line in ~/etc/default/gpsd~ like so:
The following commands may be useful for testing ~gpsd~ and ~chrony~
configurations.
-- ~sudo chronyc sources -v~ : Shows time sources and associated accuracy
+- ~chronyc sources -v~ : Shows time sources and associated accuracy
information.
-- ~sudo chronyc tracking~ : Shows the current time difference between
+- ~chronyc tracking~ : Shows the current time difference between
the reference clock and the system clock. Note: ~chrony~ gradually
attempts to reduce the difference by changing the system clock.
- ~sudo systemctl restart chrony~ : Restart ~chrony~.
-- ~sudo systemctl status chrony~ : Check status of ~chrony~ service.
+- ~systemctl status chrony~ : Check status of ~chrony~ service.
- ~sudo ntpshmmon~ : Shows live output of data using the shared memory
driver filled by ~gpsd~. ([[https://gpsd.gitlab.io/gpsd/gpsd-time-service-howto.html][ref]])
[fn:se_20180320_raspicpugov] Title:[[https://raspberrypi.stackexchange.com/questions/9034/how-to-change-the-default-governor]["How to change the default governor?"]]; Author:[[https://raspberrypi.stackexchange.com/users/5538/goldilocks][goldilocks]]; Date: 2018-03-20; Website:stackexchange.com;
+***** Configure another machine to use the time server
+A separate Debian machine may be configured to use the ~ninfacyzga-1~
+device as a GPS time server. This may be performed by:
+
+1. Installing ~chrony~ onto the separate machine (e.g. hostname
+ ~somedeb~):
+
+#+begin_example
+somedeb:$ sudo apt update && sudo apt upgrade
+somedeb:$ sudo apt install chrony
+#+end_example
+
+2. Modifying the ~chrony.conf~ file:
+
+ : somedeb:$ emacs /etc/chrony/chrony.conf
+
+ - Add the following lines to the end of this configuration file,
+ substituting ~ninfacyzga-1-x~ with the hostname or IP address
+ chosen for the ~ninfacyzga-1~ device:
+
+#+begin_example
+# Use ninfacyzga-1-x if available
+server ninfacyzga-1-x iburst prefer minpoll 2 maxpoll 4
+#+end_example
+
+3. Restart the ~chrony~ service.
+
+ : somedeb:$ sudo systemctl restart chrony
+
+4. Verify that ~ninfacyzga-1-x~ is being used by ~chrony~
+
+#+begin_example
+somedeb:$ chronyc sources
+MS Name/IP address Stratum Poll Reach LastRx Last sample
+===============================================================================
+^? pugot.canonical.com 2 6 377 11 -2172us[-2209us] +/- 115ms
+^? prod-ntp-5.ntp4.ps5.cano> 2 6 377 9 -4169us[-4206us] +/- 88ms
+^? prod-ntp-4.ntp1.ps5.cano> 2 6 377 10 -2758us[-2795us] +/- 88ms
+^? prod-ntp-3.ntp1.ps5.cano> 2 6 377 5 -6473us[-6510us] +/- 87ms
+^? mail.novg.net 2 6 377 11 -6099us[-6136us] +/- 125ms
+^? ntp1a.versadns.com 1 6 377 6 -2006us[-2043us] +/- 40ms
+^? 2602:fde5:2a::12 1 6 377 11 -2200us[-2237us] +/- 49ms
+^? 2001:da8:9000::130 1 6 377 15 -2372us[-2409us] +/- 102ms
+^* ninfacyzga-1-x.lan 2 4 377 14 -1686us[-1724us] +/- 2971us
+^- brazil.time.system76.com 2 6 377 17 -4738us[-4775us] +/- 103ms
+^- ohio.time.system76.com 2 6 377 15 +320us[ +283us] +/- 58ms
+^- oregon.time.system76.com 2 6 377 19 -5845us[-5882us] +/- 30ms
+^- paris.time.system76.com 2 6 377 19 -4531us[-4568us] +/- 92ms
+^- virginia.time.system76.c> 2 6 377 15 -6607us[-6644us] +/- 51ms
+#+end_example
+
+ The ~*~ in the ~^*~ symbol at the start of the line containing
+ ~ninfacyzga-1-x~ indicates that ~ninfacyzga-1-x~ is being used to
+ set the system clock of ~somedeb~.
+
*** Normal Startup
*** Normal Operation
*** Normal Shutdown
refclock SHM 0 refid GPS precision 1e-1 offset 0.0000 delay 0.2 stratum 1
refclock SHM 1 refid PPS precision 1e-7 stratum 1
#+END_EXAMPLE
+