0%

解决Switch-Tinfoil下载提示-SSL时间不对问题

简介

  • switch 硬破后,一般都把任天堂相关的域名IP屏蔽了,所以就不能自动联网校准时间

  • 时间久了,switch的时间就会与标准时间偏差很大,使用Tinfoil下载就有可能会出现下面的错误,这种情况手动设置时间一般与无济于事

    1
    2
    3
    SSL 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

    1

    image-20220911134147384

  • 所以需要手动clone https://github.com/WerWolv/libtesla.git并替换libs目录下的libtesla

    1
    2
    3
    cd libs
    rm -r libtesla
    git clone https://github.com/WerWolv/libtesla.git
  • clone好后,直接make,会报下面的错,原因是缺少devkitPro

    1
    Makefile:6: *** "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>/devkitpro".  Stop.

    image-20220911134402537

  • 安装devkitPro有多种方式,这里选择最省事的,用docker拉取官方镜像,官方docker镜像链接https://hub.docker.com/u/devkitpro/

    image-20220911134654028

    image-20220911134753022

  • 可以点击查看每个镜像的用途,可以看到,devkitpro/devkita64是用于Nintendo Switch的开发环境,所以这里直接选这个即可

    image-20220911134947979

  • 拉取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

    image-20220911135447465

    1
    docker exec -it devkita64 /bin/bash
  • 进入/data/QuickNTP目录

    image-20220911135526102

  • 运行make,即可编译得到QuickNTP.ovl

    image-20220911135646255

  • 如果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

    image-20220911135732599

  • 可以正常编译了,那么接下来就是修改默认的NTP服务器,替换为国内的NTP服务器

  • QuickNTP的服务器列表在servers.hpp中,如下图,两个字符串数组,分别为Title和域名的列表

    image-20220911140412095

  • 按照格式,替换为国内常见的NTP服务器,如下图所示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <initializer_list>
    #include <string>

    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",
    }};

    image-20220911140629632

  • 保存,然后重新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即可开始设置时间

    image-20220911142923485

  • 如下图所示,选择一个服务器,并点击Sync time即可同步时间,并且可以看到服务器列表成功替换为自定义的列表,出现Syced with xxx后就可以重启switch,这样tinfoil就不会报SSL 时间错误

    image-20220911142849430

  • 当然也可以通过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