What the Raspberry Pi time-server guides get wrong on a Pi 4, with the measurements. The headline artifact is a four-line pps-gpio patch: PREEMPT_RT force-threads IRQ handlers, and pps-gpio takes its timestamp inside its handler, so the realtime kernel puts a scheduler between the electrical edge and the clock. IRQF_NO_THREAD takes RMS offset from 2468 ns to 199 ns. - kernel/ the patch - dashboard/ live status page (position hidden by default) - docs-site/ the write-up (Astro/Starlight, brass, no tutorial section)
30 lines
687 B
TOML
30 lines
687 B
TOML
[project]
|
|
name = "gpsntp-dashboard"
|
|
version = "2026.07.12"
|
|
description = "Live status dashboard for a GPS/PPS-disciplined chrony Stratum 1 time server"
|
|
readme = "README.md"
|
|
requires-python = ">=3.11"
|
|
authors = [{name = "Ryan Malloy", email = "ryan@supported.systems"}]
|
|
license = {text = "MIT"}
|
|
dependencies = [
|
|
"fastapi>=0.115",
|
|
"uvicorn[standard]>=0.34",
|
|
]
|
|
|
|
[project.scripts]
|
|
gpsntp-dashboard = "gpsntp_dashboard.main:run"
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/gpsntp_dashboard"]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py311"
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "UP", "B"]
|