Config Services

Config Services

Config service “cfg:u” #

Command HeaderAvailable since system versionDescription
0x00010082GetConfigInfoBlk2/GetConfig
0x00020000SecureInfoGetRegion/GetRegion
0x00030040GenHashConsoleUnique/GetTransferableId
0x000400003.0.0-5GetRegionCanadaUSA/IsCoppacsSupported
0x000500005.0.0-11GetSystemModel
0x000600006.0.0-11GetModelNintendo2DS
0x000700407.0.0-13(u8 val) This writes the input u8 to the first byte in the config-block for blkID 0x00160000.
0x000800807.0.0-13TranslateCountryInfo
0x000900407.0.0-13GetCountryCodeString
0x000A00407.0.0-13GetCountryCodeID
0x000B00009.3.0-XIsFangateSupported

Config service “cfg:s” #

cfg:s contains all the commands in cfg:u, in addition to the following:

Command HeaderAvailable since system versionDescription
0x04010082GetConfigInfoBlk8
0x04020082SetConfigInfoBlk4
0x04030000UpdateConfigNANDSavegame
0x04040042GetLocalFriendCodeSeedData
0x04050000GetLocalFriendCodeSeed
0x04060000SecureInfoGetRegion
0x04070000SecureInfoGetByte101
0x04080042SecureInfoGetSerialNo
0x04090000UpdateConfigBlk00040003
0x040A0000??
0x040B0000??
0x040C0000??
0x040D0040SetUUIDClockSequence
0x040E0000GetUUIDClockSequence
0x040F0000ClearParentalControls

CfgS command 0x04060000(SecureInfoGetRegion) is used by NIM module to determine the SOAP RegionId, when sending SOAP requests. See here.

Config service “cfg:i” #

cfg:i contains all the commands in cfg:u and cfg:s, in addition to the following:

Command HeaderAvailable since system versionDescription
0x08010082GetConfigInfoBlk8
0x08020082SetConfigInfoBlk4
0x08030000UpdateConfigNANDSavegame
0x080400C2CreateConfigInfoBlk
0x08050000DeleteConfigNANDSavefile
0x08060000FormatConfig
0x08070000This basically just returns result-code value 0x0, due to code this eventually executes being NOPed out.
0x08080000This updates the config blocks for blkIDs 0x0 and 0x20000. In certain cases this may call the code for FormatConfig.
0x08090000This updates the config block for blkID 0x60000.
0x080A0000ResetAnalogStickCalibrationParam? This updates the config block for blkID 0x00040001.
0x080B0082SetGetLocalFriendCodeSeedData
0x080C0042SetLocalFriendCodeSeedSignature
0x080D0000DeleteCreateNANDLocalFriendCodeSeed
0x080E0000VerifySigLocalFriendCodeSeed
0x080F0042GetLocalFriendCodeSeedData
0x08100000GetLocalFriendCodeSeed
0x08110084SetSecureInfo
0x08120000DeleteCreateNANDSecureInfo
0x08130000VerifySigSecureInfo
0x08140042SecureInfoGetData
0x08150042SecureInfoGetSignature
0x08160000SecureInfoGetRegion
0x08170000SecureInfoGetByte101
0x08180042SecureInfoGetSerialNo
0x0819….??
0x081A….??
0x081B….??
0x081C….??
0x081D….??
0x081E….??
0x081F….??
0x0820….??

Config NVRAM service “cfg:nor” #

Command HeaderDescription
0x00010040Initialize
0x00020000Shutdown
0x00030040(u8 flag) Writes the input flag to state. Uses SPI service command EnableSpiBus.
0x00040000Writes the u8 from the state written by 0x00030040 to cmdreply[2].
0x00050082ReadData
0x00060082WriteData
0x00070000This just uses the WREN command.
0x00080000This just uses the WRDI command.
0x00090000ReadIdentification
0x000A0000This waits for the WIP bit in the status register to clear(wait for writing to finish).
0x000B0000This waits for the WEL bit in the status register to become set(write enabled).
0x000C0000This writes the value of the WIP bit in the status register to u8 cmdreply[2].
0x000D0000This writes the value of the WIP bit in the status register to u8 cmdreply[2].
0x000E0000ReadStatusRegister
0x000F0082ReadDataOther
0x00100082WriteDataOther
0x00110040(u32 offset) Uses command WREN then waits for WEL to become enabled. Sends command 0xDB to SPI followed by the specified flash offset.
0x00120040(u32 offset) Identical to 0x00110040 except this uses SPI-command 0xD8 instead(“block erase”).
0x00130000This uses SPI command 0xB9 for “Deep power down”.
0x00140000This uses SPI command 0xAB for “Release from deep power down”.

This is an interface for the SPI::NOR service, for accessing the Wifi NVRAM/SPI Flash.

Category:Services