Switch OC Suite
Overclocking suite for Horizon OS (HOS) running on Atmosphere CFW.
This project will not be actively maintained or regularly updated along with Atmosphere CFW.
DISCLAIMER: USE AT YOUR OWN RISK!
-
Overclocking in general (often combined with overvolting and overheating) will degrade internal components - SoC, VRM(Voltage Regulator Module), Battery, etc. - faster than you and the manufacturer have expected.
-
Higher RAM clocks without proper timings could be UNSTABLE and cause graphical glitches / instabilities / filesystem corruption. Always make backup before usage.
Features
-
DRAM Overclock
-
Most games are bottlenecked by RAM bandwidth
-
Safe:
- Mariko: 1996.8 MHz has been tested stable for all (Samsung / Micron / Hynix), with built-in timing auto-adjustment.
- Erista: 1862.4 MHz.
-
Unsafe: higher than 1996.8 MHz or overvolting
-
Timing:
- Timing parameters could be auto-adjusted (default) or overwritten with user-provided mtc table.
- Customization: No GUI tool, requires rebuilding.
-
DRAM bus overvolting (Erista Only).
- Mariko: use this to set DRAM bus voltage.
-
-
Mariko Only
-
CPU/GPU Overclock
-
Safe: CPU/GPU @ 1963/921 MHz
-
Unsafe: NOT RECOMMENDED
- Disabled by default, toggle "Allow Unsafe Frequencies" on in overlay or add
allow_unsafe_freq=1toconfig.ini - Power draw will be significant higher than what the mainboard was designed to tolerate at anything higher than 1963/921 MHz.
- See README for sys-clk-OC
- Disabled by default, toggle "Allow Unsafe Frequencies" on in overlay or add
-
-
Modded sys-clk and ReverseNX(-RT)
-
Global profile
- Designated a dummy title id
0xA111111111111111. - Priority: "Temp overrides" > "Application profile" > "Global profile" > "System default".
- Designated a dummy title id
-
Miscellaneous
-
Auto CPU Boost: For faster game loading
- Enable CPU Boost (1785 MHz, could be configured higher) when CPU Core#3 (System Core) is stressed, especially when the game is loading assets from eMMC/SD card (I/O ops).
- Auto-Boost will be enabled only when charger is connected.
-
Sync ReverseNX Mode: No need to change clocks manually after toggling modes in ReverseNX
-
View charger & battery info, toggle fast-charging(2A) or set charge limit (20% - 100%) in overlay
- Note: Long-term use of charge limit may render the battery gauge inaccurate. Performing full cycles could help recalibration, or try battery_desync_fix_nx.
-
-
Installation
-
Download latest release.
-
Mariko Only: Copy all files in
SdOutto the root of SD card.
- Erista: Use official sys-clk instead. Only
loader.kipand some benchmark homebrew are available.
-
Grab
x.x.x_loader.kipfor your Atmosphere version, rename it toloader.kipand place it in/atmosphere/kips/. -
Customization
Defaults Mariko Erista CPU OC 2397 MHz Max Disabled CPU Boost 1785 MHz N/A CPU Volt 1220 mV Max Disabled GPU OC 1305 MHz Max N/A RAM OC 1996 MHz Max 1862 MHz Max RAM Volt N/A Disabled RAM Timing Auto-Adjusted Disabled
- Loader configurator
- Grab ldr_config.py and modify values in
cust_confdict. python ldr_config.py loader.kip -swill save your configuration in-place.
- Grab ldr_config.py and modify values in
-
Hekate-ipl bootloader
- Rename the kip to
loader.kipand addkip1=atmosphere/kips/loader.kipinbootloader/hekate_ipl.ini - Erista: Minerva module conflicts with HOS DRAM training. Recompile with frequency changed is recommeded, although you could simply remove
bootloader/sys/libsys_minerva.bso.
Atmosphere Fusee bootloader:
- Fusee will load any kips in
/atmosphere/kips/automatically.
- Rename the kip to
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:
- Lockpick_RCM
- TegraExplorer
- hactool
- nx2elf
- elf2nso from switch-tools
- hacpack
- Dump
prod.keyswith Lockpick_RCM - Dump HOS firmware with TegraExplorer
- Configure and run
test_patch.shto generate patched pcv & ptm sysmodules in nca - Replace nca in
SYSTEM:/Contents/registered/with TegraExplorer ValidateAcidSignature()should be stubbed to allow unsigned sysmodules to load (a.k.a.loader_patch)
Build
Loader KIP
Grab necessary patches from the repo, then compile sys-clk, ReverseNX-RT and Atmosphere loader with devkitpro.
If you are to install nro forwarders, stub ValidateAcidSignature() with R_SUCCEED(); in Atmosphere/stratosphere/loader/source/ldr_meta.cpp to make them work again.
Uncompress the kip to make it work with config editor: hactool -t kip1 Atmosphere/stratosphere/loader/out/nintendo_nx_arm64_armv8a/release/loader.kip --uncompress=./loader.kip
Acknowledgement
- CTCaer for Hekate-ipl bootloader, RE and hardware research
- devkitPro for All-In-One homebrew toolchains
- masagrator for ReverseNX-RT and info on BatteryChargeInfoFields in psm module
- Nvidia for Tegra X1 Technical Reference Manual
- RetroNX team for sys-clk
- SciresM and Reswitched Team for the state-of-the-art Atmosphere CFW of Switch
- Switchbrew wiki for Switch in-depth info
- ZatchyCatGames for RE and original OC loader patches for Atmosphere