dcb6bb7d67deadd5ee6765b941106fc8b9e1966a
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
curl -s https://raw.githubusercontent.com/PrincessPi3/Precision-Timekeeping-Fuckery/refs/heads/main/time_fuckery.sh?nocache=$RANDOM | $SHELLgit -C ~/Precision-Timekeeping-Fuckery pull && bash ~/Precision-Timekeeping-Fuckery/time_fuckery.sh- each reboot run the above command a total of four (4) times
- https://grandfatherclock:3000
- default login:
adminandadmin- set new password
- data sources->add new->influx db
- name "influxdb1"
- query languagew: influxql
- http
- url: http://127.0.0.1:8086
- timeout seconds: 3
- database: Chrony_Stats
- user, pass: blank
- save and test
- Dashboards->New-Import
- Upload Garfana-Visualization.json
- default login:
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?
- Interface Options-I2C
- Enable Yes
- Advanced Options 1. A1 Expand Filesystem
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/
Old Module
- Chipset https://www.u-blox.com/en/product/neo-f10n-module
- Breakout https://docs.sparkfun.com/SparkFun_u-blox_NEO-F10N/single_page/
Current 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
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
Description
Languages
Shell
90.7%
Python
9.3%