/beaglebone-time-server

Stratum 1 GNSS NTP Server running on a BeagleBone Black

Primary LanguagePHP

BeagleBone Black Time Server

Stratum 1 GNSS NTP Server running on a BeagleBone Black

Equipment

These are the parts I have used.

Wiring

BBB GNSS Module
5V 5V
GND GND
P9_11 (UART4_TX) RX
P9_13 (UART4_RX) TX
P9_12 (GPIO 60) PPS

Setup

  1. Install Debian Minimal on the BeagleBone Black

  2. Install packages:

sudo apt update
sudo apt install git build-essential pps-tools gpsd chrony nginx php-fpm php-gd
  1. Compile PPS device tree
  • Clone bb.org-overlays repo:

    git clone https://github.com/beagleboard/bb.org-overlays
  • Copy DD-PPS-00A0.dts into cloned bb.org-overlays/src/arm/.

  • Compile .dtbo and place in /lib/firmware:

    make src/arm/DD-PPS.dtbo
    sudo cp src/arm/DD-PPS.dtbo /lib/firmware
  1. Edit /boot/uEnv.txt:
###Overide capes with eeprom
uboot_overlay_addr0=/lib/firmware/BB-I2C2-RTC-DS3231.dtbo
uboot_overlay_addr1=/lib/firmware/BB-UART4-00A0.dtbo
uboot_overlay_addr2=/lib/firmware/DD-PPS.dtbo
  1. Reboot to apply changes.

  2. Setup GPSd

  • Edit /etc/default/gpsd. Use file in this repo as reference.

  • Start GPSd:

    sudo systemctl start gpsd
    sudo systemctl enable gpsd
    systemctl status gpsd
  • Check using gpsmon and cgps commands.

  1. Setup Chrony
  • Edit Chrony config files. Use file in this repo as reference.

  • Start GPSd:

    sudo systemctl start chrony
    systemctl status chrony
  • Check using chronyc tracking, chronyc sources -v, and chronyc sourcestats -v commands.

  1. (Optional) Setup nginx + php to serve /var/www/html.

Photos

Alt text Alt text

Time Page

This is the html website included in this repo. In concept, it is similar to time.is.

Alt text

References

My setup is based off the following guides, very thankful for them.