Settings services: Difference between revisions

No edit summary
(43 intermediate revisions by 7 users not shown)
Line 1: Line 1:
= set =
= set =
This is "nn::settings::ISettingsServer".
{| class="wikitable" border="1"
|-
! Cmd || Name || Notes
|-
| 0 || GetLanguageCode || No input, returns an output [[#LanguageCode]]. This is the current system language.
|-
| 1 || GetAvailableLanguageCodes || Takes a type-0xA buffer containing the [[#LanguageCode]] output array, returns an output s32.
|-
| 2 || [4.0.0+] MakeLanguageCode || Takes an input [[#Language]], returns an output [[#LanguageCode]].
|-
| 3 || GetAvailableLanguageCodeCount || No input, returns an output s32.
|-
| 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.
|-
| 6 || [4.0.0+] GetAvailableLanguageCodeCount2 || No input, returns an output s32.
|-
| 7 || [4.0.0+] GetKeyCodeMap ||
|-
| 8 || [5.0.0+] GetQuestFlag || Identical to "set:sys" [[#set:sys|GetQuestFlag]].
|-
| 9 || [6.0.0+] GetKeyCodeMap2 ||
|}
[4.0.0+] Official user-processes now use GetAvailableLanguageCodes2/GetAvailableLanguageCodeCount2 instead of {original commands}.
In official user-processes in the [[#Language]]->[[#LanguageCode]] conversion function (MakeLanguageCode):
* During one-time init, GetAvailableLanguageCodes is used to initialize the LanguageCodes array cache, with max_entries=0xF (buffer size in u64s). [4.0.0+] GetAvailableLanguageCodes2 is now used with max_entries 0x40.
* [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 ==
Takes a type-0x16 output buffer containing KeyCodeMap, official sw uses fixed size 0x1000. This is probably related to HID keyboard.
== Language ==
"nn::settings::Language" (s32) is basically array indices in the output array from GetAvailableLanguageCodes.
== LanguageCode ==
This is "nn::settings::LanguageCode".
This is an u64, which is a NUL-terminated string.
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Cmd || Name
! Array-index / [[#Language]] || [[#LanguageCode]] || Icon [[NCA_Content_FS#FS-type3|language]] filename
|-
| 0 || ja || "Japanese"
|-
| 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 ==
A region code is a signed 32-bit value representing a particular region. Currently the available regions defined by the system are as follows:
 
{| class="wikitable" border="1"
|-
! Value || Region
|-
| 0 || Japan
|-
| 1 || USA
|-
| 2 || Europe
|-
| 3 || Australia
|-
| 4 || China
|-
|-
| 0 || GetLanguageCode
| 5 || Korea
|-
|-
| 1 || SetLanguageCode
| 6 || Taiwan
|-
|-
| 3 ||
| Any other value || Considered an unknown region
|-
|-
| 4 ||
|}
|}


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


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


{| class="wikitable" border="1"
|-
! Cmd || Name || Notes
|-
| 2 || SetSettingsItemValue ||
|-
| 3 || ResetSettingsItemValue ||
|-
| 4 || CreateSettingsItemKeyIterator || Returns an [[#ISettingsItemKeyIterator]].
|-
| 10 || [4.0.0+] ReadSettings ||
|-
| 11 || [4.0.0+] ResetSettings ||
|-
| 20 || [4.0.0+] SetWebInspectorFlag ||
|-
| 21 || [4.0.0+] SetAllowedSslHosts ||
|-
| 22 || [4.0.0+] SetHostFsMountPoint ||
|}
== ISettingsItemKeyIterator ==
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 || GoNext
|-
| 1 || GetKeySize
|-
| 2 || GetKey
|}


= set:cal =
= set:cal =
This is "nn::settings::IFactorySettingsServer".
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || GetBdAddress
| 0 || GetBluetoothBdAddress
|-
|-
| 1 || GetConfigurationId1
| 1 || GetConfigurationId1
Line 34: Line 165:
| 5 || GetGyroscopeScale
| 5 || GetGyroscopeScale
|-
|-
| 6 || GetWlanMacAddress
| 6 || GetWirelessLanMacAddress
|-
|-
| 7 || GetWlanCountryCodesNum
| 7 || GetWirelessLanCountryCodeCount
|-
|-
| 8 || GetWlanCountryCodes
| 8 || GetWirelessLanCountryCodes
|-
|-
| 9 || GetSerialNumber
| 9 || GetSerialNumber
|-
|-
| 10 ||  
| 10 || SetInitialSystemAppletProgramId
|-
|-
| 11 ||  
| 11 || SetOverlayDispProgramId
|-
|-
| 12 || GetBatteryLot
| 12 || GetBatteryLot
|-
|-
| 14 || GetDeviceCertECC
| 14 || [[#GetEciDeviceCertificate]]
|-
| 15 || [[#GetEticketDeviceCertificate]]
|-
| 16 || [[#GetSslKey]]
|-
| 17 || [[#GetSslCertificate]]
|-
|-
| 15 || GetETicketCertRSA
| 18 || [[#GetGameCardKey]]
|-
|-
| 16 || GetSslKey
| 19 || [[#GetGameCardCertificate]]
|-
|-
| 17 || GetSslCert
| 20 || [[#GetEciDeviceKey]]
|-
|-
| 18 || GetGamecardKey
| 21 || [[#GetEticketDeviceKey]]
|-
|-
| 19 || GetGamecardCert
| 22 || GetSpeakerParameter
|-
|-
| 20 || GetDeviceKeyECC
| 23 || [4.0.0+] GetLcdVendorId
|-
|-
| 21 || GetETicketKeyRSA
| 24 || [5.0.0+] [[#GetEciDeviceCertificate2]]
|-
|-
| 22 || GetSpeakerCalibrationValues
| 25 || [5.0.0+] [[#GetEciDeviceKey2]]
|-
|-
| 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
|-
| 41 || [6.0.0+] GetBatteryVersion
|}
|}


Used for accessing data calibrated at the factory.
Used for accessing data calibrated at the factory.


== GetDeviceCertECC ==
== GetEciDeviceCertificate ==
Takes a type-0x16 output buffer with fixed size 0x180.
Takes a type-0x16 output buffer with fixed size 0x180.


Returns the DeviceCert. 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.


== GetETicketCertRSA ==
== GetEticketDeviceCertificate ==
Takes a type-0x16 output buffer with fixed size 0x240.
Takes a type-0x16 output buffer with fixed size 0x240.


Same as GetDeviceCertECC, except this returns more data and the data starts differing at offset 0x108 compared to GetDeviceCert.
Returns the ETicket certificate (RSA signed).


== GetSslKey ==
== GetSslKey ==
Takes a type-0x16 output buffer with fixed size 0x134.
Takes a type-0x16 output buffer with fixed size 0x134.


Returns a container-structure for the encrypted TLS client-privk. Decrypting this fails unless an unknown size >0x134 is passed to this setcal cmd?
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).


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


== GetSslCert ==
== GetSslCertificate ==
Takes a type-0x16 output buffer with fixed size 0x804.
Takes a type-0x16 output buffer with fixed size 0x804.


Returns a container-structure for the plaintext TLS client-cert.
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]].


=== setcal Container Structure ===
== GetGameCardKey ==
Takes a type-0x16 output buffer with fixed size 0x134.
 
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 ==
Takes a type-0x16 output buffer with fixed size 0x404.
 
Returns a [[Settings_services#setcal_Container_Structure|container]] with the GameCard certificate.
 
== 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).
 
[5.0.0+] Now returns an additional 4-bytes.
 
== GetEticketDeviceKey ==
Takes a type-0x16 output buffer with fixed size 0x244.
 
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 ==
Same as [[#GetEciDeviceCertificate]], but returns a RSA-2048 variant of the device certificate.
 
== GetEciDeviceKey2 ==
Same as [[#GetEciDeviceKey]], but returns a RSA-2048 variant of the device key.
 
== setcal Container Structure ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 109: Line 287:
| Actual data starts here.
| Actual data starts here.
|}
|}
This container is used for returning data with variable sizes.


= set:sys =
= set:sys =
This is "nn::settings::ISystemSettingsServer".
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Cmd || Name
! Cmd || Name
|-
|-
| 3 || GetSystemVersion
| 0 || SetLanguageCode
|-
| 1 || SetNetworkSettings
|-
| 2 || GetNetworkSettings
|-
| 3 || [[#GetFirmwareVersion]]
|-
| 4 || [3.0.0+] GetFirmwareVersion2
|-
| 5 || [5.0.0+] GetFirmwareVersionDigest
|-
| 7 || GetLockScreenFlag
|-
| 8 || SetLockScreenFlag
|-
| 9 || GetBacklightSettings
|-
| 10 || SetBacklightSettings
|-
| 11 || SetBluetoothDevicesSettings
|-
| 12 || GetBluetoothDevicesSettings
|-
| 13 || GetExternalSteadyClockSourceId
|-
| 14 || SetExternalSteadyClockSourceId
|-
| 15 || GetUserSystemClockContext
|-
| 16 || SetUserSystemClockContext
|-
| 17 || GetAccountSettings
|-
| 18 || SetAccountSettings
|-
| 19 || GetAudioVolume
|-
| 20 || SetAudioVolume
|-
| 21 || GetEulaVersions
|-
| 22 || SetEulaVersions
|-
| 23 || [[#GetColorSetId]]
|-
| 24 || [[#SetColorSetId]]
|-
| 25 || GetConsoleInformationUploadFlag
|-
| 26 || SetConsoleInformationUploadFlag
|-
| 27 || GetAutomaticApplicationDownloadFlag
|-
| 28 || SetAutomaticApplicationDownloadFlag
|-
| 29 || GetNotificationSettings
|-
| 30 || SetNotificationSettings
|-
| 31 || GetAccountNotificationSettings
|-
| 32 || SetAccountNotificationSettings
|-
| 35 || GetVibrationMasterVolume
|-
| 36 || SetVibrationMasterVolume
|-
| 37 || GetSettingsItemValueSize
|-
| 38 || [[#GetSettingsItemValue]]
|-
| 39 || GetTvSettings
|-
| 40 || SetTvSettings
|-
| 41 || GetEdid
|-
| 42 || SetEdid
|-
| 43 || GetAudioOutputMode
|-
| 44 || SetAudioOutputMode
|-
| 45 || IsForceMuteOnHeadphoneRemoved
|-
| 46 || SetForceMuteOnHeadphoneRemoved
|-
| 47 || [[#GetQuestFlag]]
|-
| 48 || SetQuestFlag
|-
| 49 || GetDataDeletionSettings
|-
| 50 || SetDataDeletionSettings
|-
| 51 || GetInitialSystemAppletProgramId
|-
| 52 || GetOverlayDispProgramId
|-
| 53 || GetDeviceTimeZoneLocationName
|-
| 54 || SetDeviceTimeZoneLocationName
|-
| 55 || GetWirelessCertificationFileSize
|-
| 56 || [[Flash_Filesystem#PRODINFOF|GetWirelessCertificationFile]]
|-
| 57 || SetRegionCode
|-
| 58 || GetNetworkSystemClockContext
|-
| 59 || SetNetworkSystemClockContext
|-
| 60 || IsUserSystemClockAutomaticCorrectionEnabled
|-
| 61 || SetUserSystemClockAutomaticCorrectionEnabled
|-
| 62 || [[#GetDebugModeFlag]]
|-
| 63 || GetPrimaryAlbumStorage
|-
| 64 || SetPrimaryAlbumStorage
|-
| 65 || GetUsb30EnableFlag
|-
| 66 || SetUsb30EnableFlag
|-
| 67 || GetBatteryLot
|-
| 68 || [[#GetSerialNumber]]
|-
| 69 || GetNfcEnableFlag
|-
| 70 || SetNfcEnableFlag
|-
| 71 || GetSleepSettings
|-
| 72 || SetSleepSettings
|-
| 73 || GetWirelessLanEnableFlag
|-
| 74 || SetWirelessLanEnableFlag
|-
| 75 || GetInitialLaunchSettings
|-
| 76 || SetInitialLaunchSettings
|-
| 77 || GetDeviceNickName
|-
| 78 || SetDeviceNickName
|-
| 79 || GetProductModel
|-
| 80 || GetLdnChannel
|-
| 81 || SetLdnChannel
|-
| 82 || AcquireTelemetryDirtyFlagEventHandle
|-
| 83 || GetTelemetryDirtyFlags
|-
| 84 || GetPtmBatteryLot
|-
| 85 || SetPtmBatteryLot
|-
| 86 || GetPtmFuelGaugeParameter
|-
| 87 || SetPtmFuelGaugeParameter
|-
| 88 || GetBluetoothEnableFlag
|-
| 89 || SetBluetoothEnableFlag
|-
| 90 || GetMiiAuthorId
|-
| 91 || SetShutdownRtcValue
|-
| 92 || GetShutdownRtcValue
|-
| 93 || AcquireFatalDirtyFlagEventHandle
|-
| 94 || GetFatalDirtyFlags
|-
| 95 || [2.0.0+] GetAutoUpdateEnableFlag
|-
| 96 || [2.0.0+] SetAutoUpdateEnableFlag
|-
| 97 || [2.0.0+] GetNxControllerSettings
|-
| 98 || [2.0.0+] SetNxControllerSettings
|-
| 99 || [2.0.0+] GetBatteryPercentageFlag
|-
| 100 || [2.0.0+] SetBatteryPercentageFlag
|-
| 101 || [2.0.0+] GetExternalRtcResetFlag
|-
| 102 || [2.0.0+] SetExternalRtcResetFlag
|-
| 103 || [3.0.0+] GetUsbFullKeyEnableFlag
|-
| 104 || [3.0.0+] SetUsbFullKeyEnableFlag
|-
| 105 || [3.0.0+] SetExternalSteadyClockInternalOffset
|-
| 106 || [3.0.0+] GetExternalSteadyClockInternalOffset
|-
| 107 || [3.0.0+] GetBacklightSettingsEx
|-
| 108 || [3.0.0+] SetBacklightSettingsEx
|-
| 109 || [3.0.0+] GetHeadphoneVolumeWarningCount
|-
| 110 || [3.0.0+] SetHeadphoneVolumeWarningCount
|-
| 111 || [3.0.0+] GetBluetoothAfhEnableFlag
|-
| 112 || [3.0.0+] SetBluetoothAfhEnableFlag
|-
| 113 || [3.0.0+] GetBluetoothBoostEnableFlag
|-
| 114 || [3.0.0+] SetBluetoothBoostEnableFlag
|-
| 115 || [3.0.0+] GetInRepairProcessEnableFlag
|-
| 116 || [3.0.0+] SetInRepairProcessEnableFlag
|-
| 117 || [3.0.0+] GetHeadphoneVolumeUpdateFlag
|-
| 118 || [3.0.0+] SetHeadphoneVolumeUpdateFlag
|-
| 119 || [3.0.0+] NeedsToUpdateHeadphoneVolume
|-
| 120 || [3.0.0+] GetPushNotificationActivityModeOnSleep
|-
| 121 || [3.0.0+] SetPushNotificationActivityModeOnSleep
|-
| 122 || [4.0.0+] [[#GetServiceDiscoveryControlSettings]]
|-
| 123 || [4.0.0+] SetServiceDiscoveryControlSettings
|-
| 124 || [4.0.0+] GetErrorReportSharePermission
|-
| 125 || [4.0.0+] SetErrorReportSharePermission
|-
| 126 || [4.0.0+] GetAppletLaunchFlags
|-
| 127 || [4.0.0+] SetAppletLaunchFlags
|-
| 128 || [4.0.0+] GetConsoleSixAxisSensorAccelerationBias
|-
| 129 || [4.0.0+] SetConsoleSixAxisSensorAccelerationBias
|-
| 130 || [4.0.0+] GetConsoleSixAxisSensorAngularVelocityBias
|-
| 131 || [4.0.0+] SetConsoleSixAxisSensorAngularVelocityBias
|-
| 132 || [4.0.0+] GetConsoleSixAxisSensorAccelerationGain
|-
| 133 || [4.0.0+] SetConsoleSixAxisSensorAccelerationGain
|-
| 134 || [4.0.0+] GetConsoleSixAxisSensorAngularVelocityGain
|-
| 135 || [4.0.0+] SetConsoleSixAxisSensorAngularVelocityGain
|-
| 136 || [4.0.0+] GetKeyboardLayout
|-
| 137 || [4.0.0+] SetKeyboardLayout
|-
| 138 || [4.0.0+] GetWebInspectorFlag
|-
| 139 || [4.0.0+] [[#GetAllowedSslHosts]]
|-
| 140 || [4.0.0+] GetHostFsMountPoint
|-
| 141 || [5.0.0+] GetRequiresRunRepairTimeReviser
|-
| 142 || [5.0.0+] SetRequiresRunRepairTimeReviser
|-
| 143 || [5.0.0+] SetBlePairingSettings
|-
| 144 || [5.0.0+] GetBlePairingSettings
|-
| 145 || [5.0.0+] GetConsoleSixAxisSensorAngularVelocityTimeBias
|-
| 146 || [5.0.0+] SetConsoleSixAxisSensorAngularVelocityTimeBias
|-
| 147 || [5.0.0+] GetConsoleSixAxisSensorAngularAcceleration
|-
| 148 || [5.0.0+] SetConsoleSixAxisSensorAngularAcceleration
|-
| 149 || [5.0.0+] GetRebootlessSystemUpdateVersion
|-
| 150 || [5.0.0+] GetDeviceTimeZoneLocationUpdatedTime
|-
| 151 || [5.0.0+] SetDeviceTimeZoneLocationUpdatedTime
|-
| 152 || [6.0.0+] GetUserSystemClockAutomaticCorrectionUpdatedTime
|-
|-
| 37 || QuerySetting
| 153 || [6.0.0+] SetUserSystemClockAutomaticCorrectionUpdatedTime
|-
|-
| 38 || ReadSetting
| 154 || [6.0.0+] GetAccountOnlineStorageSettings
|-
|-
| 56 || [[Flash_Filesystem#PRODINFOF|GetWirelessCertification]]
| 155 || [6.0.0+] SetAccountOnlineStorageSettings
|-
|-
| 62 || GetDebugMode
| 156 || [6.0.0+] GetPctlReadyFlag
|-
|-
| 68 || GetSerialNumber
| 157 || [6.0.0+] SetPctlReadyFlag
|-
| 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
|-
| 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
|}
|}


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 get a new service session handle each time a set:sys cmd is used, with the session being closed aftewards.


== ReadSetting ==
== GetFirmwareVersion ==
Takes a type-0x1A output buffer. User-processes use hard-coded size 0x100.
 
If needed, reads the content of the [[System_Version_Title]] "/file" into state. This is only done once.
 
Then the above 0x100-byte data is copied to the output buffer.
 
== GetColorSetId ==
No input, returns an output s32.
 
This is the current Theme set by System Settings.
 
* 0: "Basic White"
* 1: "Basic Black"
 
== SetColorSetId ==
Takes an input s32, no output.
 
== GetSettingsItemValue ==
Takes two type-0x19 input buffers and a type-0x6 output buffer. Returns an output u64 for the actual size written to the outbuf.
Takes two type-0x19 input buffers and a type-0x6 output buffer. Returns an output u64 for the actual size written to the outbuf.


Line 137: Line 675:
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.


== GetSystemVersion ==
== GetDebugModeFlag ==
Takes a type-0x1A output buffer. User-processes use hard-coded size 0x100.
 
If needed, reads the content of the [[System_Version_Title]] "/file" into state. This is only done once.
 
Then the above 0x100-byte data is copied to the output buffer.
 
== GetDebugMode ==
Returns an output u8.
Returns an output u8.


Line 153: Line 684:
== GetSerialNumber ==
== GetSerialNumber ==
Returns the 0x18-byte SerialNumber string.
Returns the 0x18-byte SerialNumber string.
== GetServiceDiscoveryControlSettings ==
Returns 0x01 if [[Safemode|safemode]] needs to be launched.
== GetAllowedSslHosts ==
Takes a type-0x6 output buffer, returns an output s32. This buffer contains an array of 0x8-byte "nn::settings::system::AllowedSslHost" entries.
== 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.
= System Config =
There's a common config title (*818), and a config title for each [[SPL_services|HardwareType]].
[5.0.0+] New config fields were added to the HardwareType-specific config:
* "systeminitializer!eks_enabled" 1 for non-Mariko, 0 otherwise.
* "systeminitializer!bct_eks_offset" Offset within the [[BCT]] where the [[Flash_Filesystem|keyblob]]/"EKS" is stored.
* "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?


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