用树莓派和 PPS GPS 做微秒级 NTP 服务器
来源:austinsnerdythings.com — 2021-04-19
📋 概述
默认互联网 NTP 只能把机器校准到 10-20 毫秒,而 PPS(每秒脉冲)能再往下推一个 SI 前缀,达到微秒级,也就是精确 1000 倍。作者用一块十美元级的 GT-U7 或 Adafruit Ultimate GPS 加一台树莓派 3/4,做出家用 Stratum 1 服务器。步骤是:在 config.txt 加 pps-gpio overlay 指定 GPIO 18、开 UART、把 pps-gpio 加进 /etc/modules;只连五根线(PPS/VIN/GND/RX/TX);用 raspi-config 关掉串口登录 shell 但保留硬件;用 ppstest 确认每秒都有脉冲。
🔑 核心要点
- 选 chrony 而不是 ntpd 的原因很实际:同步更快,而且不用自己编译就支持 PPS,装 chrony 会自动卸掉 ntpd。
- 配置只需要两行 refclock:NMEA 走 SHM 0 并给一个实测偏移(作者测出 NMEA 语句比 PPS 晚 325 ms),PPS 走 /dev/pps0,后续 2025 年更新才改成单源方案。
- 验收标准是 chronyc sources 里 PPS 前面出现
*:作者实测偏差 289 纳秒,日志里甚至出现过 831 皮秒,并坦言树莓派大概没能力真的记这么细。
- NMEA 源通常被标成 x(假时钟)也正常,因为时间是由 PPS 提供的,NMEA 只负责给整秒一个粗定位。
- 影响精度的因素有三个:环境温度、树莓派负载(这两者都通过晶振温度起作用)以及 GPS 收星质量;后续文章用热管理把稳定性又提升了至少两倍。
💡 金句
这已经非常非常接近原子钟级别的精度了。
👍 0
👎 0
← 返回 Lobsters 首页