# Load config files matching the /etc/chrony/conf.d/*.conf pattern.
confdir /etc/chrony/conf.d

# Use public NTP servers from the pool.ntp.org project.
# Please consider joining the pool project if possible by running your own
# server(s).
# If you are a vendor distributing a product using chrony, you *MUST*
# read and comply with http://www.pool.ntp.org/vendors.html
pool 0.openembedded.pool.ntp.org iburst

# Use a local timeserver in preference to the pool, if it's reachable.
#server 192.168.22.22 iburst minpoll 2 prefer

# Sync to pulse-per-second from an onboard GPS.
#refclock PPS /dev/pps0 poll 0 prefer
# You'll want to enable CONFIG_PPS and CONFIG_PPS_CLIENT_GPIO in your kernel,
# and an entry something like this in your device tree:
#	pps {
#		compatible = "pps-gpio";
#		gpios = <&ps7_gpio_0 56 0>;
#	};

# Load source files matching the /etc/chrony/sources.d/*.sources pattern.
# These can be reloaded using 'chronyc reload sources'.
sourcedir /etc/chrony/sources.d

# In first three updates step the system clock instead of slew
# if the adjustment is larger than 1 second.
makestep 1.0 3

# Record the rate at which the system clock gains/loses time,
# improving accuracy after reboot
driftfile /var/lib/chrony/drift

# Enable kernel synchronization of the hardware real-time clock (RTC).
rtcsync

# Allow NTP client access from local network.
#allow 192.168/16

# Serve time even if not synchronized to any NTP server.
#local stratum 10

# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys

# Specify directory for log files.
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking
