Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Sys-clk Switch: Difference between revisions

From GameBrew
(Created page with "{{Infobox Switch Homebrews |title=sys-clk |image=sysclkswitch.png |description=sys-clk is an overclocking/underclocking system module. |author=retronx-team |lastupdated=2022/03/24 |type=System Tools |version=1.0.2 |license=Mixed |download=https://dlhb.gamebrew.org/switchhomebrews/sysclkswitch.7z |website=https://gbatemp.net/threads/sys-clk-under-overclocking-sysmodule.531372/ |source=https://github.com/retronx-team/sys-clk |donation= }} {{#seo: |title=Switch Homebrew Ap...")
 
No edit summary
Line 3: Line 3:
|image=sysclkswitch.png
|image=sysclkswitch.png
|description=sys-clk is an overclocking/underclocking system module.
|description=sys-clk is an overclocking/underclocking system module.
|author=retronx-team
|author=retronx-team
|lastupdated=2022/03/24
|lastupdated=2023/04/21
|type=System Tools
|type=Plugins
|version=1.0.2
|version=1.0.3
|license=Mixed
|license=Mixed
|download=https://dlhb.gamebrew.org/switchhomebrews/sysclkswitch.7z
|download=https://dlhb.gamebrew.org/switchhomebrews/sysclkswitch.7z
Line 15: Line 14:
}}
}}
{{#seo:
{{#seo:
|title=Switch Homebrew Apps (System Tools) - GameBrew
|title=Switch Homebrew Apps (Plugins) - GameBrew
|title_mode=append
|title_mode=append
|image=sysclkswitch.png
|image=sysclkswitch.png
|image_alt=sys-clk
|image_alt=sys-clk
}}
}}
{{cleanup|article|Needs cleanup}}
Sys-clk is a valuable sysmodule for Nintendo Switch that enables the optimization of CPU, GPU, and memory clocks based on the running application and docking status. This capability enhances the gaming experience by ensuring the system runs at the optimal speed for each game and state, resulting in improved performance and smoother gameplay.
sys-clk is an overclocking/underclocking system module.
 
==Features==
* Enable/disable sys-clk
* Display the frequencies, thermals, and profile retrieved from the sysmodule
* List and edit application profiles for either:
** Your installed apps on the manager
** The currently running app directly in the overlay
* Edit advanced settings such as timings and temporary frequencies overrides
 
==Installation==
To install the application, it is required that you have a Nintendo Switch that runs on the [[Atmosphere Switch]] and is updated to the latest stable version. After meeting these requirements, simply copy the <code>atmosphere</code> and <code>switch</code> folders onto the root of your sdcard, ensuring that you overwrite files if prompted. Additionally, if you're not updating, copy the <code>config</code> folder to include default settings. These steps should enable you to successfully install the application.


'''Note:''' sys-clk-overlay requires to have [https://gbatemp.net/threads/tesla-the-nintendo-switch-overlay-menu.557362/ Tesla] installed and running.


==Media==
==Media==
<youtube></youtube>
'''How to overclock the Nintendo Switch and view FPS - Sysclk & NX FPS Homebrew mods Atmosphere CFW  - ([https://www.youtube.com/watch?v=0svgC4wuB18 Nevercholt])'''<br>
<youtube>0svgC4wuB18</youtube>
 
==Screenshots==
https://dlhb.gamebrew.org/switchhomebrews/sysclkswitch-01.pnga
https://dlhb.gamebrew.org/switchhomebrews/sysclkswitch-02.pnga
 
== Relevant files ==
<ul>
<li><p>Config file allows one to set custom clocks per docked state and title id, described below</p>
<p><code>/config/sys-clk/config.ini</code></p></li>
<li><p>Log file where the logs are written if enabled</p>
<p><code>/config/sys-clk/log.txt</code></p></li>
<li><p>Log flag file enables log writing if file exists</p>
<p><code>/config/sys-clk/log.flag</code></p></li>
<li><p>CSV file where the title id, profile, clocks and temperatures are written if enabled</p>
<p><code>/config/sys-clk/context.csv</code></p></li>
<li><p>sys-clk manager app (accessible from the hbmenu)</p>
<p><code>/switch/sys-clk-manager.nro</code></p></li>
<li><p>sys-clk overlay (accessible from anywhere by invoking the [https://gbatemp.net/threads/tesla-the-nintendo-switch-overlay-menu.557362/ Tesla menu])</p>
<p><code>/switch/.overlays/sys-clk-overlay.ovl</code></p></li>
<li><p>sys-clk core sysmodule</p>
<p><code>/atmosphere/contents/00FF0000636C6BFF/exefs.nsp</code> <code>/atmosphere/contents/00FF0000636C6BFF/flags/boot2.flag</code></p></li></ul>
 
== Config ==
Presets can be customized by adding them to the ini config file located at <code>/config/sys-clk/config.ini</code>, using the following template for each app
 
<pre>[Application Title ID]
docked_cpu=
docked_gpu=
docked_mem=
handheld_charging_cpu=
handheld_charging_gpu=
handheld_charging_mem=
handheld_charging_usb_cpu=
handheld_charging_usb_gpu=
handheld_charging_usb_mem=
handheld_charging_official_cpu=
handheld_charging_official_gpu=
handheld_charging_official_mem=
handheld_cpu=
handheld_gpu=
handheld_mem=</pre>
 
* Replace <code>Application Title ID</code> with the title id of the game/application you're interested in customizing. A list of games title id can be found in the [https://switchbrew.org/wiki/Title_list/Games Switchbrew wiki].
* Frequencies are expressed in mhz, and will be scaled to the nearest possible values, described in the clock table below.
* If any key is omitted, value is empty or set to 0, it will be ignored, and stock clocks will apply.
* If charging, sys-clk will look for the frequencies in that order, picking the first found
*# Charger specific config (USB or Official) <code>handheld_charging_usb_X</code> or <code>handheld_charging_official_X</code>
*# Non specific charging config <code>handheld_charging_X</code>
*# Handheld config <code>handheld_X</code>
 
=== Example 1: Zelda BOTW ===
* Overclock CPU when docked or charging
* Overclock MEM to docked clocks when handheld
 
Leads to a smoother framerate overall (ex: in the korok forest)
 
<pre>[01007EF00011E000]
docked_cpu=1224
handheld_charging_cpu=1224
handheld_mem=1600</pre>
 
=== Example 2: Picross ===
* Underclocks on handheld to save battery
 
<pre>[0100BA0003EEA000]
handheld_cpu=816
handheld_gpu=153
handheld_mem=800</pre>
 
=== Advanced ===
The <code>[values]</code> section allows you to alter timings in sys-clk, you should not need to edit any of these unless you know what you are doing. Possible values are:


{| class="wikitable"
!align="center"| Key
! Desc
!align="center"| Default
|-
|align="center"| '''temp_log_interval_ms'''
| Defines how often sys-clk log temperatures, in milliseconds (<code>0</code> to disable)
|align="center"| 0 ms
|-
|align="center"| '''csv_write_interval_ms'''
| Defines how often sys-clk writes to the CSV, in milliseconds (<code>0</code> to disable)
|align="center"| 0 ms
|-
|align="center"| '''poll_interval_ms'''
| Defines how fast sys-clk checks and applies profiles, in milliseconds
|align="center"| 300 ms
|}


==Screenshots==
== Capping ==
https://dlhb.gamebrew.org/switchhomebrews/sysclkswitch-01.png
To protect the battery from excessive strain, clocks requested from config may be capped before applying, depending on your current profile:
https://dlhb.gamebrew.org/switchhomebrews/sysclkswitch-02.png
 
https://dlhb.gamebrew.org/switchhomebrews/sysclkswitch-03.png
{| class="wikitable"
https://dlhb.gamebrew.org/switchhomebrews/sysclkswitch-04.png
!align="center"|
https://dlhb.gamebrew.org/switchhomebrews/sysclkswitch-05.png
!align="center"| Handheld
https://dlhb.gamebrew.org/switchhomebrews/sysclkswitch-06.png
!align="center"| Charging (USB)
https://dlhb.gamebrew.org/switchhomebrews/sysclkswitch-07.png
!align="center"| Charging (Official)
https://dlhb.gamebrew.org/switchhomebrews/sysclkswitch-08.png
!align="center"| Docked
|-
|align="center"| '''MEM'''
|align="center"| -
|align="center"| -
|align="center"| -
|align="center"| -
|-
|align="center"| '''CPU'''
|align="center"| -
|align="center"| -
|align="center"| -
|align="center"| -
|-
|align="center"| '''GPU'''
|align="center"| 460
|align="center"| 768
|align="center"| -
|align="center"| -
|}
 
== Clock table (MHz) ==
=== MEM clocks ===
* 1600 → official docked, boost mode, max clock
* 1331 → official handheld
* 1065
* 800
* 665
 
=== CPU clocks ===
* 1785 → max clock, boost mode
* 1683
* 1581
* 1428
* 1326
* 1224 → sdev oc
* 1122
* 1020 → official docked &amp; handheld
* 918
* 816
* 714
* 612
 
=== GPU clocks ===
* 921 → max clock
* 844
* 768 → official docked
* 691
* 614
* 537
* 460 → max handheld
* 384 → official handheld
* 307 → official handheld
* 230
* 153
* 76 → boost mode
 
'''Notes:'''
 
# GPU overclock is capped at 460Mhz in handheld and capped at 768Mhz if charging, unless you're using the official charger.
# Clocks higher than 768MHz need the official charger is plugged in.


==Changelog==
==Changelog==
'''v.1.0'''
'''v1.0.3'''
*This minor update fixes the overlay not working on HOS >= 16.0.0 by upgrading libtesla and libnx to the latest version.
*Thanks to @alula for the PR
'''v1.0.2'''
* Fix freqs on ResetToStock(); for Boost Mode GPU
* libnx compat fixes
* libtesla updated from upstream
* Use ts:GetTemperature on HOS 14.0.0+ instead of ts:GetTemperatureMilliC
* Release files dont enable logs by default anymore
'''v1.0.1'''
* Fix skin temp not shown in the manager
* Fix Korean characters shown incorrectly in the manager
* libtesla upstream sync (libnx 4.0.x compat)
'''v1.0.0'''
* Homebrew app: sys-clk manager, testing grounds of borealis, a new hardware accelerated, Nintendo Switch inspired UI library for PC and Nintendo Switch
* Tesla overlay: sys-clk-overlay, powered by libtesla
'''v0.13.1'''
* Don't keep the time session open (only used at init)
* Misc changes from the develop branch (libnx compat, etc) that does not affect features
'''v0.13.0'''
* Temperature monitoring (SoC; PCB and Skin at customizable interval)
* Logging refactor:
** Logs can now be enabled or disabled at runtime
** Prettier logs (clock hz format, shorter text)
** Milliseconds in timestamp
* CSV export (timestamp, titleId, profile, clocks, temps at customizable interval)
* FW 9.0.0 fixes
* HB and crashed apps fixes
'''v0.12.3'''
*This is a minor update that changed polling timings to accommodate actively scaling titles (ex: BOTW, DOOM...)
'''v0.12.2'''
*This release adds support for 8.0.0
'''v0.12.1'''
* This hotfix was made to correct the capping logic that was incorrectly applied to the CPU, consequently underclocking on defined profiles.
'''v0.12.0'''
* Config loading has been refactored to permit more profile storage, and serve as the groundwork for what's to come
* The kip target (which had become irrelevant) and the code required to support it has been removed, consequently enabling pm late loading with no side-effect
'''v0.11.1'''
*fixes some games running slower than they should be ([https://github.com/retronx-team/sys-clk/issues/6 #6])
'''v0.11'''
* Adds timestamp and version to logs
* Games and profile changes now always trigger a reset to stock values, even for games that would not change clocks on their own
'''v0.10'''
* Added charging profiles
* General fixes
'''v0.9'''
* First Release.
* First Release.



Revision as of 11:27, 21 April 2023

sys-clk
File:Sysclkswitch.png
General
Authorretronx-team
TypePlugins
Version1.0.3
LicenseMixed
Last Updated2023/04/21
Links
Download
Website
Source

Sys-clk is a valuable sysmodule for Nintendo Switch that enables the optimization of CPU, GPU, and memory clocks based on the running application and docking status. This capability enhances the gaming experience by ensuring the system runs at the optimal speed for each game and state, resulting in improved performance and smoother gameplay.

Features

  • Enable/disable sys-clk
  • Display the frequencies, thermals, and profile retrieved from the sysmodule
  • List and edit application profiles for either:
    • Your installed apps on the manager
    • The currently running app directly in the overlay
  • Edit advanced settings such as timings and temporary frequencies overrides

Installation

To install the application, it is required that you have a Nintendo Switch that runs on the Atmosphere Switch and is updated to the latest stable version. After meeting these requirements, simply copy the atmosphere and switch folders onto the root of your sdcard, ensuring that you overwrite files if prompted. Additionally, if you're not updating, copy the config folder to include default settings. These steps should enable you to successfully install the application.

Note: sys-clk-overlay requires to have Tesla installed and running.

Media

How to overclock the Nintendo Switch and view FPS - Sysclk & NX FPS Homebrew mods Atmosphere CFW - (Nevercholt)

Screenshots

https://dlhb.gamebrew.org/switchhomebrews/sysclkswitch-01.pnga https://dlhb.gamebrew.org/switchhomebrews/sysclkswitch-02.pnga

Relevant files

  • Config file allows one to set custom clocks per docked state and title id, described below

    /config/sys-clk/config.ini

  • Log file where the logs are written if enabled

    /config/sys-clk/log.txt

  • Log flag file enables log writing if file exists

    /config/sys-clk/log.flag

  • CSV file where the title id, profile, clocks and temperatures are written if enabled

    /config/sys-clk/context.csv

  • sys-clk manager app (accessible from the hbmenu)

    /switch/sys-clk-manager.nro

  • sys-clk overlay (accessible from anywhere by invoking the Tesla menu)

    /switch/.overlays/sys-clk-overlay.ovl

  • sys-clk core sysmodule

    /atmosphere/contents/00FF0000636C6BFF/exefs.nsp /atmosphere/contents/00FF0000636C6BFF/flags/boot2.flag

Config

Presets can be customized by adding them to the ini config file located at /config/sys-clk/config.ini, using the following template for each app

[Application Title ID]
docked_cpu=
docked_gpu=
docked_mem=
handheld_charging_cpu=
handheld_charging_gpu=
handheld_charging_mem=
handheld_charging_usb_cpu=
handheld_charging_usb_gpu=
handheld_charging_usb_mem=
handheld_charging_official_cpu=
handheld_charging_official_gpu=
handheld_charging_official_mem=
handheld_cpu=
handheld_gpu=
handheld_mem=
  • Replace Application Title ID with the title id of the game/application you're interested in customizing. A list of games title id can be found in the Switchbrew wiki.
  • Frequencies are expressed in mhz, and will be scaled to the nearest possible values, described in the clock table below.
  • If any key is omitted, value is empty or set to 0, it will be ignored, and stock clocks will apply.
  • If charging, sys-clk will look for the frequencies in that order, picking the first found
    1. Charger specific config (USB or Official) handheld_charging_usb_X or handheld_charging_official_X
    2. Non specific charging config handheld_charging_X
    3. Handheld config handheld_X

Example 1: Zelda BOTW

  • Overclock CPU when docked or charging
  • Overclock MEM to docked clocks when handheld

Leads to a smoother framerate overall (ex: in the korok forest)

[01007EF00011E000]
docked_cpu=1224
handheld_charging_cpu=1224
handheld_mem=1600

Example 2: Picross

  • Underclocks on handheld to save battery
[0100BA0003EEA000]
handheld_cpu=816
handheld_gpu=153
handheld_mem=800

Advanced

The [values] section allows you to alter timings in sys-clk, you should not need to edit any of these unless you know what you are doing. Possible values are:

Key Desc Default
temp_log_interval_ms Defines how often sys-clk log temperatures, in milliseconds (0 to disable) 0 ms
csv_write_interval_ms Defines how often sys-clk writes to the CSV, in milliseconds (0 to disable) 0 ms
poll_interval_ms Defines how fast sys-clk checks and applies profiles, in milliseconds 300 ms

Capping

To protect the battery from excessive strain, clocks requested from config may be capped before applying, depending on your current profile:

Handheld Charging (USB) Charging (Official) Docked
MEM - - - -
CPU - - - -
GPU 460 768 - -

Clock table (MHz)

MEM clocks

  • 1600 → official docked, boost mode, max clock
  • 1331 → official handheld
  • 1065
  • 800
  • 665

CPU clocks

  • 1785 → max clock, boost mode
  • 1683
  • 1581
  • 1428
  • 1326
  • 1224 → sdev oc
  • 1122
  • 1020 → official docked & handheld
  • 918
  • 816
  • 714
  • 612

GPU clocks

  • 921 → max clock
  • 844
  • 768 → official docked
  • 691
  • 614
  • 537
  • 460 → max handheld
  • 384 → official handheld
  • 307 → official handheld
  • 230
  • 153
  • 76 → boost mode

Notes:

  1. GPU overclock is capped at 460Mhz in handheld and capped at 768Mhz if charging, unless you're using the official charger.
  2. Clocks higher than 768MHz need the official charger is plugged in.

Changelog

v1.0.3

  • This minor update fixes the overlay not working on HOS >= 16.0.0 by upgrading libtesla and libnx to the latest version.
  • Thanks to @alula for the PR

v1.0.2

  • Fix freqs on ResetToStock(); for Boost Mode GPU
  • libnx compat fixes
  • libtesla updated from upstream
  • Use ts:GetTemperature on HOS 14.0.0+ instead of ts:GetTemperatureMilliC
  • Release files dont enable logs by default anymore

v1.0.1

  • Fix skin temp not shown in the manager
  • Fix Korean characters shown incorrectly in the manager
  • libtesla upstream sync (libnx 4.0.x compat)

v1.0.0

  • Homebrew app: sys-clk manager, testing grounds of borealis, a new hardware accelerated, Nintendo Switch inspired UI library for PC and Nintendo Switch
  • Tesla overlay: sys-clk-overlay, powered by libtesla

v0.13.1

  • Don't keep the time session open (only used at init)
  • Misc changes from the develop branch (libnx compat, etc) that does not affect features

v0.13.0

  • Temperature monitoring (SoC; PCB and Skin at customizable interval)
  • Logging refactor:
    • Logs can now be enabled or disabled at runtime
    • Prettier logs (clock hz format, shorter text)
    • Milliseconds in timestamp
  • CSV export (timestamp, titleId, profile, clocks, temps at customizable interval)
  • FW 9.0.0 fixes
  • HB and crashed apps fixes

v0.12.3

  • This is a minor update that changed polling timings to accommodate actively scaling titles (ex: BOTW, DOOM...)

v0.12.2

  • This release adds support for 8.0.0

v0.12.1

  • This hotfix was made to correct the capping logic that was incorrectly applied to the CPU, consequently underclocking on defined profiles.

v0.12.0

  • Config loading has been refactored to permit more profile storage, and serve as the groundwork for what's to come
  • The kip target (which had become irrelevant) and the code required to support it has been removed, consequently enabling pm late loading with no side-effect

v0.11.1

  • fixes some games running slower than they should be (#6)

v0.11

  • Adds timestamp and version to logs
  • Games and profile changes now always trigger a reset to stock values, even for games that would not change clocks on their own

v0.10

  • Added charging profiles
  • General fixes

v0.9

  • First Release.

External links

Advertising: