-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathorangepi-zero-ntp.html
More file actions
150 lines (130 loc) · 36.4 KB
/
orangepi-zero-ntp.html
File metadata and controls
150 lines (130 loc) · 36.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<!doctype html>
<html lang="zh"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><meta><title>用 Orange Pi Zero 搭建一台 Stratum 1 的 NTP 服务器 - ThinkAlone</title><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#4f7489"><meta name="application-name" content="ThinkAlone"><meta name="msapplication-TileImage" content="/favicon.png"><meta name="msapplication-TileColor" content="#4f7489"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-title" content="ThinkAlone"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="description" content="前言首先:这个东西有什么用?答:没有任何用处,但是能让你内网的设备时间精度达到亚毫秒级 当然,不要以这个网页为参考,实际误差要远远低于显示: 实际应该是几个微秒的误差。"><meta property="og:type" content="blog"><meta property="og:title" content="用 Orange Pi Zero 搭建一台 Stratum 1 的 NTP 服务器"><meta property="og:url" content="https://thinkalone.win/orangepi-zero-ntp.html"><meta property="og:site_name" content="ThinkAlone"><meta property="og:description" content="前言首先:这个东西有什么用?答:没有任何用处,但是能让你内网的设备时间精度达到亚毫秒级 当然,不要以这个网页为参考,实际误差要远远低于显示: 实际应该是几个微秒的误差。"><meta property="og:locale" content="zh_CN"><meta property="og:image" content="https://thinkalone.win/pictures/orangepi-zero-ntp/1.png"><meta property="og:image" content="https://thinkalone.win/pictures/orangepi-zero-ntp/2.png"><meta property="og:image" content="https://thinkalone.win/pictures/orangepi-zero-ntp/3.png"><meta property="og:image" content="https://thinkalone.win/pictures/orangepi-zero-ntp/4.png"><meta property="og:image" content="https://thinkalone.win/pictures/orangepi-zero-ntp/5.png"><meta property="article:published_time" content="2024-07-11T04:00:00.000Z"><meta property="article:modified_time" content="2025-09-10T04:00:00.000Z"><meta property="article:author" content="Disappear9"><meta property="article:tag" content="教程"><meta property="article:tag" content="折腾那些事"><meta property="twitter:card" content="summary"><meta property="twitter:image:src" content="https://thinkalone.win/pictures/orangepi-zero-ntp/1.png"><script type="application/ld+json">{"@context":"https://schema.org","@type":"BlogPosting","mainEntityOfPage":{"@type":"WebPage","@id":"https://thinkalone.win/orangepi-zero-ntp.html"},"headline":"用 Orange Pi Zero 搭建一台 Stratum 1 的 NTP 服务器","image":["https://thinkalone.win/pictures/orangepi-zero-ntp/1.png","https://thinkalone.win/pictures/orangepi-zero-ntp/2.png","https://thinkalone.win/pictures/orangepi-zero-ntp/3.png","https://thinkalone.win/pictures/orangepi-zero-ntp/4.png","https://thinkalone.win/pictures/orangepi-zero-ntp/5.png"],"datePublished":"2024-07-11T04:00:00.000Z","dateModified":"2025-09-10T04:00:00.000Z","author":{"@type":"Person","name":"Disappear9"},"publisher":{"@type":"Organization","name":"ThinkAlone","logo":{"@type":"ImageObject","url":"https://thinkalone.win/logo.png"}},"description":"前言首先:这个东西有什么用?答:没有任何用处,但是能让你内网的设备时间精度达到亚毫秒级 当然,不要以这个网页为参考,实际误差要远远低于显示: 实际应该是几个微秒的误差。"}</script><link rel="canonical" href="https://thinkalone.win/orangepi-zero-ntp.html"><link rel="alternate" href="/atom.xml" title="ThinkAlone" type="application/atom+xml"><link rel="icon" href="/favicon.png"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.0.0/css/all.css"><link data-pjax rel="stylesheet" href="https://cdn.jsdelivr.net/npm/highlight.js@11.7.0/styles/monokai.css"><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@400;600&family=Source+Code+Pro"><link data-pjax rel="stylesheet" href="/css/default.css"><style>body>.footer,body>.navbar,body>.section{opacity:0}</style><!--!--><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/cookieconsent@3.1.1/build/cookieconsent.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/lightgallery@1.10.0/dist/css/lightgallery.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/justifiedGallery@3.8.1/dist/css/justifiedGallery.min.css"><script src="https://www.googletagmanager.com/gtag/js?id=UA-114968614-1" async></script><script>window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-114968614-1');</script><!--!--><style>.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pace-inactive{display:none}.pace .pace-progress{background:#3273dc;position:fixed;z-index:2000;top:0;right:100%;width:100%;height:2px}</style><script src="https://cdn.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><!-- hexo injector head_end start --><script>
(function () {
function switchTab() {
if (!location.hash) {
return;
}
const id = '#' + CSS.escape(location.hash.substring(1));
const $tabMenu = document.querySelector(`.tabs a[href="${id}"]`);
if (!$tabMenu) {
return;
}
const $tabMenuContainer = $tabMenu.parentElement.parentElement;
Array.from($tabMenuContainer.children).forEach($menu => $menu.classList.remove('is-active'));
Array.from($tabMenuContainer.querySelectorAll('a'))
.map($menu => document.getElementById($menu.getAttribute("href").substring(1)))
.forEach($content => $content.classList.add('is-hidden'));
if ($tabMenu) {
$tabMenu.parentElement.classList.add('is-active');
}
const $activeTab = document.querySelector(id);
if ($activeTab) {
$activeTab.classList.remove('is-hidden');
}
}
switchTab();
window.addEventListener('hashchange', switchTab, false);
})();
</script><!-- hexo injector head_end end --><meta name="generator" content="Hexo 8.1.1"></head><body class="is-2-column"><nav class="navbar navbar-main"><div class="container navbar-container"><div class="navbar-brand justify-content-center"><a class="navbar-item navbar-logo" href="/"><img src="/logo.png" alt="ThinkAlone" height="28"></a></div><div class="navbar-menu"><div class="navbar-start"><a class="navbar-item" href="/">主页</a><a class="navbar-item" href="/archives">归档</a><a class="navbar-item" href="/categories">分类</a><a class="navbar-item" href="/tags">Tags</a><a class="navbar-item" href="/about">关于</a></div><div class="navbar-end"><a class="navbar-item" target="_blank" rel="noopener" title="博客源码" href="https://github.com/Disappear9/disappear9.github.io"><i class="fab fa-github"></i></a><a class="navbar-item is-hidden-tablet catalogue" title="目录" href="javascript:;"><i class="fas fa-list-ul"></i></a><a class="navbar-item search" title="搜索" href="javascript:;"><i class="fas fa-search"></i></a></div></div></div></nav><section class="section"><div class="container"><div class="columns"><div class="column order-2 column-main is-8-tablet is-8-desktop is-8-widescreen"><div class="card"><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item"><time dateTime="2024-07-11T04:00:00.000Z" title="7/11/2024, 4:00:00 AM">2024-07-11</time>发表</span><span class="level-item"><time dateTime="2025-09-10T04:00:00.000Z" title="9/10/2025, 4:00:00 AM">2025-09-10</time>更新</span><span class="level-item"><a class="link-muted" href="/categories/%E6%95%99%E7%A8%8B/">教程</a></span><span class="level-item">9 分钟读完 (大约1285个字)</span></div></div><h1 class="title is-3 is-size-4-mobile">用 Orange Pi Zero 搭建一台 Stratum 1 的 NTP 服务器</h1><div class="content"><h3 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h3><p>首先:这个东西有什么用?<br>答:<strong>没有任何用处,但是能让你内网的设备时间精度达到亚毫秒级</strong> </p>
<p><img src="/pictures/orangepi-zero-ntp/1.png" alt="time.is"> </p>
<p>当然,不要以这个网页为参考,实际误差要远远低于显示: </p>
<p><img src="/pictures/orangepi-zero-ntp/2.png" alt="chronyc sources"> </p>
<p>实际应该是几个微秒的误差。 </p>
<hr>
<span id="more"></span>
<h3 id="材料准备"><a href="#材料准备" class="headerlink" title="材料准备"></a>材料准备</h3><blockquote>
<ol>
<li>Orange Pi Zero LTS 一个<br> 也就是初代的Orange Pi Zero,理论上Zero2、3也可以,但是需要根据实际接线情况修改配置</li>
<li>ATGM336H GPS模块 一个<br> 可替换,只要带PPS输出的就行,我选这个型号是因为他是ipex接口可以外接天线<br> 2.1 GPS天线(3.3v供电) 一个<br> 2.2 SMA转IPEX射频转接线 一条</li>
<li>DS3231 实时时钟模块 一个<br> DS3231M也可以,这里只是用作掉电后的时间备份,精度不太重要</li>
<li>2*13双排26P 2.54杜邦插头双排端子线 一个<br> 用于优雅的连接到Orange Pi的26P GPIO接口</li>
</ol>
</blockquote>
<p>其他电子配件不再赘述 </p>
<h3 id="硬件配置"><a href="#硬件配置" class="headerlink" title="硬件配置"></a>硬件配置</h3><h4 id="GPS模块"><a href="#GPS模块" class="headerlink" title="GPS模块"></a>GPS模块</h4><p>使用USB-TTL板将模块连接到电脑,使用对应的工具将GPS模块的串口波特率调整到115200(模块一般默认为9600,过低,时间报文传输时间太长,会导致延迟过高)<br>我使用的ATGM336H模块可以用<a target="_blank" rel="noopener" href="https://github.com/zxcwhale/GnssToolKit3-binaries/releases">GnssToolKit3</a>进行配置<br>其他模块可以参考手册进行配置 </p>
<h4 id="DS3231模块"><a href="#DS3231模块" class="headerlink" title="DS3231模块"></a>DS3231模块</h4><p>如果你使用的是同款模块(大概率),使用烙铁拆焊掉这里的电阻以防止VCC倒灌进入电池<br><img src="/pictures/orangepi-zero-ntp/3.png" alt="DS3231"> </p>
<h4 id="接线图"><a href="#接线图" class="headerlink" title="接线图"></a>接线图</h4><p><img src="/pictures/orangepi-zero-ntp/4.png" alt="接线图"> </p>
<h3 id="系统配置"><a href="#系统配置" class="headerlink" title="系统配置"></a>系统配置</h3><p>参考:<a target="_blank" rel="noopener" href="https://github.com/moonbuggy/Orange-Pi-Zero-GPS-NTP">https://github.com/moonbuggy/Orange-Pi-Zero-GPS-NTP</a><br>下载对应的<a target="_blank" rel="noopener" href="https://www.armbian.com/orange-pi-zero/">armbian</a>系统并将系统安装到TF卡<br>系统初始化完成后,使用<code>armbian-config</code>工具,进入<code>System => Hardware</code>启用<code>i2c0, pps-gpio, uart2</code><br>运行命令</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo sh -c "echo 'param_pps_pin=PA3' >> /boot/armbianEnv.txt"</span><br></pre></td></tr></table></figure>
<p>指定PA3为PPS输入 </p>
<p>更新:使用Orange Pi Zero3时,armbian可能没有带pps的dts,可以手动创建一个,和ds3231的dts一样安装: </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line">/dts-v1/;</span><br><span class="line">/plugin/;</span><br><span class="line"></span><br><span class="line">/ {</span><br><span class="line"> compatible = "allwinner,sun50i-h616";</span><br><span class="line"></span><br><span class="line"> fragment@0 {</span><br><span class="line"> target = <&pio>;</span><br><span class="line"> __overlay__ {</span><br><span class="line"> pps_pins: pps_pins {</span><br><span class="line"> pins = "PC11";</span><br><span class="line"> function = "pps";</span><br><span class="line"> };</span><br><span class="line"> };</span><br><span class="line"> };</span><br><span class="line"></span><br><span class="line"> fragment@1 {</span><br><span class="line"> target-path = "/";</span><br><span class="line"> __overlay__ {</span><br><span class="line"> pps@0 {</span><br><span class="line"> compatible = "pps-gpio";</span><br><span class="line"> pinctrl-names = "default";</span><br><span class="line"> pinctrl-0 = <&pps_pins>;</span><br><span class="line"> gpios = <&pio 2 11 0>; /* PC11 */</span><br><span class="line"> status = "okay";</span><br><span class="line"> };</span><br><span class="line"> };</span><br><span class="line"> };</span><br><span class="line">};</span><br><span class="line"></span><br></pre></td></tr></table></figure>
<p>新建文件<code>ds3231.dts</code>: </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line">/dts-v1/;</span><br><span class="line">/plugin/;</span><br><span class="line"></span><br><span class="line">/ {</span><br><span class="line"> compatible = "xunlong,orangepi-zero", "allwinner,sun8i-h2-plus";</span><br><span class="line"></span><br><span class="line"> fragment@0 {</span><br><span class="line"> target-path = "/aliases";</span><br><span class="line"></span><br><span class="line"> __overlay__ {</span><br><span class="line"> rtc0 = "/soc/i2c@1c2b400/ds3231";</span><br><span class="line"> };</span><br><span class="line"> };</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> fragment@1 {</span><br><span class="line"> target-path = "/soc/i2c@1c2b400";</span><br><span class="line"></span><br><span class="line"> __overlay__ {</span><br><span class="line"> ds3231: rtc@68 {</span><br><span class="line"> compatible = "maxim,ds3231";</span><br><span class="line"> reg = <0x68>;</span><br><span class="line"> #clock-cells = <1>;</span><br><span class="line"> };</span><br><span class="line"> };</span><br><span class="line"> };</span><br><span class="line">};</span><br></pre></td></tr></table></figure>
<p>运行命令 </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo armbian-add-overlay ds3231.dts</span><br></pre></td></tr></table></figure>
<p>启用DS3231的DTS</p>
<h3 id="软件配置"><a href="#软件配置" class="headerlink" title="软件配置"></a>软件配置</h3><h4 id="配置gpsd"><a href="#配置gpsd" class="headerlink" title="配置gpsd"></a>配置<code>gpsd</code></h4><p>安装 </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo apt install gpsd gpsd-tools pps-tools i2c-tools</span><br></pre></td></tr></table></figure>
<p>修改配置文件<code>/etc/default/gpsd</code>: </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"># Devices gpsd should connect to at boot time.</span><br><span class="line"># They need to be read/writeable, either by user gpsd or the group dialout.</span><br><span class="line">DEVICES="/dev/ttyS2 /dev/pps0"</span><br><span class="line"></span><br><span class="line"># Other options you want to pass to gpsd</span><br><span class="line">GPSD_OPTIONS="-n -s 115200"</span><br><span class="line"></span><br><span class="line"># Automatically hot add/remove USB GPS devices via gpsdctl</span><br><span class="line">USBAUTO="true"</span><br><span class="line"></span><br><span class="line">/bin/stty -F /dev/ttyS2 115200</span><br><span class="line">/bin/setserial /dev/ttyS2 low_latency</span><br></pre></td></tr></table></figure>
<p>运行命令启动<code>gpsd</code>服务: </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">sudo systemctl daemon-reload</span><br><span class="line">sudo systemctl enable gpsd</span><br><span class="line">sudo systemctl start gpsd</span><br></pre></td></tr></table></figure>
<p>运行<code>gpsmon</code>查看是否有输出,如配置正确应该可以看到NMEA报文,位置,卫星数等信息<br>手动调整天线的位置、角度,尽量靠窗,让可见卫星数尽可能的多,使定位误差尽可能的小<br><img src="/pictures/orangepi-zero-ntp/5.png" alt="gpsmon"> </p>
<h4 id="配置chrony"><a href="#配置chrony" class="headerlink" title="配置chrony"></a>配置<code>chrony</code></h4><p>安装: </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo apt install chrony</span><br></pre></td></tr></table></figure>
<p>创建配置文件<code>/etc/chrony/conf.d/gpsd.conf</code>: </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">refclock SHM 0 precision 1e-1 offset 0.0 delay 0.2 refid NMEA noselect</span><br><span class="line">refclock PPS /dev/pps0 lock NMEA refid PPS maxlockage 32 prefer</span><br></pre></td></tr></table></figure>
<p>修改配置文件<code>/etc/default/chrony</code> </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"># This is a configuration file for /etc/init.d/chrony and</span><br><span class="line"># /lib/systemd/system/chrony.service; it allows you to pass various options to</span><br><span class="line"># the chrony daemon without editing the init script or service file.</span><br><span class="line"></span><br><span class="line"># Options to pass to chrony.</span><br><span class="line">DAEMON_OPTS="-F 1 -r -m -s"</span><br></pre></td></tr></table></figure>
<p>配置DS3231: </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"># E̅O̅S̅C̅</span><br><span class="line">i2cset -y 0 0x68 0x0e 0x1c</span><br><span class="line"></span><br><span class="line"># OSF</span><br><span class="line">i2cset -y 0 0x68 0x0f 0x08</span><br><span class="line"></span><br><span class="line"># 设置时间</span><br><span class="line">sudo hwclock -w -f /dev/rtc</span><br><span class="line"></span><br><span class="line"># 读取时间</span><br><span class="line">sudo hwclock -r -f /dev/rtc</span><br></pre></td></tr></table></figure>
<h3 id="杂项与微调"><a href="#杂项与微调" class="headerlink" title="杂项与微调"></a>杂项与微调</h3><h4 id="配置上游NTP-server"><a href="#配置上游NTP-server" class="headerlink" title="配置上游NTP server"></a>配置上游NTP server</h4><p>使用就近的NTP server<br>将配置文件<code>/etc/chrony/chrony.conf</code>中原来的pool/server部分修改如下: </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">server 0.cn.pool.ntp.org iburst</span><br><span class="line">server 1.cn.pool.ntp.org iburst</span><br><span class="line">server 2.cn.pool.ntp.org iburst</span><br><span class="line">server 3.cn.pool.ntp.org iburst</span><br></pre></td></tr></table></figure>
<h4 id="offset整定"><a href="#offset整定" class="headerlink" title="offset整定"></a>offset整定</h4><p>前文在配置文件<code>/etc/chrony/conf.d/gpsd.conf</code>中,暂时将<code>offset</code>设置为了<code>0.0</code>,在chrony服务正常运行半小时后,运行命令: </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">chronyc sourcestats</span><br></pre></td></tr></table></figure>
<p>查看<code>NMEA</code>项的<code>Offset</code>部分: </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev</span><br><span class="line">==============================================================================</span><br><span class="line">NMEA 7 3 95 -134.817 741.206 +4490us 9095us</span><br><span class="line">PPS 39 26 608 -0.000 0.008 -1ns 2553ns</span><br><span class="line">......</span><br></pre></td></tr></table></figure>
<p>将<code>Offset</code>的数值转化为秒,填入配置文件中,重启chrony<br>我的数值已经整定过了,所以只有几毫秒,未整定情况下一般会在±0.2秒。<br>offset值不应超过±0.45秒。</p>
<h4 id="开启chrony的服务器模式"><a href="#开启chrony的服务器模式" class="headerlink" title="开启chrony的服务器模式"></a>开启chrony的服务器模式</h4><p>在配置文件<code>/etc/chrony/chrony.conf</code>末尾,加一行: </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">allow</span><br></pre></td></tr></table></figure>
<p>现在chrony已经可以被局域网内的设备访问到了,将服务器地址设为chrony的IP后同步时间,然后就可以截图去炫耀了。 </p>
</div><div class="article-licensing box"><div class="licensing-title"><p>用 Orange Pi Zero 搭建一台 Stratum 1 的 NTP 服务器</p><p><a href="https://thinkalone.win/orangepi-zero-ntp.html">https://thinkalone.win/orangepi-zero-ntp.html</a></p></div><div class="licensing-meta level is-mobile"><div class="level-left"><div class="level-item is-narrow"><div><h6>作者</h6><p>Disappear9</p></div></div><div class="level-item is-narrow"><div><h6>发布于</h6><p>2024-07-11</p></div></div><div class="level-item is-narrow"><div><h6>更新于</h6><p>2025-09-10</p></div></div><div class="level-item is-narrow"><div><h6>许可协议</h6><p><a class="icons" rel="noopener" target="_blank" title="Creative Commons" href="https://creativecommons.org/"><i class="icon fab fa-creative-commons"></i></a><a class="icons" rel="noopener" target="_blank" title="Attribution" href="https://creativecommons.org/licenses/by/4.0/"><i class="icon fab fa-creative-commons-by"></i></a><a class="icons" rel="noopener" target="_blank" title="Noncommercial" href="https://creativecommons.org/licenses/by-nc/4.0/"><i class="icon fab fa-creative-commons-nc"></i></a></p></div></div></div></div></div><div class="article-tags is-size-7 mb-4"><span class="mr-2">#</span><a class="link-muted mr-2" rel="tag" href="/tags/%E6%95%99%E7%A8%8B/">教程</a><a class="link-muted mr-2" rel="tag" href="/tags/%E6%8A%98%E8%85%BE%E9%82%A3%E4%BA%9B%E4%BA%8B/">折腾那些事</a></div><!--!--></article></div><!--!--><nav class="post-navigation mt-4 level is-mobile"><div class="level-start"><a class="article-nav-prev level level-item link-muted" href="/ipv6-in-2024.html"><i class="level-item fas fa-chevron-left"></i><span class="level-item">在2024年配置IPv6是什么怎样一种体验</span></a></div><div class="level-end"><a class="article-nav-next level level-item link-muted" href="/chinese-zip-password.html"><span class="level-item">难绷的Zip与中文密码</span><i class="level-item fas fa-chevron-right"></i></a></div></nav><div class="card" id="comments"><div class="card-content"><h3 class="title is-5">评论</h3><script src="https://giscus.app/client.js" repo="Disappear9/disappear9.github.io" data-repo="Disappear9/disappear9.github.io" data-repo-id="MDEwOlJlcG9zaXRvcnkxMTM0MTc3NTc=" data-category-id="DIC_kwDOBsKeHc4CwEsU" data-category="General" data-mapping="url" data-strict="0" data-reactions-enabled="1" data-emit-metadata="0" data-input-position="top" data-theme="preferred_color_scheme" data-lang="zh-CN" data-loading="lazy" crossorigin="anonymous" async></script></div></div></div><div class="column column-left is-4-tablet is-4-desktop is-4-widescreen order-1 is-sticky"><div class="card widget" data-type="profile"><div class="card-content"><nav class="level"><div class="level-item has-text-centered flex-shrink-1"><div><figure class="image is-128x128 mx-auto mb-2"><img class="avatar is-rounded" src="/avatar.png" alt="Disappear9"></figure><p class="title is-size-4 is-block" style="line-height:inherit;">Disappear9</p><p class="is-size-6 is-block">Disappear9@D9Lab</p><p class="is-size-6 is-flex justify-content-center"><i class="fas fa-map-marker-alt mr-1"></i><span>China</span></p></div></div></nav><nav class="level is-mobile"><div class="level-item has-text-centered is-marginless"><div><p class="heading">文章</p><a href="/archives/"><p class="title">33</p></a></div></div><div class="level-item has-text-centered is-marginless"><div><p class="heading">分类</p><a href="/categories/"><p class="title">6</p></a></div></div><div class="level-item has-text-centered is-marginless"><div><p class="heading">标签</p><a href="/tags/"><p class="title">8</p></a></div></div></nav><div class="level is-mobile is-multiline"><a class="level-item button is-transparent is-marginless" target="_blank" rel="me noopener" title="Github" href="https://github.com/Disappear9"><i class="fab fa-github"></i></a><a class="level-item button is-transparent is-marginless" target="_blank" rel="me noopener" title="Twitter" href="https://twitter.com/Disappear9_"><i class="fab fa-twitter"></i></a><a class="level-item button is-transparent is-marginless" target="_blank" rel="me noopener" title="RSS" href="/atom.xml"><i class="fas fa-rss"></i></a></div></div></div><div class="card widget" id="toc" data-type="toc"><div class="card-content"><div class="menu"><h3 class="menu-label">目录</h3><ul class="menu-list"><li><a class="level is-mobile" href="#前言"><span class="level-left"><span class="level-item">1</span><span class="level-item">前言</span></span></a></li><li><a class="level is-mobile" href="#材料准备"><span class="level-left"><span class="level-item">2</span><span class="level-item">材料准备</span></span></a></li><li><a class="level is-mobile" href="#硬件配置"><span class="level-left"><span class="level-item">3</span><span class="level-item">硬件配置</span></span></a><ul class="menu-list"><li><a class="level is-mobile" href="#GPS模块"><span class="level-left"><span class="level-item">3.1</span><span class="level-item">GPS模块</span></span></a></li><li><a class="level is-mobile" href="#DS3231模块"><span class="level-left"><span class="level-item">3.2</span><span class="level-item">DS3231模块</span></span></a></li><li><a class="level is-mobile" href="#接线图"><span class="level-left"><span class="level-item">3.3</span><span class="level-item">接线图</span></span></a></li></ul></li><li><a class="level is-mobile" href="#系统配置"><span class="level-left"><span class="level-item">4</span><span class="level-item">系统配置</span></span></a></li><li><a class="level is-mobile" href="#软件配置"><span class="level-left"><span class="level-item">5</span><span class="level-item">软件配置</span></span></a><ul class="menu-list"><li><a class="level is-mobile" href="#配置gpsd"><span class="level-left"><span class="level-item">5.1</span><span class="level-item">配置gpsd</span></span></a></li><li><a class="level is-mobile" href="#配置chrony"><span class="level-left"><span class="level-item">5.2</span><span class="level-item">配置chrony</span></span></a></li></ul></li><li><a class="level is-mobile" href="#杂项与微调"><span class="level-left"><span class="level-item">6</span><span class="level-item">杂项与微调</span></span></a><ul class="menu-list"><li><a class="level is-mobile" href="#配置上游NTP-server"><span class="level-left"><span class="level-item">6.1</span><span class="level-item">配置上游NTP server</span></span></a></li><li><a class="level is-mobile" href="#offset整定"><span class="level-left"><span class="level-item">6.2</span><span class="level-item">offset整定</span></span></a></li><li><a class="level is-mobile" href="#开启chrony的服务器模式"><span class="level-left"><span class="level-item">6.3</span><span class="level-item">开启chrony的服务器模式</span></span></a></li></ul></li></ul></div></div><style>#toc .menu-list > li > a.is-active + .menu-list { display: block; }#toc .menu-list > li > a + .menu-list { display: none; }</style><script src="/js/toc.js" defer></script></div></div><!--!--></div></div></section><footer class="footer"><div class="container"><div class="level"><div class="level-start"><a class="footer-logo is-block mb-2" href="/"><img src="/logo.png" alt="ThinkAlone" height="28"></a><p class="is-size-7"><span>© 2026 Disappear9</span> Powered by <a href="https://hexo.io/" target="_blank" rel="noopener">Hexo</a> & <a href="https://github.com/ppoffice/hexo-theme-icarus" target="_blank" rel="noopener">Icarus</a></p></div><div class="level-end"><div class="field has-addons"><p class="control"><a class="button is-transparent is-large" target="_blank" rel="noopener" title="Creative Commons" href="https://creativecommons.org/"><i class="fab fa-creative-commons"></i></a></p><p class="control"><a class="button is-transparent is-large" target="_blank" rel="noopener" title="Attribution 4.0 International" href="https://creativecommons.org/licenses/by/4.0/"><i class="fab fa-creative-commons-by"></i></a></p></div></div></div></div></footer><script src="https://cdn.jsdelivr.net/npm/jquery@3.3.1/dist/jquery.min.js"></script><script src="https://cdn.jsdelivr.net/npm/moment@2.22.2/min/moment-with-locales.min.js"></script><script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.4/dist/clipboard.min.js" defer></script><script>moment.locale("zh-cn");</script><script>var IcarusThemeSettings = {
article: {
highlight: {
clipboard: true,
fold: 'unfolded'
}
}
};</script><script data-pjax src="/js/column.js"></script><script src="/js/animation.js"></script><a id="back-to-top" title="回到顶端" href="javascript:;"><i class="fas fa-chevron-up"></i></a><script data-pjax src="/js/back_to_top.js" defer></script><script src="https://cdn.jsdelivr.net/npm/cookieconsent@3.1.1/build/cookieconsent.min.js" defer></script><script>window.addEventListener("load", () => {
window.cookieconsent.initialise({
type: "info",
theme: "edgeless",
static: false,
position: "bottom-left",
content: {
message: "此网站使用Cookie来改善您的体验。",
dismiss: "知道了!",
allow: "允许使用Cookie",
deny: "拒绝",
link: "了解更多",
policy: "Cookie政策",
href: "https://www.cookiesandyou.com/",
},
palette: {
popup: {
background: "#edeff5",
text: "#838391"
},
button: {
background: "#4b81e8"
},
},
});
});</script><script src="https://cdn.jsdelivr.net/npm/lightgallery@1.10.0/dist/js/lightgallery.min.js" defer></script><script src="https://cdn.jsdelivr.net/npm/justifiedGallery@3.8.1/dist/js/jquery.justifiedGallery.min.js" defer></script><script>window.addEventListener("load", () => {
if (typeof $.fn.lightGallery === 'function') {
$('.article').lightGallery({ selector: '.gallery-item' });
}
if (typeof $.fn.justifiedGallery === 'function') {
if ($('.justified-gallery > p > .gallery-item').length) {
$('.justified-gallery > p > .gallery-item').unwrap();
}
$('.justified-gallery').justifiedGallery();
}
});</script><!--!--><script src="https://cdn.jsdelivr.net/npm/pjax@0.2.8/pjax.min.js"></script><script src="/js/pjax.js"></script><!--!--><script data-pjax src="/js/main.js" defer></script><div class="searchbox"><div class="searchbox-container"><div class="searchbox-header"><div class="searchbox-input-container"><input class="searchbox-input" type="text" placeholder="想要查找什么..."></div><a class="searchbox-close" href="javascript:;">×</a></div><div class="searchbox-body"></div></div></div><script data-pjax src="/js/insight.js" defer></script><script data-pjax>document.addEventListener('DOMContentLoaded', function () {
loadInsight({"contentUrl":"/content.json"}, {"hint":"想要查找什么...","untitled":"(无标题)","posts":"文章","pages":"页面","categories":"分类","tags":"标签"});
});</script></body></html>