Line 27: |
Line 27: |
| |- | | |- |
| | 10 || [9.0.0+] [[#GetFirmwareVersionForDebug]] || | | | 10 || [9.0.0+] [[#GetFirmwareVersionForDebug]] || |
| + | |- |
| + | | 11 || [10.1.0+] [[#GetDeviceNickName]] || |
| |} | | |} |
| | | |
Line 90: |
Line 92: |
| |- | | |- |
| | [4.0.0+] 16 || zh-Hant || "TraditionalChinese" || ChineseTraditional | | | [4.0.0+] 16 || zh-Hant || "TraditionalChinese" || ChineseTraditional |
| + | |- |
| + | | [10.1.0+] 17 || pt-BR || "BrazilianPortuguese" || |
| |} | | |} |
| | | |
Line 120: |
Line 124: |
| This is "nn::settings::IFirmwareDebugSettingsServer". | | This is "nn::settings::IFirmwareDebugSettingsServer". |
| | | |
− | [4.0.0+] Only exposed if in [[SPL_services#IsDebugMode|debug mode]]. | + | [4.0.0+] Only exposed if in [[SPL_services#IsDevelopment|development mode]]. |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 245: |
Line 249: |
| |- | | |- |
| | 41 || [6.0.0+] GetBatteryVersion | | | 41 || [6.0.0+] GetBatteryVersion |
| + | |- |
| + | | 42 || [10.0.0+] [[#GetDeviceId]] |
| + | |- |
| + | | 43 || [10.0.0+] GetConsoleSixAxisSensorMountType |
| |} | | |} |
| | | |
Line 297: |
Line 305: |
| == GetEciDeviceKey2 == | | == GetEciDeviceKey2 == |
| Same as [[#GetEciDeviceKey]], but [[#Rsa2048DeviceKey|returns]] a RSA-2048 variant of the device key. | | Same as [[#GetEciDeviceKey]], but [[#Rsa2048DeviceKey|returns]] a RSA-2048 variant of the device key. |
| + | |
| + | == GetDeviceId == |
| + | Returns an u64 '''DeviceId''' by reading and converting the hexadecimal string at offset 0xC6 inside [[#EccB233DeviceCertificate]] or [[#Rsa2048DeviceCertificate]]. |
| | | |
| == AccelerometerOffset == | | == AccelerometerOffset == |
− | This is "nn::settings::factory::AccelerometerOffset". It's size is 0x06 bytes. | + | This is "nn::settings::factory::AccelerometerOffset". Its size is 0x06 bytes. |
| | | |
| == AccelerometerScale == | | == AccelerometerScale == |
− | This is "nn::settings::factory::AccelerometerScale". It's size is 0x06 bytes. | + | This is "nn::settings::factory::AccelerometerScale". Its size is 0x06 bytes. |
| | | |
| == AmiiboEcdsaCertificate == | | == AmiiboEcdsaCertificate == |
− | This is "nn::settings::factory::AmiiboEcdsaCertificate". It's size is 0x70 bytes. | + | This is "nn::settings::factory::AmiiboEcdsaCertificate". Its size is 0x70 bytes. |
| | | |
| == AmiiboEcqvBlsCertificate == | | == AmiiboEcqvBlsCertificate == |
− | This is "nn::settings::factory::AmiiboEcqvBlsCertificate". It's size is 0x20 bytes. | + | This is "nn::settings::factory::AmiiboEcqvBlsCertificate". Its size is 0x20 bytes. |
| | | |
| == AmiiboEcqvBlsKey == | | == AmiiboEcqvBlsKey == |
− | This is "nn::settings::factory::AmiiboEcqvBlsKey". It's size is 0x40 bytes. | + | This is "nn::settings::factory::AmiiboEcqvBlsKey". Its size is 0x40 bytes. |
| | | |
| If [[Calibration#CAL0|Calibration Version]] >= 9, this is now: | | If [[Calibration#CAL0|Calibration Version]] >= 9, this is now: |
Line 330: |
Line 341: |
| | | |
| == AmiiboEcqvBlsRootCertificate == | | == AmiiboEcqvBlsRootCertificate == |
− | This is "nn::settings::factory::AmiiboEcqvBlsRootCertificate". It's size is 0x90 bytes. | + | This is "nn::settings::factory::AmiiboEcqvBlsRootCertificate". Its size is 0x90 bytes. |
| | | |
| == AmiiboEcqvCertificate == | | == AmiiboEcqvCertificate == |
− | This is "nn::settings::factory::AmiiboEcqvCertificate". It's size is 0x14 bytes. | + | This is "nn::settings::factory::AmiiboEcqvCertificate". Its size is 0x14 bytes. |
| | | |
| == AmiiboKey == | | == AmiiboKey == |
− | This is "nn::settings::factory::AmiiboKey". It's size is 0x50 bytes. | + | This is "nn::settings::factory::AmiiboKey". Its size is 0x50 bytes. |
| | | |
| If [[Calibration#CAL0|Calibration Version]] >= 9, this is now: | | If [[Calibration#CAL0|Calibration Version]] >= 9, this is now: |
Line 355: |
Line 366: |
| | | |
| == AnalogStickFactoryCalibration == | | == AnalogStickFactoryCalibration == |
− | This is "nn::settings::factory::AnalogStickFactoryCalibration". It's size is 0x09 bytes. | + | This is "nn::settings::factory::AnalogStickFactoryCalibration". Its size is 0x09 bytes. |
| | | |
| == AnalogStickModelParameter == | | == AnalogStickModelParameter == |
− | This is "nn::settings::factory::AnalogStickModelParameter". It's size is 0x12 bytes. | + | This is "nn::settings::factory::AnalogStickModelParameter". Its size is 0x12 bytes. |
| | | |
| == BatteryLot == | | == BatteryLot == |
− | This is "nn::settings::BatteryLot". It's size is 0x18 bytes. | + | This is "nn::settings::BatteryLot". Its size is 0x18 bytes. |
| | | |
| == BdAddress == | | == BdAddress == |
− | This is "nn::settings::factory::BdAddress". It's size is 0x06 bytes. | + | This is "nn::settings::factory::BdAddress". Its size is 0x06 bytes. |
| | | |
| == ConfigurationId1 == | | == ConfigurationId1 == |
− | This is "nn::settings::factory::ConfigurationId1". It's size is 0x1E bytes. | + | This is "nn::settings::factory::ConfigurationId1". Its size is 0x1E bytes. |
| | | |
| Usually, this is a string with the following format: | | Usually, this is a string with the following format: |
− | {device}_{revision}_{major_version}_{minor_version}_{micro_version} | + | {DutType}_{ProductModelType}_{major_version}_{minor_version}_{micro_version} |
| | | |
| Where: | | Where: |
− | {device}: "MP", "EDEV", "SDEV", "HDEV", "HOAG", "COPPER" or "CALCIO". | + | {DutType}: "FP", "EP", "MP", "MNX", "EDEV", "SDEV", "HDEV", "HOAG", "COPPER", "CALCIO". |
− | {revision}: 2 digit number. | + | {ProductModelType}: 2 digit number. |
| {major_version}: 2 digit number. | | {major_version}: 2 digit number. |
| {minor_version}: 2 digit number. | | {minor_version}: 2 digit number. |
Line 380: |
Line 391: |
| | | |
| == ConsoleSixAxisSensorHorizontalOffset == | | == ConsoleSixAxisSensorHorizontalOffset == |
− | This is "nn::settings::factory::ConsoleSixAxisSensorHorizontalOffset". It's size is 0x06 bytes. | + | This is "nn::settings::factory::ConsoleSixAxisSensorHorizontalOffset". Its size is 0x06 bytes. |
| | | |
| == CountryCode == | | == CountryCode == |
− | This is "nn::settings::factory::CountryCode". It's size is 0x04 bytes. | + | This is "nn::settings::factory::CountryCode". Its size is 0x04 bytes. |
| | | |
| == EccB233DeviceCertificate == | | == EccB233DeviceCertificate == |
− | This is "nn::settings::factory::EccB233DeviceCertificate". It's size is 0x180 bytes. | + | This is "nn::settings::factory::EccB233DeviceCertificate". Its size is 0x180 bytes. |
| | | |
| == EccB233DeviceKey == | | == EccB233DeviceKey == |
− | This is "nn::settings::factory::EccB233DeviceKey". It's size is 0x30 bytes or 0x54 bytes in the extended version. | + | This is "nn::settings::factory::EccB233DeviceKey". Its size is 0x30 bytes or 0x54 bytes in the extended version. |
| | | |
| If [[Calibration#CAL0|Calibration Version]] >= 9, this is now: | | If [[Calibration#CAL0|Calibration Version]] >= 9, this is now: |
Line 408: |
Line 419: |
| | | |
| == GameCardCertificate == | | == GameCardCertificate == |
− | This is "nn::settings::factory::GameCardCertificate". It's maximum size is 0x404 bytes. | + | This is "nn::settings::factory::GameCardCertificate". Its size is 0x400 bytes. |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
Line 416: |
Line 427: |
| |- | | |- |
| | 0x0 | | | 0x0 |
− | | 0x4 | + | | 0x400 |
− | | GameCard certificate size
| |
− | |-
| |
− | | 0x4
| |
− | | {above size}
| |
| | GameCard certificate data | | | GameCard certificate data |
| |} | | |} |
| | | |
| == GameCardKey == | | == GameCardKey == |
− | This is "nn::settings::factory::GameCardKey". It's size is 0x110 bytes or 0x130 bytes in the extended version. | + | This is "nn::settings::factory::GameCardKey". Its size is 0x110 bytes or 0x130 bytes in the extended version. |
| | | |
| If [[Calibration#CAL0|Calibration Version]] >= 9, this is now: | | If [[Calibration#CAL0|Calibration Version]] >= 9, this is now: |
Line 444: |
Line 451: |
| | | |
| == GyroscopeOffset == | | == GyroscopeOffset == |
− | This is "nn::settings::factory::GyroscopeOffset". It's size is 0x06 bytes. | + | This is "nn::settings::factory::GyroscopeOffset". Its size is 0x06 bytes. |
| | | |
| == GyroscopeScale == | | == GyroscopeScale == |
− | This is "nn::settings::factory::GyroscopeScale". It's size is 0x06 bytes. | + | This is "nn::settings::factory::GyroscopeScale". Its size is 0x06 bytes. |
| | | |
| == MacAddress == | | == MacAddress == |
− | This is "nn::settings::factory::MacAddress". It's size is 0x06 bytes. | + | This is "nn::settings::factory::MacAddress". Its size is 0x06 bytes. |
| | | |
| == Rsa2048DeviceCertificate == | | == Rsa2048DeviceCertificate == |
− | This is "nn::settings::factory::Rsa2048DeviceCertificate". It's size is 0x240 bytes. | + | This is "nn::settings::factory::Rsa2048DeviceCertificate". Its size is 0x240 bytes. |
| | | |
| == Rsa2048DeviceKey == | | == Rsa2048DeviceKey == |
− | This is "nn::settings::factory::Rsa2048DeviceKey". It's size is 0x220 bytes or 0x240 bytes in the extended version. | + | This is "nn::settings::factory::Rsa2048DeviceKey". Its size is 0x220 bytes or 0x240 bytes in the extended version. |
| | | |
| If [[Calibration#CAL0|Calibration Version]] >= 9, this is now: | | If [[Calibration#CAL0|Calibration Version]] >= 9, this is now: |
Line 475: |
Line 482: |
| | | |
| == SerialNumber == | | == SerialNumber == |
− | This is "nn::settings::factory::SerialNumber". It's size is 0x18 bytes. | + | This is "nn::settings::factory::SerialNumber". Its size is 0x18 bytes. |
| | | |
| == SpeakerParameter == | | == SpeakerParameter == |
− | This is "nn::settings::factory::SpeakerParameter". It's size is 0x5A bytes. | + | This is "nn::settings::factory::SpeakerParameter". Its size is 0x5A bytes. |
| | | |
| == SslCertificate == | | == SslCertificate == |
− | This is "nn::settings::factory::SslCertificate". It's maximum size is 0x804 bytes. | + | This is "nn::settings::factory::SslCertificate". Its maximum size is 0x804 bytes. |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
Line 498: |
Line 505: |
| | | |
| == SslKey == | | == SslKey == |
− | This is "nn::settings::factory::SslKey". It's size is 0x110 bytes or 0x130 bytes in the extended version. | + | This is "nn::settings::factory::SslKey". Its size is 0x110 bytes or 0x130 bytes in the extended version. |
| | | |
| If [[Calibration#CAL0|Calibration Version]] >= 9, this is now: | | If [[Calibration#CAL0|Calibration Version]] >= 9, this is now: |
Line 517: |
Line 524: |
| | | |
| == RegionCode == | | == RegionCode == |
− | This is "nn::settings::factory::RegionCode". It's size is 0x04 bytes. | + | This is "nn::settings::factory::RegionCode". Its size is 0x04 bytes. |
| | | |
| = set:sys = | | = set:sys = |
Line 674: |
Line 681: |
| | 76 || [[#SetInitialLaunchSettings]] | | | 76 || [[#SetInitialLaunchSettings]] |
| |- | | |- |
− | | 77 || GetDeviceNickName | + | | 77 || [[#GetDeviceNickName]] |
| |- | | |- |
− | | 78 || SetDeviceNickName | + | | 78 || [[#SetDeviceNickName]] |
| |- | | |- |
| | 79 || [[#GetProductModel]] | | | 79 || [[#GetProductModel]] |
Line 897: |
Line 904: |
| |- | | |- |
| | 188 || [9.0.0+] [[#SetTouchScreenMode]] | | | 188 || [9.0.0+] [[#SetTouchScreenMode]] |
| + | |- |
| + | | 189 || [10.0.0+] [[#GetButtonConfigSettingsFull]] |
| + | |- |
| + | | 190 || [10.0.0+] [[#SetButtonConfigSettingsFull]] |
| + | |- |
| + | | 191 || [10.0.0+] [[#GetButtonConfigSettingsEmbedded]] |
| + | |- |
| + | | 192 || [10.0.0+] [[#SetButtonConfigSettingsEmbedded]] |
| + | |- |
| + | | 193 || [10.0.0+] [[#GetButtonConfigSettingsLeft]] |
| + | |- |
| + | | 194 || [10.0.0+] [[#SetButtonConfigSettingsLeft]] |
| + | |- |
| + | | 195 || [10.0.0+] [[#GetButtonConfigSettingsRight]] |
| + | |- |
| + | | 196 || [10.0.0+] [[#SetButtonConfigSettingsRight]] |
| + | |- |
| + | | 197 || [10.0.0+] [[#GetButtonConfigRegisteredSettingsEmbedded]] |
| + | |- |
| + | | 198 || [10.0.0+] [[#SetButtonConfigRegisteredSettingsEmbedded]] |
| + | |- |
| + | | 199 || [10.0.0+] [[#GetButtonConfigRegisteredSettings]] |
| + | |- |
| + | | 200 || [10.0.0+] [[#SetButtonConfigRegisteredSettings]] |
| + | |- |
| + | | 201 || [10.1.0+] [[#GetFieldTestingFlag]] |
| + | |- |
| + | | 202 || [10.1.0+] [[#SetFieldTestingFlag]] |
| + | |- |
| + | | 203 || [11.0.0+] GetPanelCrcMode |
| + | |- |
| + | | 204 || [11.0.0+] SetPanelCrcMode |
| |} | | |} |
| | | |
Line 990: |
Line 1,029: |
| Takes an input [[#InitialLaunchSettings]], no output. | | Takes an input [[#InitialLaunchSettings]], no output. |
| | | |
− | == GetProductModel == | + | == GetDeviceNickName == |
− | No input, returns an output s32. | + | Takes a type-0x16 output buffer containing a [[#DeviceNickName]]. |
| + | |
| + | With [10.1.0+] sdknso now uses the set cmd instead of the setsys cmd. |
| + | |
| + | == SetDeviceNickName == |
| + | Takes a type-0x15 input buffer containing a [[#DeviceNickName]]. |
| + | |
| + | == GetProductModel == |
| + | No input, returns an output s32. |
| | | |
| == GetMiiAuthorId == | | == GetMiiAuthorId == |
Line 1,089: |
Line 1,136: |
| | | |
| Official sw sets the input to an u8 loaded from an input [[#TouchScreenMode]]. | | Official sw sets the input to an u8 loaded from an input [[#TouchScreenMode]]. |
| + | |
| + | == GetButtonConfigSettingsFull == |
| + | Takes a type-0x6 output buffer containing an array of [[#ButtonConfigSettings]], returns an output s32. |
| + | |
| + | == SetButtonConfigSettingsFull == |
| + | Takes a type-0x5 input buffer containing an array of [[#ButtonConfigSettings]], no output. |
| + | |
| + | == GetButtonConfigSettingsEmbedded == |
| + | Takes a type-0x6 output buffer containing an array of [[#ButtonConfigSettings]], returns an output s32. |
| + | |
| + | == SetButtonConfigSettingsEmbedded == |
| + | Takes a type-0x5 input buffer containing an array of [[#ButtonConfigSettings]], no output. |
| + | |
| + | == GetButtonConfigSettingsLeft == |
| + | Takes a type-0x6 output buffer containing an array of [[#ButtonConfigSettings]], returns an output s32. |
| + | |
| + | == SetButtonConfigSettingsLeft == |
| + | Takes a type-0x5 input buffer containing an array of [[#ButtonConfigSettings]], no output. |
| + | |
| + | == GetButtonConfigSettingsRight == |
| + | Takes a type-0x6 output buffer containing an array of [[#ButtonConfigSettings]], returns an output s32. |
| + | |
| + | == SetButtonConfigSettingsRight == |
| + | Takes a type-0x5 input buffer containing an array of [[#ButtonConfigSettings]], no output. |
| + | |
| + | == GetButtonConfigRegisteredSettingsEmbedded == |
| + | Takes a type-0x16 output buffer containing a [[#ButtonConfigRegisteredSettings]], no output. |
| + | |
| + | == SetButtonConfigRegisteredSettingsEmbedded == |
| + | Takes a type-0x15 input buffer containing a [[#ButtonConfigRegisteredSettings]], no output. |
| + | |
| + | == GetButtonConfigRegisteredSettings == |
| + | Takes a type-0x6 output buffer containing an array of [[#ButtonConfigRegisteredSettings]], returns an output s32. |
| + | |
| + | == SetButtonConfigRegisteredSettings == |
| + | Takes a type-0x5 input buffer containing an array of [[#ButtonConfigRegisteredSettings]], no output. |
| + | |
| + | == GetFieldTestingFlag == |
| + | No input, returns an output bool. |
| + | |
| + | == SetFieldTestingFlag == |
| + | Takes an input bool, no output. |
| + | |
| + | == DeviceNickName == |
| + | This is "nn::settings::system::DeviceNickName". This is a 0x80-byte struct. |
| | | |
| == UserSelectorFlag == | | == UserSelectorFlag == |
Line 1,406: |
Line 1,498: |
| | | |
| == BatteryLot == | | == BatteryLot == |
− | This is "nn::settings::BatteryLot". It's size is 0x18 bytes. | + | This is "nn::settings::BatteryLot". Its size is 0x18 bytes. |
| | | |
| == SleepFlag == | | == SleepFlag == |
Line 1,574: |
Line 1,666: |
| * 0: Stylus. | | * 0: Stylus. |
| * 1: Standard, the default. | | * 1: Standard, the default. |
| + | |
| + | == ButtonConfigSettings == |
| + | This is "nn::settings::system::ButtonConfigSettings". This is a 0x5A8-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x1 || IsFull bool flag. 0 = empty config, 1 = config set. Also accessed as an u32, but only bit0 is used. |
| + | |- |
| + | | 0x1 || 0x3 || Padding |
| + | |- |
| + | | 0x4 || 0x1C4 || Unused |
| + | |- |
| + | | 0x1C8 || 0x3E0 || Config |
| + | |} |
| + | |
| + | == ButtonConfigRegisteredSettings == |
| + | This is "nn::settings::system::ButtonConfigRegisteredSettings". This is a 0x5C8-byte struct. |
| + | |
| + | == BluetoothDevicesSettings == |
| + | This is "nn::settings::system::BluetoothDevicesSettings". This is a 0x200-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x6 || [[Bluetooth_Driver_services#Address|Address]] |
| + | |- |
| + | | 0x6 || 0x20 || Name string |
| + | |- |
| + | | 0x26 || 0x2 || |
| + | |- |
| + | | 0x28 || 0x1 || |
| + | |- |
| + | | 0x29 || 0x10 || Uuid |
| + | |- |
| + | | 0x39 || 0x1 || |
| + | |- |
| + | | 0x3A || 0x2 || |
| + | |- |
| + | | 0x3C || 0x4 || |
| + | |- |
| + | | 0x40 || 0x2 || |
| + | |- |
| + | | 0x42 || 0x2 || |
| + | |- |
| + | | 0x44 || 0x2 || |
| + | |- |
| + | | 0x46 || 0x80 || |
| + | |- |
| + | | 0xC6 || 0x2 || |
| + | |- |
| + | | 0xC8 || 0x1 || |
| + | |- |
| + | | 0xC9 || 0x1 || |
| + | |- |
| + | | 0xCA || 0x2 || |
| + | |- |
| + | | 0xCC || 0x8 || |
| + | |- |
| + | | 0xD4 || 0x1 || |
| + | |- |
| + | | 0xD5 || 0x12B || |
| + | |} |
| | | |
| = System Configuration = | | = System Configuration = |