Files
Horizon-OC/Source/Configurator/src/settings.py
souldbminersmwc 708be969cb hoc-sys/loader/config-pc/config-device - move unsafe freqs setting to hoc-sys
This allows stuff to be changed on the fly
2025-10-23 15:54:20 -04:00

595 lines
16 KiB
Python

import common as c
# Links
kip_download_link="https://github.com/souldbminersmwc/Horizon-OC/releases/latest/download/loader.kip"
hoc_clk_download_link="https://github.com/souldbminersmwc/Horizon-OC/releases/latest/download/hoc-clk.zip"
nx_ovlloader_link = "https://github.com/ppkantorski/nx-ovlloader/releases/latest/download/nx-ovlloader+.zip"
ultrahand_link = "https://github.com/ppkantorski/Ultrahand-Overlay/releases/latest/download/ovlmenu.ovl"
status_monitor_link = "https://github.com/ppkantorski/Status-Monitor-Overlay/releases/latest/download/Status-Monitor-Overlay.ovl "
saltynx_link = "https://github.com/masagrator/SaltyNX/releases/latest/download/SaltyNX.zip"
reversenx_link = "https://github.com/masagrator/ReverseNX-RT/releases/latest/download/ReverseNX-RT-ovl.ovl"
# Frequencies
freqs_khz = [
76800, 153600, 230400, 307200, 384000, 460800, 537600, 614400, 691200, 768000,
844800, 921600, 998400, 1075200, 1152000, 1228800, 1267200, 1305600, 1344000, 1382400, 1420800,
1459200, 1497600, 1536000
]
freqs_khz_e = [
76800, 153600, 230400, 307200, 384000, 460800, 537600, 614400, 691200, 768000,
844800, 921600, 998400, 1075200 #, 1152000, 1228800 # Disabled by default as these freqs can cause board damage
]
freqs_mhz = [
76.8, 153.6, 230.4, 307.2, 384.0, 460.8, 537.6, 614.4, 691.2, 768.0,
844.8, 921.6, 998.4, 1075.2, 1152.0, 1228.8, 1267.2, 1305.6, 1344.0, 1382.4,
1420.8, 1459.2, 1497.6, 1536.0
]
adjusted_freqs_khz = [
0, 1600000, 1633000, 1666000, 1700000, 1733000, 1766000, 1800000, 1833000, 1866000, 1900000,
1933000, 1966000, 2000000, 2033000, 2066000, 2100000, 2133000, 2166000, 2200000, 2233000,
2266000, 2300000, 2333000, 2366000, 2400000, 2433000, 2466000, 2500000, 2533000, 2566000,
2600000, 2633000, 2666000, 2700000, 2733000, 2766000, 2800000, 2833000, 2866000, 2900000,
2933000, 2966000, 3000000, 3033000, 3066000, 3100000, 3133000, 3166000, 3200000, 3233000,
3266000, 3300000, 3333000, 3366000, 3400000, 3433000, 3466000, 3500000
]
voltages_uv = [
0, 1050000, 1062500, 1075000, 1087500, 1100000, 1112500, 1125000,
1137500, 1150000, 1162500, 1175000, 1187500, 1200000, 1212500, 1237500
]
vddq_uv = [
0, 550000, 555000, 560000, 565000, 570000, 575000, 580000, 585000, 590000, 595000,
600000, 605000, 610000, 615000, 620000, 625000, 630000, 635000, 640000, 645000,
650000
]
freqs_hz_cpu = [
1020000, 1122000, 1224000, 1326000, 1428000, 1581000, 1683000,
1785000, 1887000, 1963500, 2091000, 2193000, 2295000, 2397000,
2499000, 2601000, 2703000, 2805000, 2907000
]
freqs_mhz_cpu = [
1020.0, 1122.0, 1224.0, 1326.0, 1428.0, 1581.0, 1683.0,
1785.0, 1887.0, 1963.5, 2091.0, 2193.0, 2295.0, 2397.0,
2499.0, 2601.0, 2703.0, 2805.0, 2907.0
]
# Loading/saving
variables = [
("custRev", "u32"),
("mtcConf", "u32"),
("commonCpuBoostClock", "u32"),
("commonEmcMemVolt", "u32"),
("eristaCpuMaxVolt", "u32"),
("eristaEmcMaxClock", "u32"),
("marikoCpuMaxVolt", "u32"),
("marikoEmcMaxClock", "u32"),
("marikoEmcVddqVolt", "u32"),
("marikoCpuUV", "u32"),
("marikoGpuUV", "u32"),
("eristaCpuUV", "u32"),
("eristaGpuUV", "u32"),
("commonGpuVoltOffset", "u32"),
("marikoEmcDvbShift", "u32"),
# advanced config
("t1_tRCD", "u32"),
("t2_tRP", "u32"),
("t3_tRAS", "u32"),
("t4_tRRD", "u32"),
("t5_tRFC", "u32"),
("t6_tRTW", "u32"),
("t7_tWTR", "u32"),
("t8_tREFI", "u32"),
("mem_burst_latency", "u32"),
("marikoCpuVmin", "u32"),
("eristaGpuVmin", "u32"),
("marikoGpuVmin", "u32"),
("marikoGpuVmax", "u32"),
("g_volt_76800", "u32"),
("g_volt_153600", "u32"),
("g_volt_230400", "u32"),
("g_volt_307200", "u32"),
("g_volt_384000", "u32"),
("g_volt_460800", "u32"),
("g_volt_537600", "u32"),
("g_volt_614400", "u32"),
("g_volt_691200", "u32"),
("g_volt_768000", "u32"),
("g_volt_844800", "u32"),
("g_volt_921600", "u32"),
("g_volt_998400", "u32"),
("g_volt_1075200", "u32"),
("g_volt_1152000", "u32"),
("g_volt_1228800", "u32"),
("g_volt_1267200", "u32"),
("g_volt_1305600", "u32"),
("g_volt_1344000", "u32"),
("g_volt_1382400", "u32"),
("g_volt_1420800", "u32"),
("g_volt_1459200", "u32"),
("g_volt_1497600", "u32"),
("g_volt_1536000", "u32"),
("g_volt_e_76800", "u32"),
("g_volt_e_153600", "u32"),
("g_volt_e_230400", "u32"),
("g_volt_e_307200", "u32"),
("g_volt_e_384000", "u32"),
("g_volt_e_460800", "u32"),
("g_volt_e_537600", "u32"),
("g_volt_e_614400", "u32"),
("g_volt_e_691200", "u32"),
("g_volt_e_768000", "u32"),
("g_volt_e_844800", "u32"),
("g_volt_e_921600", "u32"),
("g_volt_e_998400", "u32"),
("g_volt_e_1075200", "u32"),
# ("g_volt_e_1152000", "u32"),
# ("g_volt_e_1228800", "u32"),
]
fmt_map = {
"u32": "I",
"double": "d",
}
def load_all_vars():
c.load_entry_object("custRev", 0)
c.load_entry_object("mtcConf", 0)
c.load_entry_object("commonCpuBoostClock", 1)
c.load_entry_object("commonEmcMemVolt", 2)
c.load_entry_object("eristaCpuMaxVolt", 3)
c.load_entry_object("eristaEmcMaxClock", 1)
c.load_entry_object("marikoCpuMaxVolt", 3)
c.load_entry_object("marikoEmcMaxClock", 1)
c.load_entry_object("marikoEmcVddqVolt", 2)
c.load_entry_object("marikoCpuUV", 5)
c.load_entry_object("marikoGpuUV", 4)
c.load_entry_object("eristaCpuUV", 5)
c.load_entry_object("eristaGpuUV", 4)
c.load_entry_object("commonGpuVoltOffset", 3)
c.load_entry_object("marikoEmcDvbShift", 0)
# Advanced memory config
c.load_entry_object("t1_tRCD", 5)
c.load_entry_object("t2_tRP", 5)
c.load_entry_object("t3_tRAS", 5)
c.load_entry_object("t4_tRRD", 5)
c.load_entry_object("t5_tRFC", 5)
c.load_entry_object("t6_tRTW", 5)
c.load_entry_object("t7_tWTR", 5)
c.load_entry_object("t8_tREFI", 5)
c.load_entry_object("mem_burst_latency", 5)
c.load_entry_object("marikoCpuVmin", 3)
c.load_entry_object("eristaGpuVmin", 3)
c.load_entry_object("marikoGpuVmin", 3)
c.load_entry_object("marikoGpuVmax", 3)
# GPU voltage arrays
for freq in [
"76800", "153600", "230400", "307200", "384000", "460800", "537600",
"614400", "691200", "768000", "844800", "921600", "998400", "1075200",
"1152000", "1228800", "1267200", "1305600", "1344000", "1382400",
"1420800", "1459200", "1497600", "1536000"
]:
c.load_entry_object(f"g_volt_{freq}", 3)
for e_freq in [
"76800", "153600", "230400", "307200", "384000", "460800", "537600",
"614400", "691200", "768000", "844800", "921600", "998400", "1075200"# ,
# "1152000", "1228800"
]:
c.load_entry_object(f"g_volt_e_{e_freq}", 3)
# Timings
timing_vars = [
"d.t1_tRCD",
"d.t2_tRP",
"d.t3_tRAS",
"d.t4_tRRD",
"d.t5_tRFC",
"d.t6_tRTW",
"d.t7_tWTR",
"d.t8_tREFI"
]
timing_preset_default = [
0, # tRCD
0, # tRP
0, # tRAS
0, # tRRD
0, # tRFC
0, # tRTW
0, # tWTR
0, # tREFI
]
timing_preset_aamgcl_c = [
4, # tRCD
4, # tRP
5, # tRAS
5, # tRRD
5, # tRFC
5, # tRTW
7, # tWTR
6, # tREFI
]
timing_preset_aamgcl_st = [
4, # tRCD
4, # tRP
8, # tRAS
6, # tRRD
5, # tRFC
7, # tRTW
8, # tWTR
6, # tREFI
]
timing_preset_mgcj_c = [
3, # tRCD
2, # tRP
4, # tRAS
2, # tRRD
4, # tRFC
4, # tRTW
4, # tWTR
6, # tREFI
]
timing_preset_mgcj_st = [
4, # tRCD
3, # tRP
8, # tRAS
2, # tRRD
5, # tRFC
4, # tRTW
4, # tWTR
6, # tREFI
]
timing_preset_ab_mgcl_c = [
4, # tRCD
4, # tRP
4, # tRAS
4, # tRRD
4, # tRFC
5, # tRTW
6, # tWTR
6, # tREFI
]
timing_preset_ab_mgcl_st = [
4, # tRCD
4, # tRP
8, # tRAS
5, # tRRD
5, # tRFC
6, # tRTW
8, # tWTR
6, # tREFI
]
timing_preset_hb_mgch_c = [
4, # tRCD
4, # tRP
4, # tRAS
0, # tRRD
1, # tRFC
5, # tRTW
4, # tWTR
6, # tREFI
]
timing_preset_hb_mgch_st = [
4, # tRCD
5, # tRP
9, # tRAS
1, # tRRD
2, # tRFC
6, # tRTW
4, # tWTR
6, # tREFI
]
timing_preset_wtf_c = [
4, # tRCD
4, # tRP
2, # tRAS
5, # tRRD
4, # tRFC
6, # tRTW
3, # tWTR
6, # tREFI
]
timing_preset_wtf_st = [
5, # tRCD
5, # tRP
4, # tRAS
5, # tRRD
5, # tRFC
6, # tRTW
5, # tWTR
6, # tREFI
]
timing_preset_wte_c = [
2, # tRCD
2, # tRP
2, # tRAS
2, # tRRD
4, # tRFC
4, # tRTW
4, # tWTR
6, # tREFI
]
timing_preset_wte_st = [
3, # tRCD
5, # tRP
3, # tRAS
3, # tRRD
5, # tRFC
4, # tRTW
5, # tWTR
6, # tREFI
]
timing_preset_wtb_c = [
4, # tRCD
4, # tRP
5, # tRAS
5, # tRRD
2, # tRFC
6, # tRTW
5, # tWTR
6, # tREFI
]
timing_preset_wtb_st = [
6, # tRCD
6, # tRP
7, # tRAS
7, # tRRD
2, # tRFC
6, # tRTW
5, # tWTR
6, # tREFI
]
timing_preset_nee_c = [
3, # tRCD
3, # tRP
2, # tRAS
2, # tRRD
5, # tRFC
5, # tRTW
4, # tWTR
6, # tREFI
]
timing_preset_nee_st = [
4, # tRCD
4, # tRP
4, # tRAS
3, # tRRD
7, # tRFC
6, # tRTW
5, # tWTR
6, # tREFI
]
timing_preset_nme_c = [
2, # tRCD
2, # tRP
1, # tRAS
0, # tRRD
1, # tRFC
4, # tRTW
3, # tWTR
6, # tREFI
]
timing_preset_nme_st = [
3, # tRCD
3, # tRP
4, # tRAS
0, # tRRD
1, # tRFC
4, # tRTW
4, # tWTR
6, # tREFI
]
# INI
skinTarget = 54 # default value
PROFILES = {
"V1_Erista": {
"tskin_pcb_coefficients_console_on_fwdbg": 'str!"[6396, 119440]"',
"tskin_pcb_coefficients_handheld_on_fwdbg": 'str!"[5817, 129580]"',
"tskin_soc_coefficients_console_on_fwdbg": 'str!"[6182, 112480]"',
"tskin_soc_coefficients_handheld_on_fwdbg": 'str!"[5464, 174190]"',
},
"V2_Mariko": {
"tskin_pcb_coefficients_console_on_fwdbg": 'str!"[7338, 112161]"',
"tskin_pcb_coefficients_handheld_on_fwdbg": 'str!"[6357, 168124]"',
"tskin_soc_coefficients_console_on_fwdbg": 'str!"[6728, 129810]"',
"tskin_soc_coefficients_handheld_on_fwdbg": 'str!"[5675, 203453]"',
},
"Lite_Mariko": {
"tskin_pcb_coefficients_console_on_fwdbg": 'str!"[7338, 112161]"',
"tskin_pcb_coefficients_handheld_on_fwdbg": 'str!"[5594, 209601]"',
"tskin_soc_coefficients_console_on_fwdbg": 'str!"[6728, 129810]"',
"tskin_soc_coefficients_handheld_on_fwdbg": 'str!"[5235, 199759]"',
},
"OLED_Mariko": {
"tskin_pcb_coefficients_console_on_fwdbg": 'str!"[8051, -45213]"',
"tskin_pcb_coefficients_handheld_on_fwdbg": 'str!"[7176, -33954]"',
"tskin_soc_coefficients_console_on_fwdbg": 'str!"[7831, 57590]"',
"tskin_soc_coefficients_handheld_on_fwdbg": 'str!"[9029, 4274]"',
},
}
BATTERY_SAVE_OPTIONS = {
"bgtc": {
"enable_halfawake": "u32!0x0",
"minimum_interval_normal": "u32!0x7FFFFFFF",
"minimum_interval_save": "u32!0x7FFFFFFF",
"battery_threshold_save": "u32!0x64",
"battery_threshold_stop": "u32!0x64",
},
"npns": {
"background_processing": "u8!0x0",
"sleep_periodic_interval": "u32!0x7FFFFFFF",
"sleep_processing_timeout": "u32!0x0",
"sleep_max_try_count": "u32!0x0",
},
"ns.notification": {
"enable_download_task_list": "u8!0x0",
"enable_download_ticket": "u8!0x0",
"enable_network_update": "u8!0x0",
"enable_random_wait": "u8!0x0",
"enable_request_on_cold_boot": "u8!0x0",
"enable_send_rights_usage_status_request": "u8!0x0",
"enable_sync_elicense_request": "u8!0x0",
"enable_version_list": "u8!0x0",
"retry_interval_min": "u32!0x7FFFFFFF",
"retry_interval_max": "u32!0x7FFFFFFF",
"version_list_waiting_limit_bias": "u32!0x7FFFFFFF",
"version_list_waiting_limit_min": "u32!0x7FFFFFFF",
},
"account": {
"na_required_for_network_service": "u8!0x0",
"na_license_verification_enabled": "u8!0x0",
},
"account.daemon": {
"background_awaking_periodicity": "u32!0x7FFFFFFF",
"initial_schedule_delay": "u32!0x7FFFFFFF",
"profile_sync_interval": "u32!0x7FFFFFFF",
"na_info_refresh_interval": "u32!0x7FFFFFFF",
},
"capsrv": {
"enable_album_screenshot_filedata_verification": "u8!0x0",
"enable_album_movie_filehash_verification": "u8!0x0",
"enable_album_movie_filesign_verification": "u8!0x0",
},
"friends": {
"background_processing": "u8!0x0",
},
"notification.presenter": {
"snooze_interval_in_seconds": "u32!0x7FFFFFFF",
"connection_retry_count": "u32!0x0",
"alarm_pattern_total_repeat_count": "u32!0x0",
"alarm_pattern_with_vibration_repeat_count": "u32!0x0",
},
"prepo": {
"transmission_interval_min": "u32!0x7FFFFFFF",
"transmission_retry_interval_min": "u32!0x7FFFFFFF",
"transmission_retry_interval_max": "u32!0x7FFFFFFF",
"transmission_interval_in_sleep": "u32!0x7FFFFFFF",
"statistics_save_interval_min": "u32!0x7FFFFFFF",
"statistics_post_interval": "u32!0x7FFFFFFF",
"save_system_report": "u8!0x0",
},
"olsc": {
"default_auto_upload_global_setting": "u8!0x0",
"default_auto_download_global_setting": "u8!0x0",
"autonomy_registration_interval_seconds": "u32!0x7FFFFFFF",
"network_service_license_info_cache_expiration_seconds": "u32!0x7FFFFFFF",
"postponed_transfer_task_processing_interval_seconds": "u32!0x7FFFFFFF",
"retry_offset_seconds": "u32!0x7FFFFFFF",
"network_trouble_detection_span_seconds": "u32!0x7FFFFFFF",
"network_connection_polling_interval_seconds": "u32!0x7FFFFFFF",
"is_save_data_backup_policy_check_required": "u8!0x0",
"is_global_transfer_task_autonomy_registration_enabled": "u8!0x0",
"is_on_event_transfer_task_registration_enabled": "u8!0x0",
"is_periodic_transfer_task_registration_enabled": "u8!0x0",
},
"ntc": {
"is_autonomic_correction_enabled": "u8!0x0",
"autonomic_correction_interval_seconds": "u32!0x7FFFFFFF",
"autonomic_correction_failed_retry_interval_seconds": "u32!0x7FFFFFFF",
"autonomic_correction_immediate_try_count_max": "u32!0x0",
"autonomic_correction_immediate_try_interval_milliseconds": "u32!0x7FFFFFFF",
},
"systemupdate": {
"bgnup_retry_seconds": "u32!0x7FFFFFFF",
},
"ns.rights": {
"skip_account_validation_on_rights_check": "u8!0x1",
"next_available_time_of_unexpected_error": "u32!0x7FFFFFFF",
},
"pctl": {
"intermittent_task_interval_seconds": "u32!0x7FFFFFFF",
},
"sprofile": {
"adjust_polling_interval_by_profile": "u8!0x0",
"polling_interval_sec_max": "u32!0x7FFFFFFF",
"polling_interval_sec_min": "u32!0x7FFFFFFF",
},
}
PSM_OPTIONS = [
{"name": "1024mA", "value": "u32!0x400"},
{"name": "1280mA", "value": "u32!0x500"},
{"name": "1536mA", "value": "u32!0x600"},
{"name": "1660mA (Lite Default)", "value": "u32!0x67C"},
{"name": "1792mA", "value": "u32!0x700"},
{"name": "2048mA (Default)", "value": "u32!0x800"},
{"name": "2304mA (UNSAFE)", "value": "u32!0x900"},
{"name": "2560mA (UNSAFE)", "value": "u32!0xA00"},
{"name": "2816mA (DANGEROUS)", "value": "u32!0xB00"},
{"name": "3072mA (DANGEROUS)", "value": "u32!0xC00"},
]
skin_t_entries = {
"use_configurations_on_fwdbg": "u8!0x1",
"tskin_rate_table_console_on_fwdbg": f'str!"[[-1000000,40000,0,0],[36000,43000,51,51],[43000,49000,51,128],[49000,{skinTarget}000,128,255],[{skinTarget}000,1000000,255,255]]"',
"tskin_rate_table_handheld_on_fwdbg": f'str!"[[-1000000,40000,0,0],[36000,43000,51,51],[43000,49000,51,128],[49000,{skinTarget}000,128,255],[{skinTarget}000,1000000,255,255]]"',
"holdable_tskin": "u32!0xEA60",
"touchable_tskin": "u32!0xEA60"
}
# Thresholds
mariko_meme_threshold = 1536000
mariko_dangerous_gpu_threshold = 1382400
mariko_unsafe_gpu_threshold = 1152000
erista_dangerous_gpu_threshold = 1151000
erista_unsafe_gpu_threshold = 922000
mariko_voltage_step = 5
erista_voltage_step = 5
mariko_gpu_offset_max = 50
mariko_gpu_min_volt = 480
erista_gpu_min_volt = 700
mariko_gpu_max_volt = 960
erista_gpu_max_volt = 1000
mariko_gpu_max_vmin = 700
erista_gpu_max_vmin = 850
mariko_cpu_min_vmin = 700
mariko_cpu_max_vmin = 750
# TODO: Make more stuff configurable
# COLORS
danger_color = (255, 0, 0, 255)
unsafe_color = (255, 165, 0, 255)
safe_color = (255, 255, 255, 255)