Hello team,
I have been working with my friend ChatGPT and he told me the following.
What do you think? Is it right?
If it is not correct, please present an alternative and the argument that supports it.
Thanks in advance,
Best regards
Willsito
Summary of Configuration Changes for Atmosphere on Switch | ChatGPT 4o:
Objective: Maintaining the my current configuration of EMUNAND with Atmosphere, we have to configure everything for the launching of SYSNAND with Atmosphere on a Nintendo Switch
with the following conditions, within
the SYSNAND with Atmosphere instance:
- Disable all programs in the \atmosphere\contents folder.
- Allow online play (no blocking of Nintendo servers).
- Access all sections like news, update games, and firmware automatically without issues.
- Prevent Nintendo's telemetry services from collecting any data related to Atmosphere.
- Make Nintendo's telemetry services to do his things with any amendment from Atmosphere.
- Ensure that the only functionality of Atmosphere is the ability to run Homebrew on-demand (in the very end I only want to use JKSV and Reboot-To-Payload to go back to Hekate from SYSNAND).
Initial Configuration Files (as it currently is, for EMUNAND with Atmosphere):
1. \bootloader\hekate_ipl.ini
[config]
autoboot=0
autoboot_list=0
bootwait=0
backlight=220
noticker=0
autohosoff=0
autonogc=1
updater2p=1
bootprotect=0
[Atmosphere | EMUNAND]
fss0=atmosphere/package3
kip1patch=nosigchk
emummcforce=1
atmosphere=1
icon=bootloader/res/atmoslogo.bmp
{}
[Atmosphere | SYSNAND]
fss0=atmosphere/package3
emummc_force_disable=1
icon=bootloader/res/icon_switch_atmosphere.bmp
{}
[Original | SYSNAND]
fss0=atmosphere/package3
stock=1
emummc_force_disable=1
icon=bootloader/res/icon_switch.bmp
{}
[Android 10]
payload=switchroot/android/coreboot.rom
icon=bootloader/res/icon_android.bmp
{}
2.\atmosphere\hosts\sysmmc.txt
# Nintendo telemetry servers
127.0.0.1 receive-%.dg.srv.nintendo.net receive-%.er.srv.nintendo.net
127.0.0.1 *nintendo.com
127.0.0.1 *nintendo.net
127.0.0.1 *nintendo.jp
127.0.0.1 *nintendo.co.jp
127.0.0.1 *nintendo.co.uk
127.0.0.1 *nintendo-europe.com
127.0.0.1 *nintendowifi.net
127.0.0.1 *nintendo.es
127.0.0.1 *nintendo.co.kr
127.0.0.1 *nintendo.tw
127.0.0.1 *nintendo.com.hk
127.0.0.1 *nintendo.com.au
127.0.0.1 *nintendo.co.nz
127.0.0.1 *nintendo.at
127.0.0.1 *nintendo.be
127.0.0.1 *nintendods.cz
127.0.0.1 *nintendo.dk
127.0.0.1 *nintendo.de
127.0.0.1 *nintendo.fi
127.0.0.1 *nintendo.fr
127.0.0.1 *nintendo.gr
127.0.0.1 *nintendo.hu
127.0.0.1 *nintendo.it
127.0.0.1 *nintendo.nl
127.0.0.1 *nintendo.com.mx
127.0.0.1 *nintendo.mx
127.0.0.1 *nintendo.ar
127.0.0.1 *nintendo.pe
127.0.0.1 *nintendo.no
127.0.0.1 *nintendo.pt
127.0.0.1 *nintendo.ru
127.0.0.1 *nintendo.co.za
127.0.0.1 *nintendo.se
127.0.0.1 *nintendo.ch
127.0.0.1 *nintendo.pl
127.0.0.1 *nintendoswitch.com
127.0.0.1 *nintendoswitch.com.cn
127.0.0.1 *nintendoswitch.cn
95.216.149.205 *conntest.nintendowifi.net
95.216.149.205 *ctest.cdn.nintendo.net
3. \atmosphere\config\exosphere.ini
# Key: debugmode, default: 1.
# Desc: Controls whether kernel is debug mode.
# Disabling this may break Atmosphere's debugger in a future release.
# Key: debugmode_user, default: 0.
# Desc: Controls whether userland is debug mode.
# Key: disable_user_exception_handlers, default: 0.
# Desc: Controls whether user exception handlers are executed on error.
# NOTE: This will cause atmosphere to not fail gracefully.
# Support may not be provided to users tho disable these.
# If you do not know what you are doing, leave them on.
# Key: enable_user_pmu_access, default: 0.
# Desc: Controls whether userland has access to the PMU registers.
# NOTE: It is unknown what effects this has on official code.
# Key: blank_prodinfo_sysmmc, default: 0.
# Desc: Controls whether PRODINFO should be blanked in sysmmc.
# This will cause the system to see dummied out keys and
# serial number information.
# NOTE: This is not known to be safe, as data may be
# cached elsewhere in the system. Usage is not encouraged.
# Key: blank_prodinfo_emummc, default: 0.
# Desc: Controls whether PRODINFO should be blanked in emummc.
# NOTE: This is not known to be safe, as data may be
# cached elsewhere in the system. Usage is not encouraged.
# Key: allow_writing_to_cal_sysmmc, default: 0.
# Desc: Controls whether PRODINFO can be written by homebrew in sysmmc.
# NOTE: Usage of this setting is strongly discouraged without
# a safe backup elsewhere. Turning this on will also cause Atmosphere
# to ensure a safe backup of calibration data is stored in unused
# mmc space, encrypted to prevent detection. This backup can be used
# to prevent unrecoverable edits in emergencies.
# Key: log_port, default: 0.
# Desc: Controls what uart port exosphere will set up for logging.
# NOTE: 0 = UART-A, 1 = UART-B, 2 = UART-C, 3 = UART-D
# Key: log_baud_rate, default: 115200
# Desc: Controls the baud rate exosphere will set up for logging.
# NOTE: 0 is treated as equivalent to 115200.
# Key: log_inverted, default: 0.
# Desc: Controls whether the logging uart port is inverted.
[exosphere]
debugmode=1
debugmode_user=0
disable_user_exception_handlers=0
enable_user_pmu_access=0
blank_prodinfo_sysmmc=1
blank_prodinfo_emummc=1
allow_writing_to_cal_sysmmc=0
log_port=0
log_baud_rate=115200
log_inverted=0
4. \atmosphere\config\system_settings.ini
[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!0x0
[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!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
; Controls whether the bluetooth pairing database is redirected to the SD card (shared across sysmmc/all emummcs)
; NOTE: On <13.0.0, the database size was 10 instead of 20; booting pre-13.0.0 will truncate the database.
; 0 = Disabled, 1 = Enabled
; enable_external_bluetooth_db = u8!0x0
[hbloader]
; Controls the size of the homebrew heap when running as applet.
; If set to zero, all available applet memory is used as heap.
; The default is zero.
; applet_heap_size = u64!0x0
; Controls the amount of memory to reserve when running as applet
; for usage by other applets. This setting has no effect if
; applet_heap_size is non-zero. The default is 0x8600000.
; applet_heap_reservation_size = u64!0x8600000
Final Configuration
1. \bootloader\hekate_ipl.ini
[config]
autoboot=0
autoboot_list=0
bootwait=3
backlight=220
noticker=0
autohosoff=0
autonogc=1
updater2p=1
bootprotect=0
[Atmosphere | EMUNAND]
fss0=atmosphere/package3
kip1patch=nosigchk
emummcforce=1
atmosphere=1
icon=bootloader/res/atmoslogo.bmp
secmon=bootloader/payloads/emummc_sysmmc_config.bin
{}
[Atmosphere | SYSNAND]
fss0=atmosphere/package3
emummc_force_disable=1
icon=bootloader/res/icon_switch_atmosphere.bmp
secmon=bootloader/payloads/emummc_sysmmc_config.bin
{}
[Original | SYSNAND]
fss0=atmosphere/package3
stock=1
emummc_force_disable=1
icon=bootloader/res/icon_switch.bmp
{}
[Android 10]
payload=switchroot/android/coreboot.rom
icon=bootloader/res/icon_android.bmp
{}
2. \atmosphere\hosts\sysmmc.txt
Empty.
3. \atmosphere\config\exosphere.ini
- Create separate versions to be selected with a script:
- exosphere_emummc.ini for EMUNAND, as it currently is.
- exosphere_sysmmc.ini for SYSNAND, as follows:
[eupld]
upload_enabled = u8!0x1 ; Allow uploading error reports to Nintendo (Permitir la subida de reportes de errores a Nintendo)
[usb]
usb30_force_enabled = u8!0x0 ; Use default USB 3.0 configuration (usually disabled) (Usar configuración por defecto de USB 3.0, generalmente desactivado)
[ro]
ease_nro_restriction = u8!0x0 ; Do not ease NRO validation restrictions (No relajar la restricción de validación de NROs)
[lm]
enable_sd_card_logging = u8!0x0 ; Disable logging to SD card (Desactivar el registro en la SD)
[erpt]
disable_automatic_report_cleanup = u8!0x0 ; Allow automatic error report cleanup (Permitir la limpieza automática de reportes de error)
[atmosphere]
fatal_auto_reboot_interval = u64!0x0 ; Do not auto-reboot after a fatal error (No reiniciar automáticamente después de un error fatal)
power_menu_reboot_function = str!normal ; Reboot normally from the power menu (Reiniciar de manera normal desde el menú de apagado)
dmnt_cheats_enabled_by_default = u8!0x0 ; Disable cheats by default (Desactivar cheats por defecto)
enable_hbl_bis_write = u8!0x0 ; Disable BIS partition writing from HBL (Desactivar escritura a particiones BIS desde HBL)
enable_hbl_cal_read = u8!0x0 ; Disable CAL0 partition reading from HBL (Desactivar lectura de la partición CAL0 desde HBL)
fsmitm_redirect_saves_to_sd = u8!0x0 ; Do not redirect save files to SD (No redirigir las partidas guardadas a la SD)
enable_am_debug_mode = u8!0x0 ; Do not enable AM debug mode (No activar el modo de depuración en AM)
enable_dns_mitm = u8!0x0 ; Disable DNS interception (Desactivar la interceptación de DNS)
add_defaults_to_dns_hosts = u8!0x0 ; Do not add default DNS redirections (No agregar redirecciones DNS por defecto)
enable_dns_mitm_debug_log = u8!0x0 ; Do not enable DNS MITM logging (No activar el log de DNS MITM)
enable_htc = u8!0x0 ; Disable htc (Desactivar htc)
enable_log_manager = u8!0x0 ; Disable log manager (Desactivar el log manager)
enable_external_bluetooth_db = u8!0x0 ; Do not redirect Bluetooth database to SD (No redirigir la base de datos de Bluetooth a la SD)
[hbloader]
applet_heap_size = u64!0x0 ; Use default heap size (Usar el tamaño de heap por defecto)
applet_heap_reservation_size = u64!0x8600000 ; Reserve default heap space (Reservar espacio de heap por defecto)
4. \atmosphere\config\system_settings.ini
- Create separate versions to be selected with a script:
- system_settings_emummc.ini for EMUNAND, as it currently is.
- system_settings_sysmmc.ini for SYSNAND, as follows:
[exosphere]
debugmode=0 ; Disable debug mode (Desactiva el modo de depuración)
debugmode_user=0 ; Disable user debug mode (Desactiva el modo de depuración para el usuario)
disable_user_exception_handlers=0 ; Do not disable user exception handlers (No desactivar los manejadores de excepciones)
enable_user_pmu_access=0 ; Do not allow user PMU access (No permitir acceso a PMU por el usuario)
blank_prodinfo_sysmmc=0 ; Do not blank PRODINFO in SYSNAND (No blanquear el PRODINFO en SYSNAND)
blank_prodinfo_emummc=1 ; Blank PRODINFO in EMUNAND (Blanquea el PRODINFO en EMUNAND)
allow_writing_to_cal_sysmmc=0 ; Do not allow writing to CAL0 in SYSNAND (No permitir la escritura en CAL0 en SYSNAND)
log_port=0 ; Disable logging via port (Desactiva el log por puerto)
log_baud_rate=115200 ; Log baud rate (irrelevant if log_port=0) (Velocidad de log por puerto, irrelevante si log_port=0)
log_inverted=0 ; Do not invert log (irrelevant if log_port=0) (No invertir el log, irrelevante si log_port=0)
5. New script/payload creation: \bootloader\payloads\emummc_sysmmc_config.bin
- This payload is a script, converted into binary, that copy the correct configuration files before Atmosphere launches.
@Echo off
REM Este script copia los archivos según el modo de arranque
IF "%1"=="emummc" (
COPY /Y atmosphere\config\exosphere_emummc.ini atmosphere\config\exosphere.ini
COPY /Y atmosphere\config\system_settings_emummc.ini atmosphere\config\system_settings.ini
) ELSE IF "%1"=="sysmmc" (
COPY /Y atmosphere\config\exosphere_sysmmc.ini atmosphere\config\exosphere.ini
COPY /Y atmosphere\config\system_settings_sysmmc.ini atmosphere\config\system_settings.ini
)
REM Lanza Atmosphere en el modo seleccionado
hekate_ctcaer.bin
What We Achieve with These Modifications
- Different Settings for EMUNAND and SYSNAND: The ability to maintain distinct configurations for EMUNAND and SYSNAND in Atmosphere by using separate configuration files (exosphere.ini and system_settings.ini) that are automatically swapped based on the NAND mode selected.
- Online Play in SYSNAND: Ensure that the SYSNAND mode is safe for online play, with telemetry from Atmosphere being completely neutralized.
- Controlled Atmosphere Features: Disable all unnecessary features of Atmosphere in SYSNAND, ensuring that the only active functionality is on-demand Homebrew execution.
- Protection of Nintendo Services: Ensure that updates, news, and other Nintendo services work normally in SYSNAND, without any interference from Atmosphere.
By implementing these changes, you can use your Switch safely online in SYSNAND mode with Atmosphere, while still having the flexibility to use more advanced features in EMUNAND.