Settings services: Difference between revisions

Lioncache (talk | contribs)
Document the available region codes based off how they're used from within the erpt module. These are the same values, given erpt calls into the settings module to retrieve the region code and uses it to retrieve a string representation of the region
No edit summary
 
(107 intermediate revisions by 7 users not shown)
Line 4: Line 4:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Cmd || Name || Notes
! Cmd || Name
|-
| 0 || [[#GetLanguageCode]]
|-
| 1 || [[#GetAvailableLanguageCodes]]
|-
|-
| 0 || GetLanguageCode || No input, returns an output [[#LanguageCode]]. This is the current system language.
| 2 || [4.0.0+] [[#MakeLanguageCode]]
|-
|-
| 1 || GetAvailableLanguageCodes || Takes a type-0xA buffer containing the [[#LanguageCode]] output array, returns an output s32.
| 3 || [[#GetAvailableLanguageCodeCount]]
|-
|-
| 2 || [4.0.0+] MakeLanguageCode || Takes an input [[#Language]], returns an output [[#LanguageCode]].
| 4 || [[#GetRegionCode]]
|-
|-
| 3 || GetAvailableLanguageCodeCount || No input, returns an output s32.
| 5 || [4.0.0+] [[#GetAvailableLanguageCodes2]]
|-
|-
| 4 || GetRegionCode || No input, returns an [[#RegionCode]].
| 6 || [4.0.0+] [[#GetAvailableLanguageCodeCount2]]
|-
|-
| 5 || [4.0.0+] GetAvailableLanguageCodes2 || Takes a type-0x6 buffer containing the [[#LanguageCode]] output array, returns an output s32.
| 7 || [4.0.0+] [[#GetKeyCodeMap]]
|-
|-
| 6 || [4.0.0+] GetAvailableLanguageCodeCount2 || No input, returns an output s32.
| 8 || [5.0.0+] [[#GetQuestFlag]]
|-
|-
| 7 || [4.0.0+] GetKeyCodeMap ||
| 9 || [6.0.0+] [[#GetKeyCodeMap2]]
|-
|-
| 8 || [5.0.0+] GetQuestFlag || Identical to "set:sys" [[#set:sys|GetQuestFlag]].
| 10 || [9.0.0+] [[#GetFirmwareVersionForDebug]]
|-
| 11 || [10.1.0+] [[#GetDeviceNickName]]
|-
| 12 || [18.0.0+] GetKeyCodeMapByPort
|}
|}


Line 31: Line 39:
* [4.0.0+] When the input [[#Language]] is larger than the cached total_entries from the above command output, or [[#Language]] is negative, command MakeLanguageCode is used instead of the array.
* [4.0.0+] When the input [[#Language]] is larger than the cached total_entries from the above command output, or [[#Language]] is negative, command MakeLanguageCode is used instead of the array.


== GetKeyCodeMap ==
== GetLanguageCode ==
Takes a type-0x16 output buffer containing KeyCodeMap, official sw uses fixed size 0x1000. This is probably related to HID keyboard.
No input, returns an output [[#LanguageCode]]. This is the current system language.
 
== GetAvailableLanguageCodes ==
Takes a type-0xA buffer containing the [[#LanguageCode]] output array, returns an output s32.
 
== MakeLanguageCode ==
Takes an input [[#Language]], returns an output [[#LanguageCode]].


== Language ==
== GetAvailableLanguageCodeCount ==
"nn::settings::Language" (s32) is basically array indices in the output array from GetAvailableLanguageCodes.
No input, returns an output s32.


== LanguageCode ==
== GetRegionCode ==
This is "nn::settings::LanguageCode".
No input, returns a [[#RegionCode_2|RegionCode]].


This is an u64, which is a NUL-terminated string.
== GetAvailableLanguageCodes2 ==
Takes a type-0x6 buffer containing the [[#LanguageCode]] output array, returns an output s32.


{| class="wikitable" border="1"
== GetAvailableLanguageCodeCount2 ==
|-
No input, returns an output s32.
! Array-index / [[#Language]] || [[#LanguageCode]] || Icon [[NCA_Content_FS#FS-type3|language]] filename
 
|-
== GetKeyCodeMap ==
| 0 || ja || "Japanese"
Takes a type-0x16 output buffer containing KeyCodeMap, official sw uses fixed size 0x1000. This is probably related to HID keyboard.
|-
| 1 || en-US || "AmericanEnglish"
|-
| 2 || fr || "French"
|-
| 3 || de || "German"
|-
| 4 || it || "Italian"
|-
| 5 || es || "Spanish"
|-
| 6 || zh-CN || "Chinese"
|-
| 7 || ko || "Korean"
|-
| 8 || nl || "Dutch"
|-
| 9 || pt || "Portuguese"
|-
| 10 || ru || "Russian"
|-
| 11 || zh-TW || "Taiwanese"
|-
| 12 || en-GB || "BritishEnglish"
|-
| 13 || fr-CA || "CanadianFrench"
|-
| 14 || es-419 || "LatinAmericanSpanish"
|-
| [4.0.0+] 15 || zh-Hans || "SimplifiedChinese"
|-
| [4.0.0+] 16 || zh-Hant || "TraditionalChinese"
|}


== RegionCode ==
== GetFirmwareVersionForDebug ==
Takes a type-0x16 output buffer containing a 0x80-byte "nn::oe::FirmwareVersionForDebug".


A region code is a signed 32-bit value representing a particular region. Currently the available regions defined by the system are as follows:
This uses [[#GetDebugModeFlag]] internally, if the output flag is 0 an error is thrown.


{| class="wikitable" border="1"
This runs the same code as GetFirmwareVersion2, with the last 0x80-bytes of the [[System_Version_Title|output]] being copied to the output buffer.
|-
! Value || Region
|-
| 0 || Japan
|-
| 1 || USA
|-
| 2 || Europe
|-
| 3 || Australia
|-
| 4 || China
|-
| 5 || Korea
|-
| 6 || Taiwan
|-
| Any other value || Considered an unknown region
|-
|}


= set:fd =
= set:fd =
This is "nn::settings::IFirmwareDebugSettingsServer".
This is "nn::settings::IFirmwareDebugSettingsServer".


[4.0.0+] Only exposed if in [[SPL_services#IsDebugMode|debug mode]].
[4.0.0+] Only exposed if in [[SPL_services#IsDevelopment|development mode]].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Cmd || Name || Notes
! Cmd || Name
|-
| 2 || SetSettingsItemValue
|-
| 3 || ResetSettingsItemValue
|-
|-
| 2 || SetSettingsItemValue ||
| 4 || [[#ISettingsItemKeyIterator|CreateSettingsItemKeyIterator]]
|-
|-
| 3 || ResetSettingsItemValue ||
| 10 || [4.0.0+] ReadSettings
|-
|-
| 4 || CreateSettingsItemKeyIterator || Returns an [[#ISettingsItemKeyIterator]].
| 11 || [4.0.0+] ResetSettings
|-
|-
| 10 || [4.0.0+] ReadSettings ||
| 20 || [4.0.0+] SetWebInspectorFlag
|-
|-
| 11 || [4.0.0+] ResetSettings ||
| 21 || [4.0.0+] SetAllowedSslHosts
|-
|-
| 20 || [4.0.0+] SetWebInspectorFlag ||
| 22 || [4.0.0+] SetHostFsMountPoint
|-
|-
| 21 || [4.0.0+] SetAllowedSslHosts ||
| 23 || [9.0.0+] SetMemoryUsageRateFlag
|-
|-
| 22 || [4.0.0+] SetHostFsMountPoint ||
| 24 || [20.0.0+] CommitSettings
|}
|}


== ISettingsItemKeyIterator ==
== ISettingsItemKeyIterator ==
This is "nn::settings::ISettingsItemKeyIterator".
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 152: Line 121:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || GetBluetoothBdAddress
| 0 || [[#GetBluetoothBdAddress]]
|-
|-
| 1 || GetConfigurationId1
| 1 || [[#GetConfigurationId1]]
|-
|-
| 2 || GetAccelerometerOffset
| 2 || [[#GetAccelerometerOffset]]
|-
|-
| 3 || GetAccelerometerScale
| 3 || [[#GetAccelerometerScale]]
|-
|-
| 4 || GetGyroscopeOffset
| 4 || [[#GetGyroscopeOffset]]
|-
|-
| 5 || GetGyroscopeScale
| 5 || [[#GetGyroscopeScale]]
|-
|-
| 6 || GetWirelessLanMacAddress
| 6 || [[#GetWirelessLanMacAddress]]
|-
|-
| 7 || GetWirelessLanCountryCodeCount
| 7 || [[#GetWirelessLanCountryCodeCount]]
|-
|-
| 8 || GetWirelessLanCountryCodes
| 8 || [[#GetWirelessLanCountryCodes]]
|-
|-
| 9 || GetSerialNumber
| 9 || [[#GetSerialNumber]]
|-
|-
| 10 || SetInitialSystemAppletProgramId
| 10 || [[#SetInitialSystemAppletProgramId]]
|-
|-
| 11 || SetOverlayDispProgramId
| 11 || [[#SetOverlayDispProgramId]]
|-
|-
| 12 || GetBatteryLot
| 12 || [[#GetBatteryLot]]
|-
|-
| 14 || [[#GetEciDeviceCertificate]]
| 14 || [[#GetEciDeviceCertificate]]
Line 194: Line 163:
| 21 || [[#GetEticketDeviceKey]]
| 21 || [[#GetEticketDeviceKey]]
|-
|-
| 22 || GetSpeakerParameter
| 22 || [[#GetSpeakerParameter]]
|-
|-
| 23 || [4.0.0+] GetLcdVendorId
| 23 || [4.0.0+] [[#GetLcdVendorId]]
|-
|-
| 24 || [5.0.0+] [[#GetEciDeviceCertificate2]]
| 24 || [5.0.0+] [[#GetEciDeviceCertificate2]]
Line 202: Line 171:
| 25 || [5.0.0+] [[#GetEciDeviceKey2]]
| 25 || [5.0.0+] [[#GetEciDeviceKey2]]
|-
|-
| 26 || [5.0.0+] GetAmiiboKey
| 26 || [5.0.0+] [[#GetAmiiboKey]]
|-
| 27 || [5.0.0+] [[#GetAmiiboEcqvCertificate]]
|-
| 28 || [5.0.0+] [[#GetAmiiboEcdsaCertificate]]
|-
| 29 || [5.0.0+] [[#GetAmiiboEcqvBlsKey]]
|-
| 30 || [5.0.0+] [[#GetAmiiboEcqvBlsCertificate]]
|-
| 31 || [5.0.0+] [[#GetAmiiboEcqvBlsRootCertificate]]
|-
| 32 || [5.0.0+] [[#GetUsbTypeCPowerSourceCircuitVersion]]
|-
| 33 || [8.1.1+] [[#GetAnalogStickModuleTypeL]]
|-
|-
| 27 || [5.0.0+] GetAmiiboEcqvCertificate
| 34 || [8.1.1+] [[#GetAnalogStickModelParameterL]]
|-
|-
| 28 || [5.0.0+] GetAmiiboEcdsaCertificate
| 35 || [8.1.1+] [[#GetAnalogStickFactoryCalibrationL]]
|-
|-
| 29 || [5.0.0+] GetAmiiboEcqvBlsKey
| 36 || [8.1.1+] [[#GetAnalogStickModuleTypeR]]
|-
|-
| 30 || [5.0.0+] GetAmiiboEcqvBlsCertificate
| 37 || [8.1.1+] [[#GetAnalogStickModelParameterR]]
|-
|-
| 31 || [5.0.0+] GetAmiiboEcqvBlsRootCertificate
| 38 || [8.1.1+] [[#GetAnalogStickFactoryCalibrationR]]
|-
|-
| 32 || [5.0.0+] GetUsbTypeCPowerSourceCircuitVersion
| 39 || [8.1.1+] [[#GetConsoleSixAxisSensorModuleType]]
|-
|-
| 33 || [6.0.0+] GetBatteryVersion
| 40 || [8.1.1+] [[#GetConsoleSixAxisSensorHorizontalOffset]]
|-
| 41 || [6.0.0+] [[#GetBatteryVersion]]
|-
| 42 || [10.0.0+] [[#GetDeviceId]]
|-
| 43 || [10.0.0+] [[#GetConsoleSixAxisSensorMountType]]
|}
|}


Used for accessing data calibrated at the factory.
Used for accessing data [[Calibration|calibrated]] at the factory.
 
== GetBluetoothBdAddress ==
No input. Returns a [[#BdAddress|BdAddress]].
 
== GetConfigurationId1 ==
No input. Returns a [[#ConfigurationId1|ConfigurationId1]].
 
== GetAccelerometerOffset ==
No input. Returns a [[#AccelerometerOffset|AccelerometerOffset]].
 
== GetAccelerometerScale ==
No input. Returns a [[#AccelerometerScale|AccelerometerScale]].
 
== GetGyroscopeOffset ==
No input. Returns a [[#GyroscopeOffset|GyroscopeOffset]].
 
== GetGyroscopeScale ==
No input. Returns a [[#GyroscopeScale|GyroscopeScale]].
 
== GetWirelessLanMacAddress ==
No input. Returns a [[#MacAddress|MacAddress]].
 
== GetWirelessLanCountryCodeCount ==
No input. Returns a s32 '''OutCount'''.
 
== GetWirelessLanCountryCodes ==
Takes a type-0x16 output buffer containing an array of [[#CountryCode|CountryCode]]. Returns a s32 '''OutCount'''.
 
== GetSerialNumber ==
No input. Returns a [[#SerialNumber|SerialNumber]].
 
== SetInitialSystemAppletProgramId ==
Takes an input [[NCM_services#ProgramId|ProgramId]]. No output.
 
== SetOverlayDispProgramId ==
Takes an input [[NCM_services#ProgramId|ProgramId]]. No output.
 
== GetBatteryLot ==
No input. Returns a [[#BatteryLot|BatteryLot]].


== GetEciDeviceCertificate ==
== GetEciDeviceCertificate ==
Takes a type-0x16 output buffer with fixed size 0x180.
Takes a type-0x16 output buffer containing a [[#EccB233DeviceCertificate|EccB233DeviceCertificate]]. No output.


Returns the device certificate (ECC signed). This is identical to 3DS DeviceCert/CTCert besides the strings. NIM loads the DeviceId from this.
Returns the device certificate (ECC signed). This is identical to 3DS DeviceCert/CTCert besides the strings. NIM loads the DeviceId from this.


== GetEticketDeviceCertificate ==
== GetEticketDeviceCertificate ==
Takes a type-0x16 output buffer with fixed size 0x240.
Takes a type-0x16 output buffer containing a [[#Rsa2048DeviceCertificate|Rsa2048DeviceCertificate]]. No output.


Returns the ETicket certificate (RSA signed).
Returns the ETicket certificate (RSA signed).


== GetSslKey ==
== GetSslKey ==
Takes a type-0x16 output buffer with fixed size 0x134.
Takes a type-0x16 output buffer containing a [[#SslKey|SslKey]]. No output.


Returns the extended SSL key (0x130 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal SSL key (0x110 bytes).
Returns the extended SSL key (0x130 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal SSL key (0x110 bytes).
Line 239: Line 267:


== GetSslCertificate ==
== GetSslCertificate ==
Takes a type-0x16 output buffer with fixed size 0x804.
Takes a type-0x16 output buffer containing a [[#SslCertificate|SslCertificate]]. No output.
 
Returns a [[Settings_services#setcal_Container_Structure|container]] with the plaintext SSL certificate.


Used by SSL-sysmodule, see [[SSL_services|here]].
Used by SSL-sysmodule, see [[SSL_services|here]].


== GetGameCardKey ==
== GetGameCardKey ==
Takes a type-0x16 output buffer with fixed size 0x134.
Takes a type-0x16 output buffer containing a [[#GameCardKey|GameCardKey]]. No output.


Returns the extended GameCard key (0x130 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal GameCard key (0x110 bytes).
Returns the extended GameCard key (0x130 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal GameCard key (0x110 bytes).


== GetGameCardCertificate ==
== GetGameCardCertificate ==
Takes a type-0x16 output buffer with fixed size 0x404.
Takes a type-0x16 output buffer containing a [[#GameCardCertificate|GameCardCertificate]]. No output.


Returns a [[Settings_services#setcal_Container_Structure|container]] with the GameCard certificate.
== GetEciDeviceKey ==
No input. Returns an [[#EccB233DeviceKey|EccB233DeviceKey]].


== GetEciDeviceKey ==
Returns the extended device ECC-B233 key (0x50 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal device ECC-B233 key (0x30 bytes).
Returns the extended device ECC-B233 key (0x50 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal device ECC-B233 key (0x30 bytes).


== GetEticketDeviceKey ==
== GetEticketDeviceKey ==
Takes a type-0x16 output buffer with fixed size 0x244.
Takes a type-0x16 output buffer containing a [[#Rsa2048DeviceKey|Rsa2048DeviceKey]]. No output.


Returns the extended ETicket RSA-2048 key (0x240 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal ETicket RSA-2048 key (0x220 bytes).
Returns the extended ETicket RSA-2048 key (0x240 bytes) from [[Calibration#CAL0|CAL0]]. If the extended key is not programmed then it falls back to the normal ETicket RSA-2048 key (0x220 bytes).
== GetSpeakerParameter ==
No input. Returns a [[#SpeakerParameter|SpeakerParameter]].
== GetLcdVendorId ==
No input. Returns a [[Calibration#LcdVendorId|LcdVendorId]].


== GetEciDeviceCertificate2 ==
== GetEciDeviceCertificate2 ==
Same as [[#GetEciDeviceCertificate]], but returns a RSA-2048 variant of the device certificate.
Same as [[#GetEciDeviceCertificate]], but returns a [[#Rsa2048DeviceCertificate|RSA-2048]] variant of the device certificate.


== GetEciDeviceKey2 ==
== GetEciDeviceKey2 ==
Same as [[#GetEciDeviceKey]], but returns a RSA-2048 variant of the device key.
Same as [[#GetEciDeviceKey]], but returns a [[#Rsa2048DeviceKey|RSA-2048]] variant of the device key.
 
== GetAmiiboKey ==
No input. Returns an [[#AmiiboKey|AmiiboKey]].
 
== GetAmiiboEcqvCertificate ==
No input. Returns an [[#AmiiboEcqvCertificate|AmiiboEcqvCertificate]].
 
== GetAmiiboEcdsaCertificate ==
No input. Returns an [[#AmiiboEcdsaCertificate|AmiiboEcdsaCertificate]].
 
== GetAmiiboEcqvBlsKey ==
No input. Returns an [[#AmiiboEcqvBlsKey|AmiiboEcqvBlsKey]].
 
== GetAmiiboEcqvBlsCertificate ==
No input. Returns an [[#AmiiboEcqvBlsCertificate|AmiiboEcqvBlsCertificate]].
 
== GetAmiiboEcqvBlsRootCertificate ==
No input. Returns an [[#AmiiboEcqvBlsRootCertificate|AmiiboEcqvBlsRootCertificate]].
 
== GetUsbTypeCPowerSourceCircuitVersion ==
No input. Returns an [[Calibration#UsbTypeCPowerSourceCircuit|UsbTypeCPowerSourceCircuitVersion]].
 
== GetAnalogStickModuleTypeL ==
No input. Returns an [[Calibration#AnalogStickModuleType|AnalogStickModuleType]].
 
== GetAnalogStickModelParameterL ==
No input. Returns an [[#AnalogStickModelParameter|AnalogStickModelParameter]].
 
== GetAnalogStickFactoryCalibrationL ==
No input. Returns an [[#AnalogStickFactoryCalibration|AnalogStickFactoryCalibration]].
 
== GetAnalogStickModuleTypeR ==
No input. Returns an [[Calibration#AnalogStickModuleType|AnalogStickModuleType]].


== setcal Container Structure ==
== GetAnalogStickModelParameterR ==
{| class="wikitable" border="1"
No input. Returns an [[#AnalogStickModelParameter|AnalogStickModelParameter]].
|-
 
! Offset
== GetAnalogStickFactoryCalibrationR ==
! Size
No input. Returns an [[#AnalogStickFactoryCalibration|AnalogStickFactoryCalibration]].
! Name
 
|-
== GetConsoleSixAxisSensorModuleType ==
| 0x0
No input. Returns a [[Calibration#ConsoleSixAxisSensorModuleType|ConsoleSixAxisSensorModuleType]].
| 0x4
 
| Size (same size used for decryption if needed)
== GetConsoleSixAxisSensorHorizontalOffset ==
|-
No input. Returns a [[#ConsoleSixAxisSensorHorizontalOffset|ConsoleSixAxisSensorHorizontalOffset]].
| 0x4
 
| {above size}
== GetBatteryVersion ==
| Actual data starts here.
No input. Returns a [[Calibration#BatteryVersion|BatteryVersion]].
|}
 
== GetDeviceId ==
No input. Returns an u64 '''DeviceId''' by reading and converting the hexadecimal string at offset 0xC6 inside [[#EccB233DeviceCertificate]] or [[#Rsa2048DeviceCertificate]].


This container is used for returning data with variable sizes.
== GetConsoleSixAxisSensorMountType ==
No input. Returns a [[Calibration#ConsoleSixAxisSensorMountType|ConsoleSixAxisSensorMountType]].


= set:sys =
= set:sys =
Line 294: Line 362:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || SetLanguageCode
| 0 || [[#SetLanguageCode]]
|-
|-
| 1 || SetNetworkSettings
| 1 || SetNetworkSettings
Line 326: Line 394:
| 16 || SetUserSystemClockContext
| 16 || SetUserSystemClockContext
|-
|-
| 17 || GetAccountSettings
| 17 || [[#GetAccountSettings]]
|-
|-
| 18 || SetAccountSettings
| 18 || [[#SetAccountSettings]]
|-
|-
| 19 || GetAudioVolume
| 19 || GetAudioVolume
Line 334: Line 402:
| 20 || SetAudioVolume
| 20 || SetAudioVolume
|-
|-
| 21 || GetEulaVersions
| 21 || [[#GetEulaVersions]]
|-
|-
| 22 || SetEulaVersions
| 22 || [[#SetEulaVersions]]
|-
|-
| 23 || [[#GetColorSetId]]
| 23 || [[#GetColorSetId]]
Line 350: Line 418:
| 28 || SetAutomaticApplicationDownloadFlag
| 28 || SetAutomaticApplicationDownloadFlag
|-
|-
| 29 || GetNotificationSettings
| 29 || [[#GetNotificationSettings]]
|-
|-
| 30 || SetNotificationSettings
| 30 || [[#SetNotificationSettings]]
|-
|-
| 31 || GetAccountNotificationSettings
| 31 || [[#GetAccountNotificationSettings]]
|-
|-
| 32 || SetAccountNotificationSettings
| 32 || [[#SetAccountNotificationSettings]]
|-
|-
| 35 || GetVibrationMasterVolume
| 35 || GetVibrationMasterVolume
Line 366: Line 434:
| 38 || [[#GetSettingsItemValue]]
| 38 || [[#GetSettingsItemValue]]
|-
|-
| 39 || GetTvSettings
| 39 || [[#GetTvSettings]]
|-
|-
| 40 || SetTvSettings
| 40 || [[#SetTvSettings]]
|-
|-
| 41 || GetEdid
| 41 || GetEdid
Line 378: Line 446:
| 44 || SetAudioOutputMode
| 44 || SetAudioOutputMode
|-
|-
| 45 || IsForceMuteOnHeadphoneRemoved
| 45 || GetSpeakerAutoMuteFlag ([1.0.0-12.1.0] IsForceMuteOnHeadphoneRemoved)
|-
|-
| 46 || SetForceMuteOnHeadphoneRemoved
| 46 || SetSpeakerAutoMuteFlag ([1.0.0-12.1.0] SetForceMuteOnHeadphoneRemoved)
|-
|-
| 47 || [[#GetQuestFlag]]
| 47 || [[#GetQuestFlag]]
Line 386: Line 454:
| 48 || SetQuestFlag
| 48 || SetQuestFlag
|-
|-
| 49 || GetDataDeletionSettings
| 49 || [[#GetDataDeletionSettings]]
|-
|-
| 50 || SetDataDeletionSettings
| 50 || [[#SetDataDeletionSettings]]
|-
|-
| 51 || GetInitialSystemAppletProgramId
| 51 || GetInitialSystemAppletProgramId
Line 398: Line 466:
| 54 || SetDeviceTimeZoneLocationName
| 54 || SetDeviceTimeZoneLocationName
|-
|-
| 55 || GetWirelessCertificationFileSize
| 55 || [[#GetWirelessCertificationFileSize]]
|-
|-
| 56 || [[Flash_Filesystem#PRODINFOF|GetWirelessCertificationFile]]
| 56 || [[#GetWirelessCertificationFile]]
|-
|-
| 57 || SetRegionCode
| 57 || [[#SetRegionCode]]
|-
|-
| 58 || GetNetworkSystemClockContext
| 58 || GetNetworkSystemClockContext
Line 414: Line 482:
| 62 || [[#GetDebugModeFlag]]
| 62 || [[#GetDebugModeFlag]]
|-
|-
| 63 || GetPrimaryAlbumStorage
| 63 || [[#GetPrimaryAlbumStorage]]
|-
|-
| 64 || SetPrimaryAlbumStorage
| 64 || [[#SetPrimaryAlbumStorage]]
|-
|-
| 65 || GetUsb30EnableFlag
| 65 || GetUsb30EnableFlag
Line 422: Line 490:
| 66 || SetUsb30EnableFlag
| 66 || SetUsb30EnableFlag
|-
|-
| 67 || GetBatteryLot
| 67 || [[#GetBatteryLot]]
|-
|-
| 68 || [[#GetSerialNumber]]
| 68 || [[#GetSerialNumber]]
Line 430: Line 498:
| 70 || SetNfcEnableFlag
| 70 || SetNfcEnableFlag
|-
|-
| 71 || GetSleepSettings
| 71 || [[#GetSleepSettings]]
|-
|-
| 72 || SetSleepSettings
| 72 || [[#SetSleepSettings]]
|-
|-
| 73 || GetWirelessLanEnableFlag
| 73 || GetWirelessLanEnableFlag
Line 438: Line 506:
| 74 || SetWirelessLanEnableFlag
| 74 || SetWirelessLanEnableFlag
|-
|-
| 75 || GetInitialLaunchSettings
| 75 || [[#GetInitialLaunchSettings]]
|-
|-
| 76 || SetInitialLaunchSettings
| 76 || [[#SetInitialLaunchSettings]]
|-
|-
| 77 || GetDeviceNickName
| 77 || [[#GetDeviceNickName]]
|-
|-
| 78 || SetDeviceNickName
| 78 || [[#SetDeviceNickName]]
|-
|-
| 79 || GetProductModel
| 79 || [[#GetProductModel]]
|-
|-
| 80 || GetLdnChannel
| 80 || GetLdnChannel
Line 468: Line 536:
| 89 || SetBluetoothEnableFlag
| 89 || SetBluetoothEnableFlag
|-
|-
| 90 || GetMiiAuthorId
| 90 || [[#GetMiiAuthorId]]
|-
|-
| 91 || SetShutdownRtcValue
| 91 || SetShutdownRtcValue
Line 526: Line 594:
| 118 || [3.0.0+] SetHeadphoneVolumeUpdateFlag
| 118 || [3.0.0+] SetHeadphoneVolumeUpdateFlag
|-
|-
| 119 || [3.0.0+] NeedsToUpdateHeadphoneVolume
| 119 || [3.0.0-14.1.2] NeedsToUpdateHeadphoneVolume
|-
|-
| 120 || [3.0.0+] GetPushNotificationActivityModeOnSleep
| 120 || [3.0.0+] GetPushNotificationActivityModeOnSleep
Line 536: Line 604:
| 123 || [4.0.0+] SetServiceDiscoveryControlSettings
| 123 || [4.0.0+] SetServiceDiscoveryControlSettings
|-
|-
| 124 || [4.0.0+] GetErrorReportSharePermission
| 124 || [4.0.0+] [[#GetErrorReportSharePermission]]
|-
|-
| 125 || [4.0.0+] SetErrorReportSharePermission
| 125 || [4.0.0+] [[#SetErrorReportSharePermission]]
|-
|-
| 126 || [4.0.0+] GetAppletLaunchFlags
| 126 || [4.0.0+] [[#GetAppletLaunchFlags]]
|-
|-
| 127 || [4.0.0+] SetAppletLaunchFlags
| 127 || [4.0.0+] [[#SetAppletLaunchFlags]]
|-
|-
| 128 || [4.0.0+] GetConsoleSixAxisSensorAccelerationBias
| 128 || [4.0.0+] GetConsoleSixAxisSensorAccelerationBias
Line 560: Line 628:
| 135 || [4.0.0+] SetConsoleSixAxisSensorAngularVelocityGain
| 135 || [4.0.0+] SetConsoleSixAxisSensorAngularVelocityGain
|-
|-
| 136 || [4.0.0+] GetKeyboardLayout
| 136 || [4.0.0+] [[#GetKeyboardLayout]]
|-
|-
| 137 || [4.0.0+] SetKeyboardLayout
| 137 || [4.0.0+] [[#SetKeyboardLayout]]
|-
|-
| 138 || [4.0.0+] GetWebInspectorFlag
| 138 || [4.0.0+] GetWebInspectorFlag
Line 586: Line 654:
| 148 || [5.0.0+] SetConsoleSixAxisSensorAngularAcceleration
| 148 || [5.0.0+] SetConsoleSixAxisSensorAngularAcceleration
|-
|-
| 149 || [5.0.0+] GetRebootlessSystemUpdateVersion
| 149 || [5.0.0+] [[#GetRebootlessSystemUpdateVersion]]
|-
| 150 || [5.0.0+] GetDeviceTimeZoneLocationUpdatedTime
|-
| 151 || [5.0.0+] SetDeviceTimeZoneLocationUpdatedTime
|-
| 152 || [6.0.0+] GetUserSystemClockAutomaticCorrectionUpdatedTime
|-
| 153 || [6.0.0+] SetUserSystemClockAutomaticCorrectionUpdatedTime
|-
| 154 || [6.0.0+] GetAccountOnlineStorageSettings
|-
| 155 || [6.0.0+] SetAccountOnlineStorageSettings
|-
| 156 || [6.0.0+] GetPctlReadyFlag
|-
| 157 || [6.0.0+] SetPctlReadyFlag
|-
| 158 || [8.1.1+] GetAnalogStickUserCalibrationL
|-
| 159 || [8.1.1+] SetAnalogStickUserCalibrationL
|-
| 160 || [8.1.1+] GetAnalogStickUserCalibrationR
|-
| 161 || [8.1.1+] SetAnalogStickUserCalibrationR
|-
| 162 || [6.0.0+] GetPtmBatteryVersion
|-
| 163 || [6.0.0+] SetPtmBatteryVersion
|-
| 164 || [6.0.0+] GetUsb30HostEnableFlag
|-
| 165 || [6.0.0+] SetUsb30HostEnableFlag
|-
| 166 || [6.0.0+] GetUsb30DeviceEnableFlag
|-
| 167 || [6.0.0+] SetUsb30DeviceEnableFlag
|-
| 168 || [7.0.0+] GetThemeId
|-
| 169 || [7.0.0+] SetThemeId
|-
| 170 || [7.0.0+] [[#GetChineseTraditionalInputMethod]]
|-
| 171 || [7.0.0+] [[#SetChineseTraditionalInputMethod]]
|-
| 172 || [7.0.0+] GetPtmCycleCountReliability
|-
| 173 || [7.0.0+] SetPtmCycleCountReliability
|-
| 174 || [8.1.1+] [[#GetHomeMenuScheme]]
|-
| 175 || [7.0.0+] GetThemeSettings
|-
| 176 || [7.0.0+] SetThemeSettings
|-
| 177 || [7.0.0+] GetThemeKey
|-
| 178 || [7.0.0+] SetThemeKey
|-
| 179 || [8.0.0+] GetZoomFlag
|-
| 180 || [8.0.0+] SetZoomFlag
|-
| 181 || [8.0.0+] [[#GetT]]
|-
| 182 || [8.0.0+] [[#SetT]]
|-
| 183 || [9.0.0+] [[#GetPlatformRegion]]
|-
| 184 || [9.0.0+] [[#SetPlatformRegion]]
|-
| 185 || [9.0.0+] [[#GetHomeMenuSchemeModel]]
|-
| 186 || [9.0.0+] [[#GetMemoryUsageRateFlag]]
|-
| 187 || [9.0.0+] [[#GetTouchScreenMode]]
|-
| 188 || [9.0.0+] [[#SetTouchScreenMode]]
|-
| 189 || [10.0.0+] [[#GetButtonConfigSettingsFull]]
|-
| 190 || [10.0.0+] [[#SetButtonConfigSettingsFull]]
|-
| 191 || [10.0.0+] [[#GetButtonConfigSettingsEmbedded]]
|-
| 192 || [10.0.0+] [[#SetButtonConfigSettingsEmbedded]]
|-
| 193 || [10.0.0+] [[#GetButtonConfigSettingsLeft]]
|-
| 194 || [10.0.0+] [[#SetButtonConfigSettingsLeft]]
|-
| 195 || [10.0.0+] [[#GetButtonConfigSettingsRight]]
|-
| 196 || [10.0.0+] [[#SetButtonConfigSettingsRight]]
|-
| 197 || [10.0.0+] [[#GetButtonConfigRegisteredSettingsEmbedded]]
|-
| 198 || [10.0.0+] [[#SetButtonConfigRegisteredSettingsEmbedded]]
|-
| 199 || [10.0.0+] [[#GetButtonConfigRegisteredSettings]]
|-
| 200 || [10.0.0+] [[#SetButtonConfigRegisteredSettings]]
|-
| 201 || [10.1.0+] [[#GetFieldTestingFlag]]
|-
| 202 || [10.1.0+] [[#SetFieldTestingFlag]]
|-
| 203 || [11.0.0+] GetPanelCrcMode
|-
| 204 || [11.0.0+] SetPanelCrcMode
|-
| 205 || [13.0.0+] GetNxControllerSettingsEx
|-
| 206 || [13.0.0+] SetNxControllerSettingsEx
|-
| 207 || [14.0.0+] GetHearingProtectionSafeguardFlag
|-
| 208 || [14.0.0+] SetHearingProtectionSafeguardFlag
|-
| 209 || [14.0.0+] GetHearingProtectionSafeguardRemainingTime
|-
| 210 || [14.0.0+] SetHearingProtectionSafeguardRemainingTime
|-
| 221 || [17.0.0+] GetForceMonauralOutputFlag
|-
| 222 || [17.0.0+] SetForceMonauralOutputFlag
|-
| 251 || [18.0.0+] GetAccountIdentificationSettings
|-
| 252 || [18.0.0+] SetAccountIdentificationSettings
|-
| 263 || [20.0.0+] AcquireVphymDirtyFlagEventHandle
|-
| 264 || [20.0.0+] GetVphymDirtyFlags
|-
| 282 || [20.0.0+] ConvertToProductModel
|-
| 283 || [20.0.0+] ConvertToProductModelName
|-
| 289 || [20.0.0+] GetDefaultAccountIdentificationFlagSet
|-
| 300 || [20.0.0+] AcquirePushNotificationDirtyFlagEventHandle
|-
| 301 || [20.0.0+] GetPushNotificationDirtyFlags
|-
| 306 || [20.0.0+] GetPinCodeReregistrationGuideAccounts
|-
| 307 || [20.0.0+] SetPinCodeReregistrationGuideAccounts
|}
|}


Official user-processes get a new service session handle each time a set:sys cmd is used, with the session being closed aftewards.
Official user-processes gets a new service session handle each time a set:sys cmd is used, with the session being closed afterwards.
 
== SetLanguageCode ==
Takes an input [[#LanguageCode]], no output.


== GetFirmwareVersion ==
== GetFirmwareVersion ==
Line 597: Line 816:


Then the above 0x100-byte data is copied to the output buffer.
Then the above 0x100-byte data is copied to the output buffer.
== GetAccountSettings ==
No input, returns an output [[#AccountSettings]].
== SetAccountSettings ==
Takes an input [[#AccountSettings]], no output.
== GetEulaVersions ==
Takes a type-0x6 output buffer containing an array of [[#EulaVersion]], returns an output s32 total_out.
== SetEulaVersions ==
Takes a type-0x5 input buffer containing an array of [[#EulaVersion]], no output.


== GetColorSetId ==
== GetColorSetId ==
Line 608: Line 839:
== SetColorSetId ==
== SetColorSetId ==
Takes an input s32, no output.
Takes an input s32, no output.
== GetNotificationSettings ==
No input, returns an output [[#NotificationSettings]].
== SetNotificationSettings ==
Takes an input [[#NotificationSettings]], no output.
== GetAccountNotificationSettings ==
Takes a type-0x6 output buffer containing an array of [[#AccountNotificationSettings]], returns an output s32 total_out.
== SetAccountNotificationSettings ==
Takes a type-0x5 input buffer containing an array of [[#AccountNotificationSettings]], no output.


== GetSettingsItemValue ==
== GetSettingsItemValue ==
Line 615: Line 858:


If loading from main config fails, it will also attempt to load config from various state if the input strings match hard-coded strings.
If loading from main config fails, it will also attempt to load config from various state if the input strings match hard-coded strings.
== GetTvSettings ==
No input, returns an output [[#TvSettings]].
== SetTvSettings ==
Takes an input [[#TvSettings]], no output.


== GetDebugModeFlag ==
== GetDebugModeFlag ==
Line 622: Line 871:


Returned retval is always 0.
Returned retval is always 0.
== GetPrimaryAlbumStorage ==
No input, returns an output s32 [[#PrimaryAlbumStorage]].
== SetPrimaryAlbumStorage ==
Takes an input s32 [[#PrimaryAlbumStorage]], no output.
== GetBatteryLot ==
No input, returns an output [[#BatteryLot]].


== GetSerialNumber ==
== GetSerialNumber ==
Returns the 0x18-byte SerialNumber string.
Returns the 0x18-byte SerialNumber string.
== GetSleepSettings ==
No input, returns an output [[#SleepSettings]].
== SetSleepSettings ==
Takes an input [[#SleepSettings]], no output.
== GetInitialLaunchSettings ==
No input, returns an output [[#InitialLaunchSettings]].
== SetInitialLaunchSettings ==
Takes an input [[#InitialLaunchSettings]], no output.
== GetDeviceNickName ==
Takes a type-0x16 output buffer containing a [[#DeviceNickName]].
With [10.1.0+] sdknso now uses the set cmd instead of the setsys cmd.
== SetDeviceNickName ==
Takes a type-0x15 input buffer containing a [[#DeviceNickName]].
== GetProductModel ==
No input, returns an output s32.
== GetMiiAuthorId ==
No input, returns an output "nn::util::Uuid".


== GetServiceDiscoveryControlSettings ==
== GetServiceDiscoveryControlSettings ==
Returns 0x01 if [[Safemode|safemode]] needs to be launched.
Returns an u32 [[#ServiceDiscoveryControlSettings|ServiceDiscoveryControlSettings]].
 
== GetErrorReportSharePermission ==
No input, returns an output s32 [[#ErrorReportSharePermission]].
 
== SetErrorReportSharePermission ==
Takes an input s32 [[#ErrorReportSharePermission]], no output.
 
== GetAppletLaunchFlags ==
No input, returns an u32 bitmask [[#AppletLaunchFlag]].
 
== SetAppletLaunchFlags ==
Takes an input u32 bitmask [[#AppletLaunchFlag]], no output.
 
== GetKeyboardLayout ==
No input, returns an output s32 [[#KeyboardLayout]].
 
== SetKeyboardLayout ==
Takes an input s32 [[#KeyboardLayout]], no output.


== GetAllowedSslHosts ==
== GetAllowedSslHosts ==
Takes a type-0x6 output buffer, returns an output s32. This buffer contains an array of 0x8-byte "nn::settings::system::AllowedSslHost" entries.
Takes a type-0x6 output buffer. Returns an output s32 entry count.
 
== GetRebootlessSystemUpdateVersion ==
No input, returns an output [[#RebootlessSystemUpdateVersion]].


== GetQuestFlag ==
== GetQuestFlag ==
Gets a flag determining whether the console is a kiosk unit (codenamed "Quest"). Used by qlaunch to determine whether to launch Retail Interactive Display Menu.
Gets a flag determining whether the console is a kiosk unit (codenamed "Quest"). Used by qlaunch to determine whether to launch Retail Interactive Display Menu.


=System Config=
== GetDataDeletionSettings ==
There's a common config title (*818), and a config title for each [[SPL_services|HardwareType]].
No input, returns an output [[#DataDeletionSettings]].
 
== SetDataDeletionSettings ==
Takes an input [[#DataDeletionSettings]], no output.
 
== GetWirelessCertificationFileSize ==
No input, returns an output u64 size.
 
== GetWirelessCertificationFile ==
Takes a type-0x6 output buffer, returns an output u64 size.
 
This gets the [[Flash_Filesystem#PRODINFOF|WirelessCertificationFile]].
 
== SetRegionCode ==
Takes an input s32 [[#RegionCode_2|RegionCode]], no output.
 
== GetChineseTraditionalInputMethod ==
No input, returns an output s32 [[#ChineseTraditionalInputMethod]].
 
== SetChineseTraditionalInputMethod ==
Takes an input s32 [[#ChineseTraditionalInputMethod]], no output.
 
== GetHomeMenuScheme ==
No input. Returns an output [[#HomeMenuScheme]].
 
The colors are loaded from [[Calibration]], with the set of fields to use selected by [[Calibration#ColorVariation|ColorVariation]].
 
== GetT ==
No input, returns an output u8 bool '''IsT'''.
 
[9.0.0+] This is a wrapper for [[#GetPlatformRegion]]: <code>IsT = (PlatformRegion == 2)</code>.
 
== SetT ==
Takes an input u8 bool '''IsT''', no output.
 
[9.0.0+] This is a wrapper for [[#SetPlatformRegion]]: <code>PlatformRegion = 1 + (IsT & 1)</code>.
 
== GetPlatformRegion ==
No input, returns an output s32.
 
== SetPlatformRegion ==
Takes an input s32, no output.
 
== GetHomeMenuSchemeModel ==
No input. Returns an output u32.
 
Loads the 0xB-byte setting <"settings_debug", "home_menu_scheme_model">, throwing an error if loading this fails. Depending on the content of the setting, the output u32 is either determined by the value of this setting, or loaded from [[Calibration#ColorModel|ColorModel]].
 
== GetMemoryUsageRateFlag ==
No input, returns an output u8 bool.
 
== GetTouchScreenMode ==
No input, returns an output s32.
 
Official sw loads the output as an u8 and copies it to an output [[#TouchScreenMode]].
 
== SetTouchScreenMode ==
Takes an input s32, no output.
 
Official sw sets the input to an u8 loaded from an input [[#TouchScreenMode]].
 
== GetButtonConfigSettingsFull ==
Takes a type-0x6 output buffer containing an array of [[#ButtonConfigSettings]], returns an output s32.
 
== SetButtonConfigSettingsFull ==
Takes a type-0x5 input buffer containing an array of [[#ButtonConfigSettings]], no output.
 
== GetButtonConfigSettingsEmbedded ==
Takes a type-0x6 output buffer containing an array of [[#ButtonConfigSettings]], returns an output s32.
 
== SetButtonConfigSettingsEmbedded ==
Takes a type-0x5 input buffer containing an array of [[#ButtonConfigSettings]], no output.
 
== GetButtonConfigSettingsLeft ==
Takes a type-0x6 output buffer containing an array of [[#ButtonConfigSettings]], returns an output s32.
 
== SetButtonConfigSettingsLeft ==
Takes a type-0x5 input buffer containing an array of [[#ButtonConfigSettings]], no output.
 
== GetButtonConfigSettingsRight ==
Takes a type-0x6 output buffer containing an array of [[#ButtonConfigSettings]], returns an output s32.
 
== SetButtonConfigSettingsRight ==
Takes a type-0x5 input buffer containing an array of [[#ButtonConfigSettings]], no output.
 
== GetButtonConfigRegisteredSettingsEmbedded ==
Takes a type-0x16 output buffer containing a [[#ButtonConfigRegisteredSettings]], no output.
 
== SetButtonConfigRegisteredSettingsEmbedded ==
Takes a type-0x15 input buffer containing a [[#ButtonConfigRegisteredSettings]], no output.
 
== GetButtonConfigRegisteredSettings ==
Takes a type-0x6 output buffer containing an array of [[#ButtonConfigRegisteredSettings]], returns an output s32.
 
== SetButtonConfigRegisteredSettings ==
Takes a type-0x5 input buffer containing an array of [[#ButtonConfigRegisteredSettings]], no output.
 
== GetFieldTestingFlag ==
No input, returns an output bool.
 
== SetFieldTestingFlag ==
Takes an input bool, no output.
 
= Language =
This is "nn::settings::Language".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || Japanese
|-
| 1 || AmericanEnglish
|-
| 2 || French
|-
| 3 || German
|-
| 4 || Italian
|-
| 5 || Spanish
|-
| 6 || Chinese
|-
| 7 || Korean
|-
| 8 || Dutch
|-
| 9 || Portuguese
|-
| 10 || Russian
|-
| 11 || Taiwanese
|-
| 12 || BritishEnglish
|-
| 13 || CanadianFrench
|-
| 14 || LatinAmericanSpanish
|-
| 15 || [4.0.0+] SimplifiedChinese
|-
| 16 || [4.0.0+] TraditionalChinese
|-
| 17 || [10.1.0+] BrazilianPortuguese
|}
 
= LanguageCode =
This is "nn::settings::LanguageCode". This is an u64, which is a NUL-terminated string.
 
{| class="wikitable" border="1"
|-
! Value || [[#Language]]
|-
| "ja" || Japanese
|-
| "en-US" || AmericanEnglish
|-
| "fr" || French
|-
| "de" || German
|-
| "it" || Italian
|-
| "es" || Spanish
|-
| "zh-CN" || Chinese
|-
| "ko" || Korean
|-
| "nl" || Dutch
|-
| "pt" || Portuguese
|-
| "ru" || Russian
|-
| "zh-TW" || Taiwanese
|-
| "en-GB" || BritishEnglish
|-
| "fr-CA" || CanadianFrench
|-
| "es-419" || LatinAmericanSpanish
|-
| "zh-Hans" || [4.0.0+] SimplifiedChinese
|-
| "zh-Hant" || [4.0.0+] TraditionalChinese
|-
| "pt-BR" || [10.1.0+] BrazilianPortuguese
|}
 
= AccelerometerOffset =
This is "nn::settings::factory::AccelerometerOffset".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x2 || X
|-
| 0x2 || 0x2 || Y
|-
| 0x4 || 0x2 || Z
|}
 
= AccelerometerScale =
This is "nn::settings::factory::AccelerometerScale".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x2 || X
|-
| 0x2 || 0x2 || Y
|-
| 0x4 || 0x2 || Z
|}
 
= AmiiboEcdsaCertificate =
This is "nn::settings::factory::AmiiboEcdsaCertificate". This is a 0x70-byte struct.
 
= AmiiboEcqvBlsCertificate =
This is "nn::settings::factory::AmiiboEcqvBlsCertificate". This is a 0x20-byte struct.
 
= AmiiboEcqvBlsKey =
This is "nn::settings::factory::AmiiboEcqvBlsKey". This is a 0x40-byte struct.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x40 || Key
|-
| 0x40 || 0x4 || KeyGeneration
|}
 
= AmiiboEcqvBlsRootCertificate =
This is "nn::settings::factory::AmiiboEcqvBlsRootCertificate". This is a 0x90-byte struct.
 
= AmiiboEcqvCertificate =
This is "nn::settings::factory::AmiiboEcqvCertificate". This is a 0x14-byte struct.
 
= AmiiboKey =
This is "nn::settings::factory::AmiiboKey". This is a 0x50-byte struct.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x50 || Key
|-
| 0x50 || 0x4 || KeyGeneration
|}
 
= AnalogStickFactoryCalibration =
This is "nn::settings::factory::AnalogStickFactoryCalibration". Same as [[Calibration#AnalogStickFactoryCalibration|AnalogStickFactoryCalibration]].
 
= AnalogStickModelParameter =
This is "nn::settings::factory::AnalogStickModelParameter". Same as [[Calibration#AnalogStickModelParameter|AnalogStickModelParameter]].
 
= BatteryLot =
This is "nn::settings::BatteryLot". This is a 0x18-byte struct.
 
= BdAddress =
This is "nn::settings::factory::BdAddress". This is a 0x6-byte struct.
 
= ConfigurationId1 =
This is "nn::settings::factory::ConfigurationId1". This is a 0x1E-byte struct.
 
Usually, this is a string with the following format:
  {EventType}_{ProductModelType}_{MajorVersion}_{MinorVersion}_{MicroVersion}
 
== EventType ==
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| "FP" || Functional prototype
|-
| "EP" || Engineering prototype
|-
| "DP" || Design prototype
|-
| "DPRD" || Design prototype for R&D
|-
| "HOAG" || Hoag prototype
|-
| "COPPER" || Copper prototype
|-
| "EDEV" || Extcon development kit for Icosa and Iowa
|-
| "SDEV" || SPI development kit for Icosa and Iowa
|-
| "MEDEV" || Mariko EDEV (deprecated)
|-
| "MSDEV" || Mariko SDEV (deprecated)
|-
| "HDEV" || Development kit for Hoag
|-
| "ADEV" || Development kit for Aula
|-
| "MP" || Mass production (retail Icosa)
|-
| "MNX" || Mariko NX (retail Iowa)
|-
| "HNX" || Hoag NX (retail Hoag)
|-
| "ANX" || Aula NX (retail Aula)
|}
 
== ProductModelType ==
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| "00" || Icosa
|-
| "01" || Iowa (previously Copper)
|-
| "02" || Hoag
|-
| "03" || Calcio
|-
| "04" || Aula
|}
 
= ConsoleSixAxisSensorHorizontalOffset =
This is "nn::settings::factory::ConsoleSixAxisSensorHorizontalOffset". Same as [[Calibration#ConsoleSixAxisSensorHorizontalOffset|ConsoleSixAxisSensorHorizontalOffset]].
 
= CountryCode =
This is "nn::settings::factory::CountryCode". This is a 0x3-byte struct.
 
= EccB233DeviceCertificate =
This is "nn::settings::factory::EccB233DeviceCertificate". This is a 0x180-byte struct.
 
= EccB233DeviceKey =
This is "nn::settings::factory::EccB233DeviceKey". This is a 0x30-byte struct or a 0x54-byte struct in the extended version.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x54 || Key
|-
| 0x54 || 0x4 || KeyGeneration
|}
 
= GameCardCertificate =
This is "nn::settings::factory::GameCardCertificate". This is a 0x400-byte struct.
 
= GameCardKey =
This is "nn::settings::factory::GameCardKey". This is a 0x110-byte struct or a 0x130-byte struct in the extended version.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x130 || Key
|-
| 0x130 || 0x4 || KeyGeneration
|}
 
= GyroscopeOffset =
This is "nn::settings::factory::GyroscopeOffset".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x2 || X
|-
| 0x2 || 0x2 || Y
|-
| 0x4 || 0x2 || Z
|}
 
= GyroscopeScale =
This is "nn::settings::factory::GyroscopeScale".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x2 || X
|-
| 0x2 || 0x2 || Y
|-
| 0x4 || 0x2 || Z
|}
 
= MacAddress =
This is "nn::settings::factory::MacAddress". This is a 0x6-byte struct.
 
= Rsa2048DeviceCertificate =
This is "nn::settings::factory::Rsa2048DeviceCertificate". This is a 0x240-byte struct.
 
= Rsa2048DeviceKey =
This is "nn::settings::factory::Rsa2048DeviceKey". This is a 0x220-byte struct or a 0x240-byte struct in the extended version.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x240 || Key
|-
| 0x240 || 0x4 || KeyGeneration
|}
 
= SerialNumber =
This is "nn::settings::factory::SerialNumber". This is a 0x18-byte struct.
 
= SpeakerParameter =
This is "nn::settings::factory::SpeakerParameter". This is copied from the first 0x5A bytes of [[Calibration#SpeakerCalibrationValue|SpeakerCalibrationValue]].
 
= SslCertificate =
This is "nn::settings::factory::SslCertificate". This is a 0x804-byte struct.
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || Size
|-
| 0x4 || Variable || Data
|}
 
= SslKey =
This is "nn::settings::factory::SslKey". This is a 0x110-byte struct or a 0x130-byte struct in the extended version.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x130 || Key
|-
| 0x130 || 0x4 || KeyGeneration
|}
 
= RegionCode =
This is "nn::settings::factory::RegionCode".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || Japan
|-
| 1 || Usa
|-
| 2 || Europe
|-
| 3 || Australia
|-
| 4 || China
|-
| 5 || Korea
|-
| 6 || Taiwan
|}
 
= AudioOutputMode =
This is "nn::settings::system::AudioOutputMode".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || 1ch
|-
| 1 || 2ch
|-
| 2 || 5_1ch
|-
| 3 || 7_1ch
|}
 
= AudioOutputModeTarget =
This is "nn::settings::system::AudioOutputModeTarget".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || Hdmi
|-
| 1 || Speaker
|-
| 2 || Headphone
|}
 
= AudioVolumeTarget =
This is "nn::settings::system::AudioVolumeTarget".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || Speaker
|-
| 1 || Headphone
|}
 
= DeviceNickName =
This is "nn::settings::system::DeviceNickName". This is a 0x80-byte struct.
 
= Edid =
This is "nn::settings::system::Edid".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x80 || Data0
|-
| 0x80 || 0x80 || Data1
|-
| 0x100 || 0x80 || [13.0.0+] Data2
|-
| 0x180 || 0x80 || [13.0.0+] Data3
|}
 
= RegionCode =
This is "nn::settings::system::RegionCode".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || Japan
|-
| 1 || Usa
|-
| 2 || Europe
|-
| 3 || Australia
|-
| 4 || HongKongTaiwanKorea
|-
| 5 || China
|}
 
= UserSelectorFlag =
This is "nn::settings::system::UserSelectorFlag".
 
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0 || SkipsIfSingleUser
|-
| 31 || Unknown
|}
 
= UserSelectorSettings =
This is "nn::settings::system::UserSelectorSettings".
 
This contains an u32 bitmask for [[#UserSelectorFlag]].
 
= AccountSettings =
This is "nn::settings::system::AccountSettings".
 
This contains [[#UserSelectorSettings]].
 
= ClockSourceId =
This is "nn::settings::system::ClockSourceId".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || NetworkSystemClock
|-
| 1 || SteadyClock
|}
 
= NotificationVolume =
This is "nn::settings::system::NotificationVolume".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || Mute
|-
| 1 || Low
|-
| 2 || High
|}
 
= FriendPresenceOverlayPermission =
This is "nn::settings::system::FriendPresenceOverlayPermission".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || NotConfirmed
|-
| 1 || NoDisplay
|-
| 2 || FavoriteFriends
|-
| 3 || Friends
|}
 
= TvResolution =
This is "nn::settings::system::TvResolution".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || Auto
|-
| 1 || 1080p
|-
| 2 || 720p
|-
| 3 || 480p
|}
 
= HdmiContentType =
This is "nn::settings::system::HdmiContentType".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || None
|-
| 1 || Graphics
|-
| 2 || Cinema
|-
| 3 || Photo
|-
| 4 || Game
|}
 
= RgbRange =
This is "nn::settings::system::RgbRange".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || Auto
|-
| 1 || Full
|-
| 2 || Limited
|}
 
= CmuMode =
This is "nn::settings::system::CmuMode".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || None
|-
| 1 || ColorInvert
|-
| 2 || HighContrast
|-
| 3 || GrayScale
|}
 
= HandheldSleepPlan =
This is "nn::settings::system::HandheldSleepPlan".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || 1Min
|-
| 1 || 3Min
|-
| 2 || 5Min
|-
| 3 || 10Min
|-
| 4 || 30Min
|-
| 5 || Never
|}
 
= ConsoleSleepPlan =
This is "nn::settings::system::ConsoleSleepPlan".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || 1Hour
|-
| 1 || 2Hour
|-
| 2 || 3Hour
|-
| 3 || 6Hour
|-
| 4 || 12Hour
|-
| 5 || Never
|}
 
= EulaVersion =
This is "nn::settings::system::EulaVersion".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || Version
|-
| 0x4 || 0x4 || [[#RegionCode_2|RegionCode]]
|-
| 0x8 || 0x4 || [[#SteadyClockSourceId|ClockType]]
|-
| 0xC || 0x4 || Reserved
|-
| 0x10 || 0x8 || [[Glue_services#PosixTime|NetworkSystemClock]]
|-
| 0x18 || 0x18 || [[Glue_services#SteadyClockTimePoint|SteadyClock]]
|}
 
= FirmwareVersion =
This is "nn::settings::system::FirmwareVersion".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x1 || Major
|-
| 0x1 || 0x1 || Minor
|-
| 0x2 || 0x1 || Micro
|-
| 0x3 || 0x1 || Reserved
|-
| 0x4 || 0x4 || ReleaseNumber
|-
| 0x8 || 0x20 || Platform
|-
| 0x28 || 0x40 || Revision
|-
| 0x68 || 0x18 || DisplayVersion
|-
| 0x80 || 0x80 || DisplayName
|}
 
= PtmFuelGaugeParameter =
This is "nn::settings::system::PtmFuelGaugeParameter".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x2 || Rcomp0
|-
| 0x2 || 0x2 || TempCo
|-
| 0x4 || 0x2 || FullCap
|-
| 0x6 || 0x2 || FullCapNom
|-
| 0x8 || 0x2 || IavgEmpty
|-
| 0xA || 0x2 || QrTable00
|-
| 0xC || 0x2 || QrTable10
|-
| 0xE || 0x2 || QrTable20
|-
| 0x10 || 0x2 || QrTable30
|-
| 0x12 || 0x2 || Reserved
|-
| 0x14 || 0x4 || Cycles
|}
 
= SecuritySettings =
This is "nn::settings::system::SecuritySettings".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || AuthenticationMode
|-
| 0x4 || 0x4 || EncryptionMode
|-
| 0x8 || 0x40 || KeyMaterial
|-
| 0x48 || 0x4 || KeyMaterialLength
|}
 
= NotificationTime =
This is "nn::settings::system::NotificationTime".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || Hour
|-
| 0x4 || 0x4 || Minute
|}
 
= NotificationFlag =
This is "nn::settings::system::NotificationFlag".
 
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0 || RingtoneFlag
|-
| 1 || DownloadCompletionFlag
|-
| 8 || EnablesNews
|-
| 9 || IncomingLampFlag
|}
 
= NotificationSettings =
This is "nn::settings::system::NotificationSettings".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || [[#NotificationFlag|Flags]]
|-
| 0x4 || 0x4 || [[#NotificationVolume|Volume]]
|-
| 0x8 || 0x8 || [[#NotificationTime|HeadTime]]
|-
| 0x10 || 0x8 || [[#NotificationTime|TailTime]]
|}
 
= AccountNotificationFlag =
This is "nn::settings::system::AccountNotificationFlag".
 
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0 || FriendOnlineFlag
|-
| 1 || FriendRequestFlag
|-
| 8 || CoralInvitationFlag
|}
 
= AccountNotificationSettings =
This is "nn::settings::system::AccountNotificationSettings".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x10 || [[Account_services#Uid|Uid]]
|-
| 0x10 || 0x4 || [[#AccountNotificationFlag|Flags]]
|-
| 0x14 || 0x1 || [[#FriendPresenceOverlayPermission|FriendPresenceOverlayPermission]]
|-
| 0x15 || 0x1 || [[#FriendPresenceOverlayPermission|FriendInvitationOverlayPermission]]
|-
| 0x16 || 0x2 || Reserved
|}
 
= TvFlag =
This is "nn::settings::system::TvFlag".
 
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0 || Allows4k
|-
| 1 || Allows3d
|-
| 2 || AllowsCec
|-
| 3 || PreventsScreenBurnIn
|}
 
= TvSettings =
This is "nn::settings::system::TvSettings".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || [[#TvFlag|Flags]]
|-
| 0x4 || 0x4 || [[#TvResolution|TvResolution]]
|-
| 0x8 || 0x4 || [[#HdmiContentType|HdmiContentType]]
|-
| 0xC || 0x4 || [[#RgbRange|RgbRange]]
|-
| 0x10 || 0x4 || [[#CmuMode|CmuMode]]
|-
| 0x14 || 0x4 || TvUnderscan
|-
| 0x18 || 0x4 || TvGamma
|-
| 0x1C || 0x4 || ContrastRatio
|}
 
= DataDeletionFlag =
This is "nn::settings::system::DataDeletionFlag".
 
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0 || AutomaticDeletionFlag
|}
 
= DataDeletionSettings =
This is "nn::settings::system::DataDeletionSettings".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || [[#DataDeletionFlag|Flags]]
|-
| 0x4 || 0x4 || UseCount
|}
 
= SleepFlag =
This is "nn::settings::system::SleepFlag".
 
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0 || SleepsWhilePlayingMedia
|-
| 1 || WakesAtPowerStateChange
|}
 
= SleepSettings =
This is "nn::settings::system::SleepSettings".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || [[#SleepFlag|Flags]]
|-
| 0x4 || 0x4 || [[#HandheldSleepPlan|HandheldSleepPlan]]
|-
| 0x8 || 0x4 || [[#ConsoleSleepPlan|ConsoleSleepPlan]]
|}
 
= InitialLaunchFlag =
This is "nn::settings::system::InitialLaunchFlag".
 
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0 || InitialLaunchCompletionFlag
|-
| 8 || InitialLaunchUserAdditionFlag
|-
| 16 || InitialLaunchTimestampFlag
|}
 
= InitialLaunchSettings =
This is "nn::settings::system::InitialLaunchSettings". This struct is 8-byte aligned.
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || [[#InitialLaunchFlag|Flags]]
|-
| 0x4 || 0x4 || Reserved
|-
| 0x8 || 0x18 || [[Glue_services#SteadyClockTimePoint|TimeStamp]]
|}
 
= RebootlessSystemUpdateVersion =
This is "nn::settings::system::RebootlessSystemUpdateVersion". This struct is 4-byte aligned.
 
This is the content of the RebootlessSystemUpdateVersion SystemData, in the "/version" file.
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || Version
|-
| 0x4 || 0x1C || Reserved
|-
| 0x20 || 0x20 || DisplayVersion
|}
 
= PrimaryAlbumStorage =
This is "nn::settings::system::PrimaryAlbumStorage".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || Nand
|-
| 1 || SdCard
|}
 
= ErrorReportSharePermission =
This is "nn::settings::system::ErrorReportSharePermission".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || NotConfirmed
|-
| 1 || Granted
|-
| 2 || Denied
|}
 
= ServiceDiscoveryControlSettings =
This is "nn::settings::system::ServiceDiscoveryControlSettings".
 
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0
| IsChangeEnvironmentIdentifierDisabled
|}
 
= AppletLaunchFlag =
This is "nn::settings::system::AppletLaunchFlag". This is an u32 bitmask.
 
= KeyboardLayout =
This is "nn::settings::KeyboardLayout".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 1 || EnglishUs
|-
| 2 || EnglishUsInternational
|-
| 3 || EnglishUk
|-
| 4 || French
|-
| 5 || FrenchCa
|-
| 6 || Spanish
|-
| 7 || SpanishLatin
|-
| 8 || German
|-
| 9 || Italian
|-
| 10 || Portuguese
|-
| 11 || Russian
|-
| 12 || Korean
|-
| 13 || ChineseSimplified
|-
| 14 || ChineseTraditional
|}
 
= ChineseTraditionalInputMethod =
This is "nn::settings::ChineseTraditionalInputMethod".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 1 ||
|-
| 2 ||
|}
 
= HomeMenuScheme =
This is "nn::settings::system::HomeMenuScheme".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || MainColor
|-
| 0x4 || 0x4 || BackColor
|-
| 0x8 || 0x4 || SubColor
|-
| 0xC || 0x4 || Reserved
|-
| 0x10 || 0x4 || BezelColor
|}
 
= TouchScreenMode =
This is "nn::settings::system::TouchScreenMode".
 
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0 || Stylus
|-
| 1 || Standard
|}
 
= ButtonConfigSettings =
This is "nn::settings::system::ButtonConfigSettings". This is a 0x5A8-byte struct.
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x1 || IsFull bool flag. 0 = empty config, 1 = config set. Also accessed as an u32, but only bit0 is used.
|-
| 0x1 || 0x3 || Padding
|-
| 0x4 || 0x1C4 || Unused
|-
| 0x1C8 || 0x3E0 || Config
|}
 
= ButtonConfigRegisteredSettings =
This is "nn::settings::system::ButtonConfigRegisteredSettings". This is a 0x5C8-byte struct.
 
= BluetoothDevicesSettings =
This is "nn::settings::system::BluetoothDevicesSettings". This is a 0x200-byte struct.
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x6 || [[BTM_services#BdAddress|BdAddr]]
|-
| 0x6 || 0x20 || [13.0.0+] Reserved ([1.0.0-12.1.0] [[BTM_services#BdName|DeviceName]])
|-
| 0x26 || 0x3 || [[BTM_services#ClassOfDevice|ClassOfDevice]]
|-
| 0x29 || 0x10 || LinkKey
|-
| 0x39 || 0x1 || LinkKeyPresent
|-
| 0x3A || 0x2 || Version
|-
| 0x3C || 0x4 || TrustedServices
|-
| 0x40 || 0x2 || Vid
|-
| 0x42 || 0x2 || Pid
|-
| 0x44 || 0x1 || SubClass
|-
| 0x45 || 0x1 || AttributeMask
|-
| 0x46 || 0x2 || DescriptorLength
|-
| 0x48 || 0x80 || Descriptor
|-
| 0xC8 || 0x1 || KeyType
|-
| 0xC9 || 0x1 || DeviceType
|-
| 0xCA || 0x2 || BrrSize
|-
| 0xCC || 0x9 || Brr
|-
| 0xD5 || 0x1 || [13.0.0+] AudioSourceVolume
|-
| 0xD6 || 0xF9 || [13.0.0+] DeviceName
|-
| 0x1CF || 0x1 || [15.0.0+] AudioSinkVolume
|-
| 0x1D0 || 0x4 || [14.0.0+] AudioFlags
|-
| 0x1D4 || 0x2C || Reserved
|}
 
= NxControllerLegacySettings =
This is "nn::settings::system::NxControllerLegacySettings" ([1.0.0-12.1.0] "nn::settings::system::NxControllerSettings"). This is a 0x29-byte struct.


[5.0.0+] New config fields were added to the HardwareType-specific config:
= NxControllerSettings =
This is "nn::settings::system::NxControllerSettings". This is a 0x42C-byte struct. This was added with [13.0.0+].


* "systeminitializer!eks_enabled" 1 for non-Mariko, 0 otherwise.
= System Configuration =
* "systeminitializer!bct_eks_offset" Offset within the [[BCT]] where the [[Flash_Filesystem|keyblob]]/"EKS" is stored.
There's a common configuration title (*818), and one configuration title for each [[SMC#HardwareType|HardwareType]].
* "systeminitializer!bct_version_offset" Offset within the [[BCT]] where the keyblob version is stored (bootloader0_info.version).
* "systeminitializer!boot_image_update_type" 0 for non-Mariko, 1 otherwise.


"bct_eks_offset" and "bct_version_offset" are only present in non-Mariko config, since (?) Mariko "eks_enabled" is 0. This presumably means the [[Flash_Filesystem|keyblob]]/"EKS" is not embedded in [[BCT]] with Mariko?
See [[System_Settings]].


[[Category:Services]]
[[Category:Services]]