Switch OC Suite

Overclocking suite for Horizon OS (HOS) running on Atmosphere CFW. Licensed under GPL v2.

Read Me

🚨DISCLAIMER: THIS IS PROVIDED AS IS. USE AT YOUR OWN RISK!🚨

  • Overclocking in general will shorten the lifespan of some hardware components. YOU ARE RESPONSIBLE for any problem or potential damage if unsafe frequencies are ENABLED in sys-clk-OC. Issues like asking for bypassing limit will BE IGNORED OR CLOSED WITHOUT REPLY.
  • Due to HorizonOS design, instabilities from unsafe RAM clocks may cause filesystem corruption. Always make backup before enabling DRAM OC.
  • Features

    For Erista variant (HAC-001)
    • CPU Overclock (Safe: 1785 MHz)
      • Unsafe
        • Due to the limit of board power draw or power IC
        • Unlockable frequencies up to 2091 MHz
        • See README for sys-clk-OC
    • DRAM Overclock (Safe: 1862.4 MHz)
    For Mariko variant (HAC-001-01, HDH-001, HEG-001)
    • CPU / GPU Overclock (Safe: 1963 / 998 MHz)
      • Unsafe
        • Due to the limit of board power draw or power IC
        • Unlockable frequencies up to 2397 / 1305 MHz or 2295 / 1267 MHz
        • See README for sys-clk-OC
    • DRAM Overclock (Safe: 1996.8 MHz)
    Modded sys-clk and ReverseNX-RT
    • Auto CPU Boost
      • For faster game loading
      • Enable CPU Boost (1785 MHz) when CPU Core#3 (System Core) is stressed (mainly I/O operations).
      • Effective only when charger is connected.
    • CPU & GPU frequency governor (Experimental)
      • Adjust frequency based on load. Might decrease power draw but can introduce stutters. Can be turned off for specific titles.
    • Set charging current (100 mA - 2000 mA) and charging limit (20% - 100%)
      • Long-term use of charge limit may render the battery gauge inaccurate. Performing full cycles could help recalibration, or try battery_desync_fix_nx.
    • Global Profile
      • Designated a dummy title id 0xA111111111111111.
      • Priority: "Temp overrides" > "Application profile" > "Global profile" > "System default".
    • Sync ReverseNX Mode
      • No need to change clocks manually after toggling modes in ReverseNX (-RT and -Tool)
    System Settings (Optional) See system_settings.md

    Installation

    1. Download latest release.
    2. Copy all files in SdOut to the root of SD card.
    3. Grab x.x.x_loader.kip for your Atmosphere version, rename it to loader.kip and place it in /atmosphere/kips/.
    4. Customization via online loader configurator
      Default config
      Defaults Mariko Erista
      CPU OC 2397 MHz Max 2091 MHz Max
      CPU Boost 1785 MHz N/A
      CPU Volt 1235 mV Max 1235 mV Max
      GPU OC 1305 MHz Max N/A
      RAM OC 1996 MHz Max 1862 MHz Max
      RAM Volt Disabled Disabled
      RAM Timing Auto-Adjusted Disabled
    5. Hekate-ipl bootloader Only
      • Add kip1=atmosphere/kips/loader.kip to boot entry section in bootloader/hekate_ipl.ini.
    Deprecated: patching sysmodules manually
    • This method is only served as reference as it could damage your MMC file system if not handled properly.
    • Patched sysmodules would be persistent until pcv or ptm was updated in new HOS (normally in x.0.0).
    • Tools:
    1. Dump prod.keys with Lockpick_RCM
    2. Dump HOS firmware with TegraExplorer
    3. Configure and run test_patch.sh to generate patched pcv & ptm sysmodules in nca
    4. Replace nca in SYSTEM:/Contents/registered/ with TegraExplorer
    5. ValidateAcidSignature() should be stubbed to allow unsigned sysmodules to load (a.k.a. loader_patch)
    How to build this project
    1. Grab necessary patches from the repo, then compile sys-clk, ReverseNX-RT and Atmosphere loader with devkitpro.
    2. Before compiling Atmosphere loader, run patch.py in Atmosphere/stratosphere/loader/source/ to insert oc module into loader sysmodule.
    3. When compilation is done, uncompress the kip to make it work with configurator: hactool -t kip1 Atmosphere/stratosphere/loader/out/nintendo_nx_arm64_armv8a/release/loader.kip --uncompress=./loader.kip

    Frequently Asked Questions

    How to enable unsafe frequencies in sys-clk-OC?
  • Above all else, you should know what "unsafe" means and issues might arise.
  • See the end of README in sys-clk-OC. Add this line allow_unsafe_freq=1 into /config/sys-clk/config.ini
  • I would like to bypass limit enforced in sys-clk to improve handheld performance without charger connected.
  • Never will it be implemented here, or work out of the box.
  • You have to modify the code yourself for your own use. If you are to share modified binaries you have made based on this project publicly, make sure to comply with GPL v2 licenses.
  • Configurator

    Configure frequencies and voltages to suit your hardware and preferences.