Settings services: Difference between revisions

Magic (talk | contribs)
No edit summary
No edit summary
(98 intermediate revisions by 8 users not shown)
Line 1: Line 1:
= set =
= set =
This is "nn::settings::ISettingsServer".
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Cmd || Name
! 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 ||
|-
| 10 || [9.0.0+] [[#GetFirmwareVersionForDebug]] ||
|}
 
[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.
 
== 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 ==
"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"
|-
! Array-index / [[#Language]] || [[#LanguageCode]] || Icon [[NCA_Content_FS#FS-type3|language]] filename || Name
|-
| 0 || ja || "Japanese" || Japanese
|-
| 1 || en-US || "AmericanEnglish" || EnglishUs
|-
| 2 || fr || "French" || French
|-
| 3 || de || "German" || German
|-
| 4 || it || "Italian" || Italian
|-
| 5 || es || "Spanish" || Spanish
|-
| 6 || zh-CN || "Chinese" || Chinese
|-
| 7 || ko || "Korean" || Korean
|-
| 8 || nl || "Dutch" || Dutch
|-
| 9 || pt || "Portuguese" || Portuguese
|-
| 10 || ru || "Russian" || Russian
|-
| 11 || zh-TW || "Taiwanese" || Taiwanese
|-
| 12 || en-GB || "BritishEnglish" || EnglishUk
|-
| 13 || fr-CA || "CanadianFrench" || FrenchCa
|-
| 14 || es-419 || "LatinAmericanSpanish" || SpanishLatin
|-
| [4.0.0+] 15 || zh-Hans || "SimplifiedChinese" || ChineseSimplified
|-
| [4.0.0+] 16 || zh-Hant || "TraditionalChinese" || ChineseTraditional
|}
 
== 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
|-
| 2 || SetSettingsItemValue
|-
| 3 || ResetSettingsItemValue
|-
| 4 || [[#ISettingsItemKeyIterator|CreateSettingsItemKeyIterator]]
|-
| 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
|-
| 23 || [9.0.0+] SetMemoryUsageRateFlag
|}
== 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
|-
|-
| 14 || GetDeviceCert
| 0 || GetBluetoothBdAddress
|-
| 1 || GetConfigurationId1
|-
| 2 || GetAccelerometerOffset
|-
| 3 || GetAccelerometerScale
|-
| 4 || GetGyroscopeOffset
|-
| 5 || GetGyroscopeScale
|-
|-
| 15 || GetDeviceCert2
| 6 || GetWirelessLanMacAddress
|-
|-
| 16 || GetTLSClientPrivk
| 7 || GetWirelessLanCountryCodeCount
|-
|-
| 17 || GetTLSClientCert
| 8 || GetWirelessLanCountryCodes
|-
| 9 || GetSerialNumber
|-
| 10 || SetInitialSystemAppletProgramId
|-
| 11 || SetOverlayDispProgramId
|-
| 12 || GetBatteryLot
|-
| 14 || [[#GetEciDeviceCertificate]]
|-
| 15 || [[#GetEticketDeviceCertificate]]
|-
| 16 || [[#GetSslKey]]
|-
| 17 || [[#GetSslCertificate]]
|-
| 18 || [[#GetGameCardKey]]
|-
| 19 || [[#GetGameCardCertificate]]
|-
| 20 || [[#GetEciDeviceKey]]
|-
| 21 || [[#GetEticketDeviceKey]]
|-
| 22 || GetSpeakerParameter
|-
| 23 || [4.0.0+] GetLcdVendorId
|-
| 24 || [5.0.0+] [[#GetEciDeviceCertificate2]]
|-
| 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
|-
| 33 || [8.1.1+] GetAnalogStickModuleTypeL
|-
| 34 || [8.1.1+] GetAnalogStickModelParameterL
|-
| 35 || [8.1.1+] GetAnalogStickFactoryCalibrationL
|-
| 36 || [8.1.1+] GetAnalogStickModuleTypeR
|-
| 37 || [8.1.1+] GetAnalogStickModelParameterR
|-
| 38 || [8.1.1+] GetAnalogStickFactoryCalibrationR
|-
| 39 || [8.1.1+] GetConsoleSixAxisSensorModuleType
|-
| 40 || [8.1.1+] GetConsoleSixAxisSensorHorizontalOffset
|-
| 41 || [6.0.0+] GetBatteryVersion
|}
|}


Used for accessing data calibrated at the factory. Probably only for console-unique data?(Everything read so far has been console-unique)
Used for accessing data calibrated at the factory.


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


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.


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


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


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


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


== GetTLSClientCert ==
== GetSslCertificate ==
Takes a type-0x16 output buffer with fixed size 0x804.
Takes a type-0x16 output buffer containing a [[#SslCertificate]].
 
Used by SSL-sysmodule, see [[SSL_services|here]].
 
== GetGameCardKey ==
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).
 
== GetGameCardCertificate ==
Takes a type-0x16 output buffer containing a [[#GameCardCertificate]].
 
== GetEciDeviceKey ==
No input, returns an [[#EccB233DeviceKey]].
 
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 ==
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).
 
== GetEciDeviceCertificate2 ==
Same as [[#GetEciDeviceCertificate]], but [[#Rsa2048DeviceCertificate|returns]] a RSA-2048 variant of the device certificate.
 
== GetEciDeviceKey2 ==
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.
 
== 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"
|-
! Offset
! Size
! Name
|-
| 0x0
| 0x50
| Key
|-
| 0x50
| 0x4
| 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
| {above size}
| 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.


Returns a container-structure for the plaintext TLS client-cert.
== Rsa2048DeviceCertificate ==
This is "nn::settings::factory::Rsa2048DeviceCertificate". It's size is 0x240 bytes.


Used by SSL-sysmodule, see [[SSL_services|here]].
== 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.


=== setcal Container Structure ===
== SslCertificate ==
This is "nn::settings::factory::SslCertificate". It's maximum size is 0x804 bytes.
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 66: Line 477:
| 0x0
| 0x0
| 0x4
| 0x4
| Size (same size used for decryption if needed)
| SSL certificate size
|-
|-
| 0x4
| 0x4
| {above size}
| {above size}
| Actual data starts here.
| 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
|}
== RegionCode ==
This is "nn::settings::factory::RegionCode". It's size is 0x04 bytes.


= set:sys =
= set:sys =
This is "nn::settings::ISystemSettingsServer".
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Cmd || Name
! Cmd || Name
|-
|-
| ? || 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 || [[#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
|-
| 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]]
|}
 
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 ==
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.
 
== 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 ==
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.
 
== 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 ==
Takes two type-0x19 input buffers and a type-0x6 output buffer. Returns an output u64 for the actual size written to the outbuf.
 
The outbuf_size is compared with the config_size. When config_size is larger than outbuf_size, outbuf_size is used for the memcpy, otherwise config_size is used. Afterwards the size used for the memcpy is written to output(see above).
 
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 ==
Returns an output u8.
 
Loads the 1-byte config for <"settings_debug", "is_debug_mode_enabled">. If that fails, value 0x1 is written to output. This uses the same func as ReadSetting internally.
 
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 ==
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 ==
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 ==
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 ==
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.
 
== GetDataDeletionSettings ==
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
|-
|-
| ? || GetSerialNumber (Returns the 0x18-byte SerialNumber string)
| 0x18 || 0x18 || [[Glue_services|SteadyClockTimePoint]] steady_clock_time
|-
|-
| 56 || [[Flash_Filesystem#PRODINFOF|GetWirelessCertification]]
|}
|}


== GetSystemVersion ==
== NotificationTime ==
Returns the content of the [[System_Version_Title]] "/file".
{| 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".
 
This is an u8. This controls "Touch-Screen Sensitivity", values:
* 0: Stylus.
* 1: Standard, the default.
 
= System Config =
There's a common config title (*818), and a config title for each [[SMC#HardwareType|HardwareType]].
 
See [[System_Settings]].


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