5.4 KiB
Precision Timekeeping Fuckery
How it works
Services
gpsdchronytelegrafinfluxdbgrafana-serversyslog-ng
Testing
Status (Everything)
bash ~/Precision-Timekeeping-Fuckery/full_status.sh
Status (Services)
bash ~/Precision-Timekeeping-Fuckery/status_services.sh
Test PPS
sudo ppstest /dev/pps0
Logs Stuff
Chrony Logs
sudo tail -f /var/log/chrony/tracking.logsudo tail -f /var/log/chrony/statistics.logsudo tail -f /var/log/chrony/measurements.log
Telegraf Logs
sudo tail -f /var/log/telegraf/telegraf.log
Grafana Logs
sudo tail -f /var/log/grafana/grafana.log
Influxdb Logs
sudo tail -f /var/log/syslog
Root Crontab Logs
sudo tail -f /var/log/root-crontab.log
Setup
Requirements
- Raspberry Pi with
- Raspberry Pi OS Light Version Installed
- SSH Access
- sudo permissions
- A timing specific GPS module, wired to the Raspberry Pi GPIOs:
- GPS GND to RPi Physical Pin 6 (GND)
- GPS RX to RPi Physical Pin 8 (GPIO 14 / TX (UART))
- GPS TX to RPi Physical Pin 10 (GPIO 15 / RX (UART))
- GPS PPS to RPi Physical Pin 12 (GPIO 18)
- GPS VIN to RPi Physical Pin 27 (3.3 volts)
- I2C RTC Module
- RTC GND to Rpi Physical Pin 9 (GND)
- RTC SDA to RPi Physical Pin 3 (GPIO 2 / SDA1 (I2C))
- RTC RCL to RPi Physical Pin 5 (GPIO 4 / SCL1 (I2C))
- RTC VCC to RPi Physical Pin 1 (3.3 volts)
Install
Hardware
- pi4/5 and stuff for it
- gps timing module
- rtc
- battery for rtc
- wires
Wiring
OS
- Raspberry Pi OS 64 bit lite
- Raspberry Pi imager
- Configure in imager
- hostname: grandmasterclock
- enable ssh
- ssh key
- username
- password
- locale
- keyboard
Software (Auto)
WILL REBOOT IN BETWEEN EACH COMMAND
- x
curl -s https://raw.githubusercontent.com/PrincessPi3/Precision-Timekeeping-Fuckery/refs/heads/main/installer_auto.sh?nocache=$RANDOM | "$SHELL" - x
git -C ~/Precision-Timekeeping-Fuckery pull && bash ~/Precision-Timekeeping-Fuckery/installer1.sh - x
git -C ~/Precision-Timekeeping-Fuckery pull && bash ~/Precision-Timekeeping-Fuckery/installer2.sh - c
git -C ~/Precision-Timekeeping-Fuckery pull && bash ~/Precision-Timekeeping-Fuckery/installer3.sh git -C ~/Precision-Timekeeping-Fuckery pull && bash ~/Precision-Timekeeping-Fuckery/installer4.shgit -C ~/Precision-Timekeeping-Fuckery pull && bash ~/Precision-Timekeeping-Fuckery/test.sh
Software (Manual)
Clone the repo
git clone https://github.com/PrincessPi3/Precision-Timekeeping-Fuckery.git ~/Precision-Timekeping-Fuckery
Run raspi-config
- Interface Options->Serial Port
- Would you like a login shell to be accessible over serial?
- Would you like the serial port hardware to be enabled?
- Advanced Options 1. A1 Expand Filesystem
update os and packages (will reboot when finished)
bash ~/Precision-Timekeeping-Fuckery/update.sh
install packages (will reboot when finished)
bash ~/Precision-Timekeeping-Fuckery/packages.sh
finish install (will reboot when finished)
bash ~/Precision-Timekeeping-Fuckery/installer.sh
check status of everything and test
bash ~/Precision-Timekeeping-Fuckery/test.sh
navigate to http://<ip's ip>:3000
Upload ~/Garfana-Visualization.json to create dashboard
Clients
Windows
- Open the Control Panel and navigate to the Date and Time settings.
- Click on "Internet Time" and then "Change settings".
- Enable the option to "Synchronize with an Internet time server".
- Choose a time server from the available list or enter a custom one.
- Click "OK" to save the changes.
Links
Helpful Guide https://austinsnerdythings.com/2025/02/14/revisiting-microsecond-accurate-ntp-for-raspberry-pi-with-gps-pps-in-2025/
Current Module
- Chipset https://www.u-blox.com/en/product/neo-f10n-module
- Breakout https://docs.sparkfun.com/SparkFun_u-blox_NEO-F10N/single_page/
Next Module
- Chipset https://www.u-blox.com/en/product/neolea-m8t-series
- Breakout https://www.ebay.com/itm/134243322249
U-Blox Software (U-Center) https://www.u-blox.com/en/product/u-center
todo
- case
- gps sma antenna adaptor
- change gps settings
- use 5v
- adjust time delay to be closer to
- higher baudrate
- 460800
- README
- installer1-4.sh
- sudo apt update && sudo apt install -y git
- git clone https://github.com/PrincessPi3/Precision-Timekeeping-Fuckery.git ~/Precision-Timekeeping-Fuckery
- cd ~/Precision-Timekeeping-Fuckery
- grafana
- url
- default login
- import
- data source
- fix
- current
- connections->data sources->add data source->influxdb
- url http://127.0.0.1:8086
- timeout 5
- database Chrony_Stats
- save and test
- new dashboard
- import a dashbboard->Garfana-Visualization.json
- edit and update each pannel
- save dashboard
- connections->data sources->add data source->influxdb
- installer1-4.sh
- Raspberry OS Lite
- Document scripts
- chrony_statistics.sh
- services.sh
- test.sh
- cleanup.sh
- dump_configs.sh
- nuke_logs.sh
- reconfig_full.sh
- link to docs of all the services and tools
- influxdb
- chrony
- gpsd
- telegraf
- garfana
- syslog-ng
- u-blox software
- modules
- chipsets
- datasheet
- specific boards
- datasheet
- chipsets
- installer with reboot cron for sequence?
notes: gps cable delay : RG-85 : 0.051 ns/cm 10ft in cm: 304.8 gps cable delay: 304.8*0.051 = 15.5448ns, round up to 16ns
known bugs