======Raspberry Pi NTP Server======
This article shows how to use a Raspberry Pi on Ubuntu Mate with a real time clock to create a NTP server.
https://thepihut.com/products/adafruit-pirtc-pcf8523-real-time-clock-for-raspberry-pi
=====Configure Clock=====
- Power Off Raspberry Pi
- Install PFC8523 on I/O Pins and install the battery
- Power Up Raspberry Pi
- After login run ''sudo raspi-config'' and enable i2c interface
- Edit ''/boot/config.txt'' and add the following to the end of the file''dtoverlay=i2c-rtc,pcf8523''
- After updating the ''/boot/config.txt'', reboot the Raspberry Pi
- Manually set the data/time on the Raspberry Pi, then use hwclock --systohc to set the time on the pfc8523
- Confirm the pfc8523 is working correctly by using hwclock --show
=====Configure Sync=====
In order to get the Raspberry Pi to read the RTC and keep the pfc8523 correctly synchronised follow the instructions below
Edit the file ''/etc/systemd/timesyncd.conf'' with the following entries:
[Time]
NTP=0.europe.pool.ntp.org 1.europe.pool.ntp.org 2.europe.pool.ntp.org 3.europe.pool.ntp.org
FallbackNTP=0.europe.pool.ntp.org 1.europe.pool.ntp.org 2.europe.pool.ntp.org 3.europe.pool.ntp.org
Update the file ''/etc/rc.local'' by adding the following lines:
[ ! -e /var/lib/systemd/clock -a "`systemctl is-active systemd-timesyncd | grep -i active`" ] && timedatectl set-ntp 1 > /dev/null 2>&1
Create a file ''/etc/systemd/system/hwclock-sync.service'' with the following contents:
[Unit]
Description=Time Synchronisation from RTC Source
After=systemd-modules-load.service
RequiresMountsFor=/dev/rtc
Conflicts=shutdown.target
[Service]
Type=oneshot
ExecStart=/sbin/hwclock -s
TimeoutSec=0
[Install]
WantedBy=time-sync.target
Now we need to shutdown and disable services for ''ntp'' and ''fake-hwclock'' and remove the corresponding packages that come by default with the OS by executing the following set of commands on the "root" shell prompt:
systemctl stop fake-hwclock
systemctl disable fake-hwclock prefer-timesyncd.service systemd-timedated.service
apt-get -y remove fake-hwclock
To finally enable the automatic start-up of the RTC synchonrisation during bootup using the ''systemd-timesyncd'' service, execute the following commands on the shell prompt:
systemctl enable hwclock-sync systemd-timesyncd
systemctl start hwclock-sync systemd-timesyncd
=====Install NTP=====
apt-get install ntp
Edit ''/etc/ntp.conf''
server 0.europe.pool.ntp.org
server 1.europe.pool.ntp.org
server 2.europe.pool.ntp.org
server 3.europe.pool.ntp.org
Run the following commands to activate ntp
sudo systemctl enable ntp
sudo systemctl start ntp
After five minutes, run ''ntpq'' and use the command peers to show the clocks ntp is synchronised with
ntpq> peers
ntpq> exit
Now verify correct operation by using the timedatectl command to obtain results similar to below
Local time: Sun 2017-10-15 12:13:55 BST
Universal time: Sun 2017-10-15 11:13:55 UTC
RTC time: Sun 2017-10-15 11:13:55
Time zone: Europe/London (BST, +0100)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no