我有3个Raspberry 3 Model B设备。他们的操作系统是Windows 10 IOT,它们是在同一天(昨天)安装的。
我对他们的计时有非常奇怪的经历,他们非常不准确。他们中的一些人在正确的时间后面有一些时间,而其他人则需要3-4分钟。常见的行为是不准确的。
我尝试通过在启动计划脚本中调用“w32tm / resync / force”来强制每次启动时间同步。它似乎没有任何帮助。
我还尝试使用不同的Wi-Fi网络(来自不同的供应商),所有这些都存在问题。
当通过w32tm / query / status查询时间状态时,我得到以下结果:
设备1
飞跃指标:3(最后一分钟有61秒) Stratum:0(未指定) 精度:-23(每剔119.209ns) 根延迟:0.0000000s 根分散:0.0000000s ReferenceId:0x00000000(未指定) 上次成功同步时间:未指定 来源:本地CMOS时钟 轮询间隔:10(1024s)
设备2
飞跃指标:0(无警告) Stratum:3(辅助参考 - 由(S)NTP同步) 精度:-23(每剔119.209ns) 根延迟:0.1734432s 根分散:0.4173777s ReferenceId:0x338C7FC5(来源IP:51.140.127.197) 上次成功同步时间:7/14/2017 7:48:12 AM 来源:time.windows.com,0x9 民意调查时间间隔:15(32768s)
设备3
飞跃指标:0(无警告) Stratum:3(辅助参考 - 由(S)NTP同步) 精度:-23(每剔119.209ns) 根延迟:0.1850726s 根分散:16.7226250s ReferenceId:0x338C7FC5(来源IP:51.140.127.197) 上次成功同步时间:7/14/2017 11:42:52 AM 来源:time.windows.com,0x9 轮询间隔:10(1024s)
我通过网络阅读有关该问题的主题,但我找不到任何可行的解决方案。我对我来说似乎很奇怪,时间应该是大多数应用程序的关键因素,因此必须有一个解决方案。
你能帮我解决一下吗?任何建议都非常受欢迎!
答案 0 :(得分:5)
设备1似乎根本不使用时间服务器,在所有设备上强制执行相同的配置。
我只是建议你尝试不同的时间服务器。 我有类似的问题,有时这甚至不是硬件相关的,而是网络的事情。没有人知道你和时间服务器之间的区别,然后尝试不同的网络就足够了。
http://www.pool.ntp.org/en/use.html
w32tm /config /syncfromflags:manual /manualpeerlist:"0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org"
它应该足够好...... 但 RPi上没有RTC(实时时钟)。您可以购买一个,谷歌raspberry pie rtc
。
如果没有RTC,RPi会根据CPU周期建立时间。这些不是那么超级准确,当你超频CPU时可能会更加漂移。
https://raspberrypi.stackexchange.com/
可能会更好地回答这个问题如果您不想购买该芯片,您可以尝试更改电压,让时间更频繁地从时间服务器更新。
答案 1 :(得分:4)
由于Pi缺少实时时钟,因此您应该选择双管齐下的方法以获得最佳效果。
选择其他时间服务器进行长期更正,然后在其上安装与此类似的real-time clock module,以便在未连接到网络时保持非常接近的时间。该模块温度稳定,无需焊接,使用无处不在的I2C接口,并声称具有高精度和长电池寿命。对许多Adafruit产品感到满意。
就时间服务器而言,请have a look at this resource。他们甚至包括(在他们的服务条款中)如何设置ntp以便最佳使用(以及他们的池上的分布式负载)的指南。
答案 2 :(得分:2)
首先,我必须声明我还没有触摸Windows 10,但我还没有触摸过Raspberry。另一方面,我已经看到以下方法解决了所有类型的Windows机器的所有时间同步问题,你可以尝试一下。
问题(根据我的经验):
1)time.windows.com非常不可靠。在我的设置和几个客户的设置中,在大多数情况下,即使没有涉及无线连接,即使存在可靠的高数据速率/低延迟,时间也无法在开箱即用的Windows安装后可靠地同步连接到互联网提供商。
2)Windows似乎以不寻常的方式查询NTP服务器(我们也可以说:错误)。虽然我对NTP没有足够的深入了解详细解释,但作为客户端的Windows似乎发送了所谓的对称活动"数据包到服务器而不是正常的"客户端数据包"。所以起初它与其他(标准)NTP服务器的工作非常不可靠。
可能的解决方案
问题1的解决方案很明显:在网络中的某个位置安装标准NTP服务器。如果你手头有一个Linux盒子,我最终可以帮你正确配置它。然后,通过电缆将Raspberrys连接到此NTP服务器,并在Raspberrys上将解决方案应用于问题2(见下文)。
问题2)的解决方案不那么明显,涉及为Windows时间服务设置一个未记录的标志(至少,它在Windows 7 Pro中没有记录,我现在就在手边)。您已经查询了Windows时间服务状态,并向您显示了输出。请注意输出中的以下部分(例如设备2):
Source: time.windows.com,0x9 Poll Interval: 15 (32768s)
问题是0x9
应为0x8
。要更改该标志,请打开命令行窗口作为管理员(仅属于管理组是不够的)并执行以下命令:
w32tm /config /manualpeerlist:xxx.xxx.xxx.xxx,0x8 /syncfromflags:MANUAL
注意如何添加正确的标志0x8
(当然,xxx.xxx.xxx.xxx是您的NTP服务器的IP地址,但您可以提供正常的主机名(例如ntpserver.example.org) )以及)。基本上,上面的行告诉Windows时间服务它应该同步到哪个服务器,它应该仅同步到该服务器,并且它应该发送正常的客户端请求数据包(而不是活动的对称数据包)到那个服务器。
完成此操作后,您必须通过更新其配置重新启动Windows时间服务来应用更改(我更喜欢第一个)。
如果您再次查询状态,则输出中会有以下部分:
Source: xxx.xxx.xxx.xxx,0x8 Poll Interval: xx (xxxxxs)
请注意,输出中的标记现已从0x9
更改为0x8
。
最后两个笔记
1)如果你坚持与time.windows.com同步,我不确定问题2)的解决方案是否有效。由于它不可靠,我现在已经多年没用过了。如果您将所述标志从0x9
更改为0x8
,但仍然使用time.windows.com作为NTP服务器,情况甚至会变得更糟。
在本地网络中设置自己的NTP服务器是一个非常好的主意,原因有几个(我不会在这里详细介绍,因为它会偏离主题)。如果您不能或不想这样做,我建议您使用其他公共时间服务器(通过访问http://www.ntp.pool.org开始搜索)而不是time.windows.com。他们肯定会解决问题2)。
2)作为最后的手段,您可以尝试在Windows中安装另一个时间服务。例如,有一个用于Windows的NTP软件的完整端口,但AFAIK仅适用于英特尔平台。由于我对Raspberry(ARM)平台一无所知,我根本不知道是否还有其他时间服务软件,所以这只是一个想法,以防其他方法失败。
答案 3 :(得分:0)
尝试使用像this这样的实时时钟(RTC),因为在拔下它时有些设备会重置时间和日期。如果你的时钟关闭了很多时间。最多可能需要3个小时才能自行更正,因为服务器的更改会逐渐应用到您的本地时钟。网络稳定性对准确性的影响最大,因为不可预测的网络(更多无线网络,如3G)将使其难以准确。您还可以找到support。如果您有fake-hwclock
包,它还会执行时间戳保存技巧以防止时钟被重置。当设备关闭时,这不会提前时间,因此它将落后。内部时钟在开启时也会漂移一点点。
答案 4 :(得分:0)
我可以根据经验提供一些见解。我们的机器设备拥有大量可用于更新时间的资源。有点需要部署。虽然我们的设备上有一个内部时钟,但是当安装的车辆未运行时,电池不足以在长时间内保持准确。 (已经进行了硬件升级以改进这一点。)
我们提供网络服务和时间服务,每个服务允许内部时钟每24小时或开启时更新。在某些情况下,时间包含在设备执行的某些数据传输中,并检查准确性,并告知更新方差是否过大。在某些配置中,用户可以检查时间并根据需要激活和更新。有点老了,但这些已经存在了几年了。
如果设备解决方案需要,应该指定高质量的RTC和电池,如果真的需要,不要在这个硬件上吝啬。
这也很不错troubleshooting guide,我认为这是不同的硬件,但原则是相似的。
以下是一些RTCs
的好列表此处还有指向Adafruit
的链接