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
Add key generation info (from shchmue)
(52 intermediate revisions by 5 users not shown)
Line 14: Line 14:
| 3 || GetAvailableLanguageCodeCount || No input, returns an output s32.
| 3 || GetAvailableLanguageCodeCount || No input, returns an output s32.
|-
|-
| 4 || GetRegionCode || No input, returns an [[#RegionCode]].
| 4 || GetRegionCode || No input, returns a [[#RegionCode]].
|-
|-
| 5 || [4.0.0+] GetAvailableLanguageCodes2 || Takes a type-0x6 buffer containing the [[#LanguageCode]] output array, returns an output s32.
| 5 || [4.0.0+] GetAvailableLanguageCodes2 || Takes a type-0x6 buffer containing the [[#LanguageCode]] output array, returns an output s32.
Line 20: Line 20:
| 6 || [4.0.0+] GetAvailableLanguageCodeCount2 || No input, returns an output s32.
| 6 || [4.0.0+] GetAvailableLanguageCodeCount2 || No input, returns an output s32.
|-
|-
| 7 || [4.0.0+] GetKeyCodeMap ||  
| 7 || [4.0.0+] [[#GetKeyCodeMap]] ||  
|-
|-
| 8 || [5.0.0+] GetQuestFlag || Identical to "set:sys" [[#set:sys|GetQuestFlag]].
| 8 || [5.0.0+] GetQuestFlag || Identical to "set:sys" [[#set:sys|GetQuestFlag]].
|-
| 9 || [6.0.0+] GetKeyCodeMap2 ||
|-
| 10 || [9.0.0+] [[#GetFirmwareVersionForDebug]] ||
|}
|}


Line 33: Line 37:
== GetKeyCodeMap ==
== GetKeyCodeMap ==
Takes a type-0x16 output buffer containing KeyCodeMap, official sw uses fixed size 0x1000. This is probably related to HID keyboard.
Takes a type-0x16 output buffer containing KeyCodeMap, official sw uses fixed size 0x1000. This is probably related to HID keyboard.
== GetFirmwareVersionForDebug ==
Takes a type-0x16 output buffer containing a 0x80-byte "nn::oe::FirmwareVersionForDebug".
This uses [[#GetDebugModeFlag]] internally, if the output flag is 0 an error is thrown.
This runs the same code as GetFirmwareVersion2, with the last 0x80-bytes of the [[System_Version_Title|output]] being copied to the output buffer.


== Language ==
== Language ==
Line 44: Line 55:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Array-index / [[#Language]] || [[#LanguageCode]] || Icon [[NCA_Content_FS#FS-type3|language]] filename
! Array-index / [[#Language]] || [[#LanguageCode]] || Icon [[NCA_Content_FS#FS-type3|language]] filename || Name
|-
|-
| 0 || ja || "Japanese"
| 0 || ja || "Japanese" || Japanese
|-
|-
| 1 || en-US || "AmericanEnglish"
| 1 || en-US || "AmericanEnglish" || EnglishUs
|-
|-
| 2 || fr || "French"
| 2 || fr || "French" || French
|-
|-
| 3 || de || "German"
| 3 || de || "German" || German
|-
|-
| 4 || it || "Italian"
| 4 || it || "Italian" || Italian
|-
|-
| 5 || es || "Spanish"
| 5 || es || "Spanish" || Spanish
|-
|-
| 6 || zh-CN || "Chinese"
| 6 || zh-CN || "Chinese" || Chinese
|-
|-
| 7 || ko || "Korean"
| 7 || ko || "Korean" || Korean
|-
|-
| 8 || nl || "Dutch"
| 8 || nl || "Dutch" || Dutch
|-
|-
| 9 || pt || "Portuguese"
| 9 || pt || "Portuguese" || Portuguese
|-
|-
| 10 || ru || "Russian"
| 10 || ru || "Russian" || Russian
|-
|-
| 11 || zh-TW || "Taiwanese"
| 11 || zh-TW || "Taiwanese" || Taiwanese
|-
|-
| 12 || en-GB || "BritishEnglish"
| 12 || en-GB || "BritishEnglish" || EnglishUk
|-
|-
| 13 || fr-CA || "CanadianFrench"
| 13 || fr-CA || "CanadianFrench" || FrenchCa
|-
|-
| 14 || es-419 || "LatinAmericanSpanish"
| 14 || es-419 || "LatinAmericanSpanish" || SpanishLatin
|-
|-
| [4.0.0+] 15 || zh-Hans || "SimplifiedChinese"
| [4.0.0+] 15 || zh-Hans || "SimplifiedChinese" || ChineseSimplified
|-
|-
| [4.0.0+] 16 || zh-Hant || "TraditionalChinese"
| [4.0.0+] 16 || zh-Hant || "TraditionalChinese" || ChineseTraditional
|}
|}


== RegionCode ==
== RegionCode ==
A region code is a signed 32-bit value representing a particular region. Currently the available regions defined by the system are as follows:
A region code is a signed 32-bit value representing a particular region. Currently the available regions defined by the system are as follows:


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


Line 216: Line 228:
| 32 || [5.0.0+] GetUsbTypeCPowerSourceCircuitVersion
| 32 || [5.0.0+] GetUsbTypeCPowerSourceCircuitVersion
|-
|-
| 33 || [6.0.0+] GetBatteryVersion
| 33 || [9.0.0+] GetAnalogStickModuleTypeL
|-
| 34 || [9.0.0+] GetAnalogStickModelParameterL
|-
| 35 || [9.0.0+] GetAnalogStickFactoryCalibrationL
|-
| 36 || [9.0.0+] GetAnalogStickModuleTypeR
|-
| 37 || [9.0.0+] GetAnalogStickModelParameterR
|-
| 38 || [9.0.0+] GetAnalogStickFactoryCalibrationR
|-
| 39 || [9.0.0+] GetConsoleSixAxisSensorModuleType
|-
| 40 || [9.0.0+] GetConsoleSixAxisSensorHorizontalOffset
|-
| 41 || [6.0.0+] GetBatteryVersion
|}
|}


Line 222: Line 250:


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


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]].


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]].


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]].
 
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]].


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]].


Returns a [[Settings_services#setcal_Container_Structure|container]] with the GameCard certificate.
== GetEciDeviceKey ==
No input, returns an [[#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]].


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).


== GetEciDeviceCertificate2 ==
== GetEciDeviceCertificate2 ==
Same as [[#GetEciDeviceCertificate]], but returns a RSA-2048 variant of the device certificate.
Same as [[#GetEciDeviceCertificate]], but [[#Rsa2048DeviceCertificate|returns]] a 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 [[#Rsa2048DeviceKey|returns]] a RSA-2048 variant of the device key.
 
== AccelerometerOffset ==
This is "nn::settings::factory::AccelerometerOffset". It's size is 0x06 bytes.
 
== AccelerometerScale ==
This is "nn::settings::factory::AccelerometerScale". It's size is 0x06 bytes.
 
== AmiiboEcdsaCertificate ==
This is "nn::settings::factory::AmiiboEcdsaCertificate". It's size is 0x70 bytes.
 
== AmiiboEcqvBlsCertificate ==
This is "nn::settings::factory::AmiiboEcqvBlsCertificate". It's size is 0x20 bytes.
 
== AmiiboEcqvBlsKey ==
This is "nn::settings::factory::AmiiboEcqvBlsKey". It's size is 0x40 bytes.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset
! Size
! Name
|-
| 0x0
| 0x40
| Key
|-
| 0x44
| 0x4
| Key generation
|}
 
== AmiiboEcqvBlsRootCertificate ==
This is "nn::settings::factory::AmiiboEcqvBlsRootCertificate". It's size is 0x90 bytes.
 
== AmiiboEcqvCertificate ==
This is "nn::settings::factory::AmiiboEcqvCertificate". It's size is 0x14 bytes.


== setcal Container Structure ==
== AmiiboKey ==
This is "nn::settings::factory::AmiiboKey". It's size is 0x50 bytes.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 277: Line 343:
|-
|-
| 0x0
| 0x0
| 0x50
| Key
|-
| 0x50
| 0x4
| 0x4
| Size (same size used for decryption if needed)
| Key generation
|}
 
== AnalogStickFactoryCalibration ==
This is "nn::settings::factory::AnalogStickFactoryCalibration". It's size is 0x09 bytes.
 
== AnalogStickModelParameter ==
This is "nn::settings::factory::AnalogStickModelParameter". It's size is 0x12 bytes.
 
== BatteryLot ==
This is "nn::settings::BatteryLot". It's size is 0x18 bytes.
 
== BdAddress ==
This is "nn::settings::factory::BdAddress". It's size is 0x06 bytes.
 
== ConfigurationId1 ==
This is "nn::settings::factory::ConfigurationId1". It's size is 0x1E bytes.
 
== ConsoleSixAxisSensorHorizontalOffset ==
This is "nn::settings::factory::ConsoleSixAxisSensorHorizontalOffset". It's size is 0x06 bytes.
 
== CountryCode ==
This is "nn::settings::factory::CountryCode". It's size is 0x04 bytes.
 
== EccB233DeviceCertificate ==
This is "nn::settings::factory::EccB233DeviceCertificate". It's size is 0x180 bytes.
 
== EccB233DeviceKey ==
This is "nn::settings::factory::EccB233DeviceKey". It's size is 0x30 bytes or 0x54 bytes in the extended version.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset
! Size
! Name
|-
| 0x0
| 0x54
| Key
|-
| 0x54
| 0x4
| Key generation
|}
 
== GameCardCertificate ==
This is "nn::settings::factory::GameCardCertificate". It's maximum size is 0x404 bytes.
{| class="wikitable" border="1"
|-
! Offset
! Size
! Name
|-
| 0x0
| 0x4
| GameCard certificate size
|-
|-
| 0x4
| 0x4
| {above size}
| {above size}
| Actual data starts here.
| GameCard certificate data
|}
 
== GameCardKey ==
This is "nn::settings::factory::GameCardKey". It's size is 0x110 bytes or 0x130 bytes in the extended version.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset
! Size
! Name
|-
| 0x0
| 0x130
| Key
|-
| 0x130
| 0x4
| Key generation
|}
 
== GyroscopeOffset ==
This is "nn::settings::factory::GyroscopeOffset". It's size is 0x06 bytes.
 
== GyroscopeScale ==
This is "nn::settings::factory::GyroscopeScale". It's size is 0x06 bytes.
 
== MacAddress ==
This is "nn::settings::factory::MacAddress". It's size is 0x06 bytes.
 
== Rsa2048DeviceCertificate ==
This is "nn::settings::factory::Rsa2048DeviceCertificate". It's size is 0x240 bytes.
 
== Rsa2048DeviceKey ==
This is "nn::settings::factory::Rsa2048DeviceKey". It's size is 0x220 bytes or 0x240 bytes in the extended version.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset
! Size
! Name
|-
| 0x0
| 0x240
| Key
|-
| 0x240
| 0x4
| Key generation
|}
 
== SerialNumber ==
This is "nn::settings::factory::SerialNumber". It's size is 0x18 bytes.
 
== SpeakerParameter ==
This is "nn::settings::factory::SpeakerParameter". It's size is 0x5A bytes.
 
== SslCertificate ==
This is "nn::settings::factory::SslCertificate". It's maximum size is 0x804 bytes.
{| class="wikitable" border="1"
|-
! Offset
! Size
! Name
|-
| 0x0
| 0x4
| SSL certificate size
|-
| 0x4
| {above size}
| SSL certificate data
|}
 
== SslKey ==
This is "nn::settings::factory::SslKey". It's size is 0x110 bytes or 0x130 bytes in the extended version.
 
If [[Calibration#CAL0|Calibration Version]] >= 9, this is now:
{| class="wikitable" border="1"
|-
! Offset
! Size
! Name
|-
| 0x0
| 0x130
| Key
|-
| 0x130
| 0x4
| Key generation
|}
|}


This container is used for returning data with variable sizes.
== RegionCode ==
This is "nn::settings::factory::RegionCode". It's size is 0x04 bytes.


= set:sys =
= set:sys =
Line 294: Line 513:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || SetLanguageCode
| 0 || [[#SetLanguageCode]]
|-
|-
| 1 || SetNetworkSettings
| 1 || SetNetworkSettings
Line 326: Line 545:
| 16 || SetUserSystemClockContext
| 16 || SetUserSystemClockContext
|-
|-
| 17 || GetAccountSettings
| 17 || [[#GetAccountSettings]]
|-
|-
| 18 || SetAccountSettings
| 18 || [[#SetAccountSettings]]
|-
|-
| 19 || GetAudioVolume
| 19 || GetAudioVolume
Line 334: Line 553:
| 20 || SetAudioVolume
| 20 || SetAudioVolume
|-
|-
| 21 || GetEulaVersions
| 21 || [[#GetEulaVersions]]
|-
|-
| 22 || SetEulaVersions
| 22 || [[#SetEulaVersions]]
|-
|-
| 23 || [[#GetColorSetId]]
| 23 || [[#GetColorSetId]]
Line 350: Line 569:
| 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 585:
| 38 || [[#GetSettingsItemValue]]
| 38 || [[#GetSettingsItemValue]]
|-
|-
| 39 || GetTvSettings
| 39 || [[#GetTvSettings]]
|-
|-
| 40 || SetTvSettings
| 40 || [[#SetTvSettings]]
|-
|-
| 41 || GetEdid
| 41 || GetEdid
Line 386: Line 605:
| 48 || SetQuestFlag
| 48 || SetQuestFlag
|-
|-
| 49 || GetDataDeletionSettings
| 49 || [[#GetDataDeletionSettings]]
|-
|-
| 50 || SetDataDeletionSettings
| 50 || [[#SetDataDeletionSettings]]
|-
|-
| 51 || GetInitialSystemAppletProgramId
| 51 || GetInitialSystemAppletProgramId
Line 398: Line 617:
| 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 633:
| 62 || [[#GetDebugModeFlag]]
| 62 || [[#GetDebugModeFlag]]
|-
|-
| 63 || GetPrimaryAlbumStorage
| 63 || [[#GetPrimaryAlbumStorage]]
|-
|-
| 64 || SetPrimaryAlbumStorage
| 64 || [[#SetPrimaryAlbumStorage]]
|-
|-
| 65 || GetUsb30EnableFlag
| 65 || GetUsb30EnableFlag
Line 422: Line 641:
| 66 || SetUsb30EnableFlag
| 66 || SetUsb30EnableFlag
|-
|-
| 67 || GetBatteryLot
| 67 || [[#GetBatteryLot]]
|-
|-
| 68 || [[#GetSerialNumber]]
| 68 || [[#GetSerialNumber]]
Line 430: Line 649:
| 70 || SetNfcEnableFlag
| 70 || SetNfcEnableFlag
|-
|-
| 71 || GetSleepSettings
| 71 || [[#GetSleepSettings]]
|-
|-
| 72 || SetSleepSettings
| 72 || [[#SetSleepSettings]]
|-
|-
| 73 || GetWirelessLanEnableFlag
| 73 || GetWirelessLanEnableFlag
Line 438: Line 657:
| 74 || SetWirelessLanEnableFlag
| 74 || SetWirelessLanEnableFlag
|-
|-
| 75 || GetInitialLaunchSettings
| 75 || [[#GetInitialLaunchSettings]]
|-
|-
| 76 || SetInitialLaunchSettings
| 76 || [[#SetInitialLaunchSettings]]
|-
|-
| 77 || GetDeviceNickName
| 77 || GetDeviceNickName
Line 446: Line 665:
| 78 || SetDeviceNickName
| 78 || SetDeviceNickName
|-
|-
| 79 || GetProductModel
| 79 || [[#GetProductModel]]
|-
|-
| 80 || GetLdnChannel
| 80 || GetLdnChannel
Line 468: Line 687:
| 89 || SetBluetoothEnableFlag
| 89 || SetBluetoothEnableFlag
|-
|-
| 90 || GetMiiAuthorId
| 90 || [[#GetMiiAuthorId]]
|-
|-
| 91 || SetShutdownRtcValue
| 91 || SetShutdownRtcValue
Line 536: Line 755:
| 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 779:
| 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 805:
| 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 || [9.0.0+] GetAnalogStickUserCalibrationL
|-
| 159 || [9.0.0+] SetAnalogStickUserCalibrationL
|-
| 160 || [9.0.0+] GetAnalogStickUserCalibrationR
|-
| 161 || [9.0.0+] 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 || [9.0.0+] [[#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]]
|}
|}


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 897:


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 920:
== 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 939:


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 952:


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.
== 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. This buffer contains an array of 0x8-byte "nn::settings::system::AllowedSslHost" entries.
== 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]], no output.
 
== GetChineseTraditionalInputMethod ==
No input, returns an output s32 [[#ChineseTraditionalInputMethod]].
 
== SetChineseTraditionalInputMethod ==
Takes an input s32 [[#ChineseTraditionalInputMethod]], no output.
 
== GetHomeMenuScheme ==
No input, returns an output 0x14-byte struct "nn::settings::system::HomeMenuScheme".
 
This struct contains 5 RGBA8 u32s for colors: '''Main''', '''Back''', '''Sub''', '''Bezel''' and '''Extra'''.
 
The colors are loaded from [[Calibration]], with the set of fields to use selected by ColorVariation. When ColorVariation is invalid (must be 1-4), the following fixed color values are returned: 0xFF323232, 0xFF323232, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF000000.
 
== 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]].
 
== 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]].
 
== 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]].
 
== EulaVersionClockType ==
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 0 || NetworkSystemClock
|-
| 1 || SteadyClock
|}
 
== NotificationVolume ==
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 0 || Mute
|-
| 1 || Low
|-
| 2 || High
|}
 
== FriendPresenceOverlayPermission ==
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 0 || NotConfirmed
|-
| 1 || NoDisplay
|-
| 2 || FavoriteFriends
|-
| 3 || Friends
|}
 
== TvResolution ==
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 0 || Auto
|-
| 1 || 1080p
|-
| 2 || 720p
|-
| 3 || 480p
|}
 
== HdmiContentType ==
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 0 || None
|-
| 1 || Graphics
|-
| 2 || Cinema
|-
| 3 || Photo
|-
| 4 || Game
|}
 
== RgbRange ==
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 0 || Auto
|-
| 1 || Full
|-
| 2 || Limited
|}
 
== CmuMode ==
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 0 || None
|-
| 1 || ColorInvert
|-
| 2 || HighContrast
|-
| 3 || GrayScale
|}
 
== HandheldSleepPlan ==
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 0 || 1Min
|-
| 1 || 3Min
|-
| 2 || 5Min
|-
| 3 || 10Min
|-
| 4 || 30Min
|-
| 5 || Never
|}
 
== 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 || u32 version
|-
| 0x4 || 0x4 || s32 region_code
|-
| 0x8 || 0x4 || s32 [[#EulaVersionClockType|clock_type]]
|-
| 0xC || 0x4 || Padding
|-
| 0x10 || 0x8 || [[Glue_services|PosixTime]] network_clock_time
|-
| 0x18 || 0x18 || [[Glue_services|SteadyClockTimePoint]] steady_clock_time
|-
|}
 
== NotificationTime ==
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || s32 hour
|-
| 0x4 || 0x4 || s32 minute
|-
|}
 
== NotificationFlag ==
This is "nn::settings::system::NotificationFlag".
 
{| class="wikitable" border="1"
!  Bits
!  Description
|-
|}
 
== NotificationSettings ==
This is "nn::settings::system::NotificationSettings".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || u32 flags. Bitmask with [[#NotificationFlag]].
|-
| 0x4 || 0x4 || s32 [[#NotificationVolume|volume]]
|-
| 0x8 || 0x8 || [[#NotificationTime]] start_time
|-
| 0x10 || 0x8 || [[#NotificationTime]] end_time
|-
|}
 
== AccountNotificationFlag ==
This is "nn::settings::system::AccountNotificationFlag".
 
{| class="wikitable" border="1"
!  Bits
!  Description
|-
|}
 
== AccountNotificationSettings ==
This is "nn::settings::system::AccountNotificationSettings".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x10 || [[Account_services|uid]]
|-
| 0x10 || 0x4 || u32 flags. Bitmask for [[#AccountNotificationFlag]].
|-
| 0x14 || 0x1 || s8 [[#FriendPresenceOverlayPermission|friend_presence_overlay_permission]]
|-
| 0x15 || 0x3 || Padding
|-
|}
 
== TvFlag ==
This is "nn::settings::system::TvFlag".
 
{| class="wikitable" border="1"
!  Bits
!  Description
|-
|}
 
== TvSettings ==
This is "nn::settings::system::TvSettings".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || u32 flags. Bitmask with [[#TvFlag]].
|-
| 0x4 || 0x4 || s32 [[#TvResolution|tv_resolution]]
|-
| 0x8 || 0x4 || s32 [[#HdmiContentType|hdmi_content_type]]
|-
| 0xC || 0x4 || s32 [[#RgbRange|rgb_range]]
|-
| 0x10 || 0x4 || s32 [[#CmuMode|cmu_mode]]
|-
| 0x14 || 0x4 || u32 underscan
|-
| 0x18 || 0x4 || float gamma
|-
| 0x1C || 0x4 || float contrast
|-
|}
 
== DataDeletionFlag ==
This is "nn::settings::system::DataDeletionFlag".
 
{| class="wikitable" border="1"
!  Bits
!  Description
|-
|}
 
== DataDeletionSettings ==
This is "nn::settings::system::DataDeletionSettings".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || u32 flags. Bitmask with [[#DataDeletionFlag]].
|-
| 0x4 || 0x4 || s32 use_count
|-
|}
 
== BatteryLot ==
This is "nn::settings::BatteryLot".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x18 || String.
|-
|}
 
== SleepFlag ==
This is "nn::settings::system::SleepFlag".
 
{| class="wikitable" border="1"
!  Bits
!  Description
|-
|}
 
== SleepSettings ==
This is "nn::settings::system::SleepSettings".
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || u32 flags. Bitmask for [[#SleepFlag]].
|-
| 0x4 || 0x4 || s32 [[#HandheldSleepPlan|handheld_sleep_plan]]
|-
| 0x8 || 0x4 || s32 [[#ConsoleSleepPlan|console_sleep_plan]]
|-
|}
 
== InitialLaunchFlag ==
This is "nn::settings::system::InitialLaunchFlag".
 
{| class="wikitable" border="1"
!  Bits
!  Description
|-
|}
 
== InitialLaunchSettings ==
This is "nn::settings::system::InitialLaunchSettings". This struct is 8-byte aligned.
 
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x0 || 0x4 || u32 flags. Bitmask for [[#InitialLaunchFlag]].
|-
| 0x4 || 0x4 || Padding
|-
| 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 || u32 version
|-
| 0x4 || 0x1C || Reserved
|-
| 0x20 || 0x20 || display_version string.
|-
|}
 
== PrimaryAlbumStorage ==
This is u32 enum "nn::settings::system::PrimaryAlbumStorage".
 
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 0 || Nand
|-
| 1 || SdCard
|}
 
== ErrorReportSharePermission ==
This is u32 enum "nn::settings::system::ErrorReportSharePermission".
 
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 0 || NotConfirmed
|-
| 1 || Granted
|-
| 2 || Denied
|}
 
== ServiceDiscoveryControlSettings ==
This is a 32-bit bitfield.
 
{| class="wikitable" border="1"
!  Bits
!  Description
|-
| 0
| IsChangeEnvironmentIdentifierDisabled
|}
 
== AppletLaunchFlag ==
This is "nn::settings::system::AppletLaunchFlag". This is an u32 bitmask.
 
== KeyboardLayout ==
This is u32 enum "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 u32 enum "nn::settings::ChineseTraditionalInputMethod".
 
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 1 ||
|-
| 2 ||
|}
 
== TouchScreenMode ==
This is "nn::settings::system::TouchScreenMode".


[5.0.0+] New config fields were added to the HardwareType-specific config:
This is an u8. This controls "Touch-Screen Sensitivity", values:
* 0: Stylus.
* 1: Standard, the default.


* "systeminitializer!eks_enabled" 1 for non-Mariko, 0 otherwise.
= System Config =
* "systeminitializer!bct_eks_offset" Offset within the [[BCT]] where the [[Flash_Filesystem|keyblob]]/"EKS" is stored.
There's a common config title (*818), and a config 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]]