Stratum 1 GNSS NTP Server running on a BeagleBone Black
These are the parts I have used.
- BeagleBone Black
- SparkFun ublox NEO-M9N
- I went a little overkill on this one, but this module supports GPS, GLONASS, BeiDou, and Galileo
- This Adafruit module is a good alternative
- Adafruit DS3231 RTC
- Some cheap Active GPS Antenna
- uFL to SMA Adapter Pigtail (Example)
- Pin Headers for the GNSS module (Soldering required)
- Some Male-to-Female DuPont Cables
BBB | GNSS Module |
---|---|
5V | 5V |
GND | GND |
P9_11 (UART4_TX) | RX |
P9_13 (UART4_RX) | TX |
P9_12 (GPIO 60) | PPS |
-
Install packages:
sudo apt update
sudo apt install git build-essential pps-tools gpsd chrony nginx php-fpm php-gd
- Compile PPS device tree
-
Clone
bb.org-overlays
repo:git clone https://github.com/beagleboard/bb.org-overlays
-
Copy
DD-PPS-00A0.dts
into clonedbb.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
- 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
-
Reboot to apply changes.
-
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
andcgps
commands.
- 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
, andchronyc sourcestats -v
commands.
- (Optional) Setup nginx + php to serve
/var/www/html
.
This is the html website included in this repo. In concept, it is similar to time.is.
My setup is based off the following guides, very thankful for them.