Tutorial  Updated

Adjust the Nintendo Switch Fan Speed

Works on atmosphere but didn't tested on ReiNX and SX OS.

I'm giving the needed file, copy this to atmosphere>config folder in sd card. DON'T FORGET TO CHANGE THE EXTENSION OF FILE TO .ini OR IT WILL NOT WORK I already modified and bumped the speed level by one tier in every section (except first temps., no need to wear fan on room temp.) for less temperature. Modify if you need.

Default settings are these:
Code:
[tc]
tskin_rate_table_console = str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 53000, 51, 153], [53000, 58000, 153, 255], [58000, 1000000, 255, 255]]"
tskin_rate_table_handheld = str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 48000, 51, 102], [48000, 53000, 102, 153], [53000, 1000000, 153, 153], [48000, 1000000, 153, 153]]"

str!"[[-1000000, 40000, 255, 255]
-1000000, 40000 these are temperature 40000 = 40C
255 is the speed, 0-255

Edit: lesser fan speed maybe would NOT work, for built in security. Even if they work, BE CAREFUL YOU CAN OVERHEAT AND DAMAGE YOUR CONSOLE!
 

Attachments

Last edited by TR_mahmutpek,
Hello, I am using latest atmosphere. Is there any reason why my atmosphere fails to boot when I add this piece of code to the system_settings.ini in atmosphere/config/system_settings.ini?

Code:
[tc]
; Unlock fan speeds
 tskin_rate_table_console = str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 102], [43000, 53000, 102, 153], [53000, 58000, 153, 255], [58000, 1000000, 255, 255]]"
 tskin_rate_table_handheld = str!"[[-1000000, 40000, 0, 0], [36000, 43000, 102, 102], [43000, 48000, 102, 153], [48000, 53000, 153, 153], [53000, 1000000, 255, 255], [48000, 1000000, 255, 255]]"

I added that piece of code at the bottom of my system_settings.ini file and it fails to boot. It only successfully boots when I add the semicolon ";" before the code to each line and it becomes green(using notepad++, of course). Does the setting still take effect this way or is it being commented out with the usage of ';'? Thanks! Below I have attached my config file incase something may be wrong with it. Thank you very much
Lets see if I can help. First, is it first time using this fan controller ini file? Or did you use before? If used before and worked, try previous atmosphere releases (or sd configuration). Newer atmosphere builds (or last things you changed on sd card) may conflict with fan adjust ini file, unfortunately I even dont have a pc right now, I can't test it.

Second, can you try my ini file just as I described? Maybe that semicolon things make the errors.
 
  • Like
Reactions: BestSiteEvar
Lets see if I can help. First, is it first time using this fan controller ini file? Or did you use before? If used before and worked, try previous atmosphere releases (or sd configuration). Newer atmosphere builds (or last things you changed on sd card) may conflict with fan adjust ini file, unfortunately I even dont have a pc right now, I can't test it.

Second, can you try my ini file just as I described? Maybe that semicolon things make the errors.
Ur file worked but what about other settings contained in that file? The .ini file had an atmosphere section and important stuff. are they not that important? sorry for noob question this is my first time using this fan controller ini file. idk much about semicolon but when it's enabled it goes through but i have no idea if settings are taken effect when doing so. thanks. sorry if i sound unclear
 
Ur file worked but what about other settings contained in that file? The .ini file had an atmosphere section and important stuff. are they not that important? sorry for noob question this is my first time using this fan controller ini file. idk much about semicolon but when it's enabled it goes through but i have no idea if settings are taken effect when doing so. thanks. sorry if i sound unclear
.ini file only has two section, one dor tablet mode and one for console, there are no other things in .ini file. If you are using different file than mine, combining files or etc. I can't help, I don't know other files. Also if it works, just use it like that, there is no need to change on my .ini file. If you want to ensure if .ini works, change the first fan rate values 0, 0 to 51, 102 on both tablet and console section. When you open switch, fan should immediately spins. If works, revert back, no need to wear fan on low temps.
 
  • Like
Reactions: BestSiteEvar
.ini file only has two section, one dor tablet mode and one for console, there are no other things in .ini file. If you are using different file than mine, combining files or etc. I can't help, I don't know other files. Also if it works, just use it like that, there is no need to change on my .ini file. If you want to ensure if .ini works, change the first fan rate values 0, 0 to 51, 102 on both tablet and console section. When you open switch, fan should immediately spins. If works, revert back, no need to wear fan on low temps.
Thank you very much for your help. After tinkering and editing my .ini finally works but I modified it. It now looks like this but everything's still working fine for the moment! Fingers crossed.

Code:
[tc]
tskin_rate_table_console = str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 102], [43000, 53000, 102, 153], [53000, 58000, 153, 255], [58000, 1000000, 255, 255]]"
tskin_rate_table_handheld = str!"[[-1000000, 40000, 0, 0], [36000, 43000, 102, 102], [43000, 48000, 102, 153], [48000, 53000, 153, 153], [53000, 1000000, 255, 255], [48000, 1000000, 255, 255]]"
; Atmosphere custom settings
[atmosphere]
; Reboot from fatal automatically after some number of milliseconds.
; If field is not present or 0, fatal will wait indefinitely for user input.
; fatal_auto_reboot_interval = u64!0x0
; Make the power menu's "reboot" button reboot to payload.
; Set to "normal" for normal reboot, "rcm" for rcm reboot.
; power_menu_reboot_function = str!payload
; Controls whether dmnt cheats should be toggled on or off by
; default. 1 = toggled on by default, 0 = toggled off by default.
 dmnt_cheats_enabled_by_default = u8!0x0
; Controls whether dmnt should always save cheat toggle state
; for restoration on new game launch. 1 = always save toggles,
; 0 = only save toggles if toggle file exists.
; dmnt_always_save_cheat_toggles = u8!0x0
; Enable writing to BIS partitions for HBL.
; This is probably undesirable for normal usage.
; enable_hbl_bis_write = u8!0x0
; Enable reading the CAL0 partition for HBL.
; This is probably undesirable for normal usage.
; enable_hbl_cal_read = u8!0x0
; Controls whether fs.mitm should redirect save files
; to directories on the sd card.
; 0 = Do not redirect, 1 = Redirect.
; NOTE: EXPERIMENTAL
; If you do not know what you are doing, do not touch this yet.
; fsmitm_redirect_saves_to_sd = u8!0x0
; Controls whether am sees system settings "DebugModeFlag" as
; enabled or disabled.
; 0 = Disabled (not debug mode), 1 = Enabled (debug mode)
; enable_am_debug_mode = u8!0x0
; Controls whether dns.mitm is enabled
; 0 = Disabled, 1 = Enabled
; enable_dns_mitm = u8!0x1
; Controls whether dns.mitm uses the default redirections in addition to
; whatever is specified in the user's hosts file.
; 0 = Disabled (use hosts file contents), 1 = Enabled (use defaults and hosts file contents)
; add_defaults_to_dns_hosts = u8!0x1
; Controls whether dns.mitm logs to the sd card for debugging
; 0 = Disabled, 1 = Enabled
; enable_dns_mitm_debug_log = u8!0x0
; Controls whether htc is enabled
; 0 = Disabled, 1 = Enabled
; enable_htc = u8!0x0
; Controls whether atmosphere's log manager is enabled
; Note that this setting is ignored (and treated as 1) when htc is enabled.
; 0 = Disabled, 1 = Enabled
; enable_log_manager = u8!0x0
 

Attachments

Thank you very much for your help. After tinkering and editing my .ini finally works but I modified it. It now looks like this but everything's still working fine for the moment! Fingers crossed.

Code:
[tc]
tskin_rate_table_console = str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 102], [43000, 53000, 102, 153], [53000, 58000, 153, 255], [58000, 1000000, 255, 255]]"
tskin_rate_table_handheld = str!"[[-1000000, 40000, 0, 0], [36000, 43000, 102, 102], [43000, 48000, 102, 153], [48000, 53000, 153, 153], [53000, 1000000, 255, 255], [48000, 1000000, 255, 255]]"
; Atmosphere custom settings
[atmosphere]
; Reboot from fatal automatically after some number of milliseconds.
; If field is not present or 0, fatal will wait indefinitely for user input.
; fatal_auto_reboot_interval = u64!0x0
; Make the power menu's "reboot" button reboot to payload.
; Set to "normal" for normal reboot, "rcm" for rcm reboot.
; power_menu_reboot_function = str!payload
; Controls whether dmnt cheats should be toggled on or off by
; default. 1 = toggled on by default, 0 = toggled off by default.
 dmnt_cheats_enabled_by_default = u8!0x0
; Controls whether dmnt should always save cheat toggle state
; for restoration on new game launch. 1 = always save toggles,
; 0 = only save toggles if toggle file exists.
; dmnt_always_save_cheat_toggles = u8!0x0
; Enable writing to BIS partitions for HBL.
; This is probably undesirable for normal usage.
; enable_hbl_bis_write = u8!0x0
; Enable reading the CAL0 partition for HBL.
; This is probably undesirable for normal usage.
; enable_hbl_cal_read = u8!0x0
; Controls whether fs.mitm should redirect save files
; to directories on the sd card.
; 0 = Do not redirect, 1 = Redirect.
; NOTE: EXPERIMENTAL
; If you do not know what you are doing, do not touch this yet.
; fsmitm_redirect_saves_to_sd = u8!0x0
; Controls whether am sees system settings "DebugModeFlag" as
; enabled or disabled.
; 0 = Disabled (not debug mode), 1 = Enabled (debug mode)
; enable_am_debug_mode = u8!0x0
; Controls whether dns.mitm is enabled
; 0 = Disabled, 1 = Enabled
; enable_dns_mitm = u8!0x1
; Controls whether dns.mitm uses the default redirections in addition to
; whatever is specified in the user's hosts file.
; 0 = Disabled (use hosts file contents), 1 = Enabled (use defaults and hosts file contents)
; add_defaults_to_dns_hosts = u8!0x1
; Controls whether dns.mitm logs to the sd card for debugging
; 0 = Disabled, 1 = Enabled
; enable_dns_mitm_debug_log = u8!0x0
; Controls whether htc is enabled
; 0 = Disabled, 1 = Enabled
; enable_htc = u8!0x0
; Controls whether atmosphere's log manager is enabled
; Note that this setting is ignored (and treated as 1) when htc is enabled.
; 0 = Disabled, 1 = Enabled
; enable_log_manager = u8!0x0
You're welcome. Enjoy your cooler switch!
And boy, thats look like a REAL .ini file :D
Don't forget what you did because you will need the .ini file (or the fan settigns) every time you freshly setup switch's sd card, you will need to recopy it.
 
  • Like
Reactions: BestSiteEvar
Hello guys
I had some problem with my switch maybe someone from this topic can help me.
In handheld mode sometimes after wake-up my fan speed is going to 75% when switch temperature is less than 35°C.
 
Hello guys
I had some problem with my switch maybe someone from this topic can help me.
In handheld mode sometimes after wake-up my fan speed is going to 75% when switch temperature is less than 35°C.
Try freshly setting up switch's card. Some unknown file or config may cause. Also you can uninstall unused homebree apps, etc. And don't forget to update your switch to latest firmware.
 
  • Like
Reactions: Amirgh
Damn I thought this would keep my switch from overheating and shutting down but this didn't seem to help. Is there a way for me to have fan speed displayed during gameplay?
 
Last edited by Natural,
This tutorial is outdated.
Since 12.0.0 tskin_rate_table_console is not in use anymore.
tskin_rate_table_handheld is also not giving you full access to fan, system can takeover it and push their settings.
To properly set fan you must enable this

use_configurations_on_fwdbg

Then use those to set fan profiles

tskin_rate_table_handheld_on_fwdbg
tskin_rate_table_console_on_fwdbg

This works only for 12.0.0+
 
This tutorial is outdated.
Since 12.0.0 tskin_rate_table_console is not in use anymore.
tskin_rate_table_handheld is also not giving you full access to fan, system can takeover it and push their settings.
To properly set fan you must enable this

use_configurations_on_fwdbg

Then use those to set fan profiles

tskin_rate_table_handheld_on_fwdbg
tskin_rate_table_console_on_fwdbg

This works only for 12.0.0+
Don't work for me, I get atmos error if I add this, can you share exactly how do you use this? I tried with "1" and with "true", I get the error only when I add use_configurations, modifying tskin_rate with fwdbg work, but obviusly this settings dont work without first thing
 
This tutorial is outdated.
Since 12.0.0 tskin_rate_table_console is not in use anymore.
tskin_rate_table_handheld is also not giving you full access to fan, system can takeover it and push their settings.
To properly set fan you must enable this

use_configurations_on_fwdbg

Then use those to set fan profiles

tskin_rate_table_handheld_on_fwdbg
tskin_rate_table_console_on_fwdbg

This works only for 12.0.0+

I second the request for an example of how it has to look like, thanks for the info regardless.
 
I second the request for an example of how it has to look like, thanks for the info regardless.
I got it, add this

use_configurations_on_fwdbg = u8!0x1

(Take a look first, if you have it yet on your config, only change u8!0x0 to u8!0x1)

And add _on_fwdbg to your tskin rate, like this

tskin_rate_table_console_on_fwdbg
tskin_rate_table_handheld_on_fwdbg
 
I got it, add this

use_configurations_on_fwdbg = u8!0x1

(Take a look first, if you have it yet on your config, only change u8!0x0 to u8!0x1)

And add _on_fwdbg to your tskin rate, like this

tskin_rate_table_console_on_fwdbg
tskin_rate_table_handheld_on_fwdbg
Could you pass your .ini file? I can't get it to work
 
Could you pass your .ini file? I can't get it to work
I have lot of things modified in that file, and maybe that things not are for your use, send a screenshot of fan part in yours, and I'll take a look
 
Tengo muchas cosas modificadas en ese archivo, y tal vez esas cosas no sean para su uso, envíe una captura de pantalla de la parte del fan en el suyo y le echaré un vistazo.
Este a continuación es mi archivo, es el mismo que el predeterminado pero con las líneas tc puestas pero no tienen efecto:

[tc]
use_configurations_on_fwdbg = u8!0x1
tskin_rate_table_console_on_fwdbg = str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 48000, 51, 102], [48000, 53000, 102, 153], [53000, 1000000, 153, 153], [48000, 1000000, 153, 153]]"
tskin_rate_table_handheld_on_fwdbg = str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 48000, 51, 65], [48000, 53000, 65, 93], [53000, 1000000, 93, 120]]"
[eupld]
; Disable uploading error reports to Nintendo
upload_enabled = u8!0x0
[usb]
; Enable USB 3.0 superspeed for homebrew
; 0 = USB 3.0 support is system default (usually disabled), 1 = USB 3.0 support is enabled.
usb30_force_enabled = u8!0x1
[ro]
; Control whether RO should ease its validation of NROs.
; (note: this is normally not necessary, and ips patches can be used.)
; ease_nro_restriction = u8!0x1
[lm]
; Control whether lm should log to the SD card.
; Note that this setting does nothing when log manager is not enabled.
; enable_sd_card_logging = u8!0x1
; Control the output directory for SD card logs.
; Note that this setting does nothing when log manager is not enabled/sd card logging is not enabled.
; sd_card_log_output_directory = str!atmosphere/binlogs
; Atmosphere custom settings
[erpt]
; Control whether erpt reports should always be preserved, instead of automatically cleaning periodically.
disable_automatic_report_cleanup = u8!0x0
[atmosphere]
; Reboot from fatal automatically after some number of milliseconds.
; If field is not present or 0, fatal will wait indefinitely for user input.
fatal_auto_reboot_interval = u64!5000
; Make the power menu's "reboot" button reboot to payload.
; Set to "normal" for normal reboot, "rcm" for rcm reboot.
power_menu_reboot_function = str!payload
; Controls whether dmnt cheats should be toggled on or off by
; default. 1 = toggled on by default, 0 = toggled off by default.
dmnt_cheats_enabled_by_default = u8!0x0
; Controls whether dmnt should always save cheat toggle state
; for restoration on new game launch. 1 = always save toggles,
; 0 = only save toggles if toggle file exists.
dmnt_always_save_cheat_toggles = u8!0x0
; Enable writing to BIS partitions for HBL.
; This is probably undesirable for normal usage.
; enable_hbl_bis_write = u8!0x0
; Enable reading the CAL0 partition for HBL.
; This is probably undesirable for normal usage.
; enable_hbl_cal_read = u8!0x0
; Controls whether fs.mitm should redirect save files
; to directories on the sd card.
; 0 = Do not redirect, 1 = Redirect.
; NOTE: EXPERIMENTAL
; Si no sabe lo que está haciendo, no toque esto todavía.
; fsmitm_redirect_saves_to_sd = u8!0x0
; Controla si am ve la configuración del sistema "DebugModeFlag" como
; habilitado o deshabilitado.
; 0 = Deshabilitado (no modo de depuración), 1 = Habilitado (modo de depuración)
; enable_am_debug_mode = u8!0x0
; Controla si dns.mitm está habilitado
; 0 = Deshabilitado, 1 = Habilitado
enable_dns_mitm = u8!0x1
; Controla si dns.mitm usa las redirecciones predeterminadas además de
; lo que se especifica en el archivo de hosts del usuario.
; 0 = Deshabilitado (usar el contenido del archivo de hosts), 1 = Habilitado (usar los valores predeterminados y el contenido del archivo de hosts)
add_defaults_to_dns_hosts = u8!0x1
; Controla si dns.mitm se registra en la tarjeta SD para la depuración
; 0 = Deshabilitado, 1 = Habilitado
; enable_dns_mitm_debug_log = u8!0x0
; Controla si htc está habilitado
; 0 = Deshabilitado, 1 = Habilitado
; habilitar_htc = u8!0x0
; Controla si el administrador de registro de la atmósfera está habilitado
; Tenga en cuenta que esta configuración se ignora (y se trata como 1) cuando htc está habilitado.
; 0 = Deshabilitado, 1 = Habilitado
; enable_log_manager = u8!0x0
[cargador]
; Controla el tamaño del montón homebrew cuando se ejecuta como subprograma.
; Si se establece en cero, toda la memoria de applet disponible se utiliza como montón.
; El valor predeterminado es cero.
; applet_heap_size = u64!0x0
; Controla la cantidad de memoria para reservar cuando se ejecuta como applet
; para uso de otros applets. Este ajuste no tiene efecto si
; applet_heap_size no es cero. El valor predeterminado es 0x8600000.
; applet_heap_reservation_size = u64!0x8600000
 
tskin_rate_table_console_on_fwdbg = str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 48000, 51, 102], [48000, 53000, 102, 153], [53000, 1000000, 153, 153], [48000, 1000000, 153, 153]]"
tskin_rate_table_handheld_on_fwdbg = str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 48000, 51, 65], [48000, 53000, 65, 93], [53000, 1000000, 93, 120]]"
You have really limited fan. Have you erista or mariko?
 
Last edited by Medel87,
Erista, what I want is to lower the revolutions of the fan, when it goes from 53 degrees the fan goes from being around 40% to 80% or more and the noise it makes to be at 53 degrees is crazy, but it doesn't work what have i put

The original code was the one from the first post, that is tests that I have been doing to lower the revolutions
You have really limited fan. Have you erista or mariko?
 
Erista, what I want is to lower the revolutions of the fan, when it goes from 53 degrees the fan goes from being around 40% to 80% or more and the noise it makes to be at 53 degrees is crazy, but it doesn't work what have i put

The original code was the one from the first post, that is tests that I have been doing to lower the revolutions
its crazy to me that people actually want to make their device hotter just because "noise"
 
I never has been able to ear the fan on my console even when using intensive graphics game, I really don't understand this homebrew
 

Site & Scene News

Popular threads in this forum