简介
switch 硬破后,一般都把任天堂相关的域名IP屏蔽了,所以就不能自动联网校准时间
时间久了,switch的时间就会与标准时间偏差很大,使用Tinfoil下载就有可能会出现下面的错误,这种情况手动设置时间一般与无济于事
1
2
3SSL Connection failed.
Your system clock is likely incorrect.
Please ensure your system date time is set correctly.这时候就可以使用一个插件来同步时间:https://github.com/nedex/QuickNTP.git
但QuickNTP默认的几个服务器,有时候也会出现连不上情况
接下来介绍,如何将QuickNTP默认的NTP服务器替换为国内NTP服务器并重新编译.ovl文件
开始
首先直接git clone下来
1
git clone https://github.com/nedex/QuickNTP.git
需要注意的是,QuickNTP的libs目录下引用了另一个github仓库,默认是不会被一起clone
所以需要手动clone https://github.com/WerWolv/libtesla.git并替换libs目录下的libtesla
1
2
3cd libs
rm -r libtesla
git clone https://github.com/WerWolv/libtesla.gitclone好后,直接make,会报下面的错,原因是缺少devkitPro
1
Makefile:6: *** "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>/devkitpro". Stop.
安装devkitPro有多种方式,这里选择最省事的,用docker拉取官方镜像,官方docker镜像链接https://hub.docker.com/u/devkitpro/
可以点击查看每个镜像的用途,可以看到,devkitpro/devkita64是用于Nintendo Switch的开发环境,所以这里直接选这个即可
拉取docker镜像
1
docker pull devkitpro/devkita64
运行镜像,使用-v参数,将主机的QuickNTP所在目录映射到docker容器的/data目录
1
2将/Users/cc/github替换为QuickNTP所在目录,可将/data替换为你想要的目录
docker run -itd --name devkita64 -v /Users/cc/github:/data devkitpro/devkita64进入容器shell
1
docker exec -it devkita64 /bin/bash
进入/data/QuickNTP目录
运行make,即可编译得到QuickNTP.ovl
如果make报没有"tesla.hpp"文件错误,那么就需要检查QuickNTP/libs/libtesla/目录下是否为空,若为空,说明是前面说的clone没有把github的子仓库一起clone下来的问题,只需要clone下libtesla即可
1
2
3
4
5
6/data/QuickNTP/source/main.cpp:2:10: fatal error: tesla.hpp: No such file or directory
2 | #include <tesla.hpp>
| ^~~~~~~~~~~
compilation terminated.
make[1]: *** [/opt/devkitpro/devkitA64/base_rules:14: main.o] Error 1
make: *** [Makefile:170: build] Error 2可以正常编译了,那么接下来就是修改默认的NTP服务器,替换为国内的NTP服务器
QuickNTP的服务器列表在servers.hpp中,如下图,两个字符串数组,分别为Title和域名的列表
按照格式,替换为国内常见的NTP服务器,如下图所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
std::initializer_list<std::string> NTPSERVERS[2] = {
{
"China NTP 1",
"China NTP 2",
"China NTSC",
"China Edu",
"Aliyun",
"Tencent",
},
{
"cn.pool.ntp.org",
"cn.ntp.org.cn",
"ntp.ntsc.ac.cn",
"edu.ntp.org.cn",
"ntp1.aliyun.com",
"time1.cloud.tencent.com",
}};保存,然后重新make下,即可生成修改后的QuickNTP.ovl文件
使用QuickNTP.ovl插件,需要https://github.com/WerWolv/Tesla-Menu,下载最新Tesla-Menu的releases并复制到switch SD卡的/switch/.overlays目录下即可
再将编译好的QuickNTP.ovl也复制到switch SD卡的/switch/.overlays目录下
同时按住switch 的" L" 和 "▼" 然后往下戳右摇杆,即可调出Tesla-Menu,然后选择QuickNTP即可开始设置时间
如下图所示,选择一个服务器,并点击Sync time即可同步时间,并且可以看到服务器列表成功替换为自定义的列表,出现Syced with xxx后就可以重启switch,这样tinfoil就不会报SSL 时间错误
当然也可以通过QuickNTP的User-set time把自己switch系统设置中手动设置的时间当作标准时间
本文编译的QuickNTP.ovl文件下载链接:QuickNTP.ovl
QuickNTP原版下载链接:https://github.com/nedex/QuickNTP/releases/latest
如果只是替换QuickNTP默认服务器列表,其实不用编译也可以,直接使用16进制编辑器打开QuickNTP.ovl,搜索并将域名字符串替换掉即可,这里主要是想了解下如何编译switch的一些插件
- 新版QuickNTP修改服务器列表方法与上面差不多,修改servers.hpp即可,更新一个最新编译的文件:QuickNTP_1.2.8.ovl