+***** Install packages via ~apt~
+Run the following command to install the required packages.
+: $ sudo apt install usbmount eject gpsd gpsd-clients python-gps pps-tools ntp
+
+***** Modify ~/boot/config.txt~
+In order to tell the Raspberry Pi to expect PPS data on ~BCM 18~ (pin
+number 12; see [[https://pinout.xyz/][RaspPi pinout]]), add 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]]:
+
+: dtoverlay=pps-gpio,gpiopin=18
+
+PPS data can be confirmed by running:
+
+#+BEGIN_EXAMPLE
+$ sudo su -
+# ppstest /dev/pps0
+trying PPS source "/dev/pps0"
+found PPS source "/dev/pps0"
+ok, found 1 source(s), now start fetching data...
+source 0 - assert 1595708074.003644641, sequence: 219 - clear 0.000000000, sequence: 0
+source 0 - assert 1595708075.003709620, sequence: 220 - clear 0.000000000, sequence: 0
+source 0 - assert 1595708076.003779580, sequence: 221 - clear 0.000000000, sequence: 0
+source 0 - assert 1595708077.003850580, sequence: 222 - clear 0.000000000, sequence: 0
+#+END_EXAMPLE
+
+***** Add udev rule
+As per [[https://www.slsmk.com/how-to-setup-a-gps-pps-ntp-time-server-on-raspberry-pi/][the slsmk.com]] guide, create symbolic links expected by ~ntp~
+pointing to the PPS device. This may be performed by creating the file:
+
+: /etc/udev/rules.d/09-pps.rules
+
+with the contents:
+
+#+BEGIN_EXAMPLE
+KERNEL=="ttyAMA0", SUBSYSTEM=="tty", DRIVER=="", OWNER=="root", GROUP=="tty", MODE=="0777", SYMLINK+="gps0"
+#+END_EXAMPLE
+
+***** Modify ~/etc/modules~
+For older versions of Raspberry Pi, it may be necessary to explicitly
+require the ~pps-gpio~ module to be loaded by making sure
+~/etc/modules~ contains the line:
+
+: pps-gpio
+
+According to [[https://www.raspberrypi.org/forums/viewtopic.php?p=757747#p757747][this]] post on 2015-05-13T09:14 by [[https://www.raspberrypi.org/forums/memberlist.php?mode=viewprofile&u=31454][ame]] on the Raspberry Pi
+forums,
+
+#+BEGIN_QUOTE
+rowlandski wrote:
+> Hi,
+>
+> I want the RPi to load/probe the w1-gpio module on boot.
+>
+> I have added:
+>
+> sudo modprobe w1-gpio
+>
+> To the etc/modules file, but on boot it is not loaded.
+> I have checked this by the lsmod command. If i then enter the above line manually and then check it's there loaded.
+>
+> What's wrong with my line on code in the modules file?
+>
+> Thanks
+
+You no longer need to load modules for some devices. It's handled by devicetree.
+
+Search for "devicetree" on the forum, or start here:
+https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=97314
+#+END_QUOTE
+
+As of 2020-07-25, using Raspbian Buster 10 with a BerryGPS-IMU v3,
+~/etc/modules~ did not need to be modified.
+
+***** Remove DHCP client hooks
+As per [[https://www.slsmk.com/how-to-setup-a-gps-pps-ntp-time-server-on-raspberry-pi/][this]] guide, "remove ntp DHCP hook (so that it doesn't override ntp settings)".
+
+This can be performed by running the following command (shown in
+script form for readability):
+
+#+BEGIN_EXAMPLE
+if [ -f "/etc/dhcp/dhclient-exit-hooks.d/ntp" ]; then
+ mv /etc/dhcp/dhclient-exit-hooks.d/ntp /etc/dhcp/dhclient-exit-hooks.d/xxxntp-orig;
+else
+ echo "NTP exit hook does not exist";
+fi;
+#+END_EXAMPLE
+