NIM Services: Difference between revisions
| m Add anchors | |||
| (28 intermediate revisions by 10 users not shown) | |||
| Line 1: | Line 1: | ||
| __TOC__ | |||
| = NIM  | {{Anchor|NIMU}}{{Anchor|nim:u}} | ||
| = NIM updater service "nim:u" = | |||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| |- | |- | ||
| Line 7: | Line 8: | ||
| |- | |- | ||
| | 0x00010000 | | 0x00010000 | ||
| |  | | [[NIMU:StartNetworkUpdate|StartNetworkUpdate]] | ||
| |- | |- | ||
| | 0x00020000 | | 0x00020000 | ||
| | [[NIMU: | | [[NIMU:GetProgress|GetProgress]] | ||
| |- | |- | ||
| |  | | 0x00030000 | ||
| |  | | [[NIMU:Cancel|Cancel]] | ||
| |- | |- | ||
| | 0x00040000 | | 0x00040000 | ||
| | [[NIMU: | | [[NIMU:CommitSystemTitles|CommitSystemTitles]] | ||
| |- | |- | ||
| | 0x00050000 | | 0x00050000 | ||
| |  | | [[NIMU:GetBackgroundEventForMenu|GetBackgroundEventForMenu]] | ||
| |- | |- | ||
| |  | | 0x00060000 | ||
| |  | | [[NIMU:GetBackgroundEventForNews|GetBackgroundEventForNews]] | ||
| |- | |- | ||
| |  | | 0x00070000 | ||
| |  | | [[NIMU:FormatSaveData|FormatSaveData]] | ||
| |- | |- | ||
| |  | | 0x00080000 | ||
| |  | | [[NIMU:GetCustomerSupportCode|GetCustomerSupportCode]] | ||
| |- | |- | ||
| | 0x00090000 | | 0x00090000 | ||
| | [[NIMU: | | [[NIMU:IsCommittableAllSystemTitles|IsCommittableAllSystemTitles]] | ||
| |- | |- | ||
| | 0x000A0000 | | 0x000A0000 | ||
| |  | | [[NIMU:GetBackgroundProgress|GetBackgroundProgress]] | ||
| |- | |- | ||
| | 0x000B0000 | | 0x000B0000 | ||
| | [[NIMU: | | [[NIMU:GetSavedHash|GetSavedHash]] | ||
| |- | |||
| | 0x000C0082 | |||
| | [[NIMU:UnregisterTask|UnregisterTask]] | |||
| |- | |||
| | 0x000D0080 | |||
| | [[NIMU:IsRegistered|IsRegistered]] | |||
| |- | |||
| | 0x000E0080 | |||
| | [[NIMU:FindTaskInfo|FindTaskInfo]] | |||
| |- | |||
| | 0x000F0042 | |||
| | [[NIMU:GetTaskInfos|GetTaskInfos]] | |||
| |- | |||
| | 0x00100000 | |||
| | [[NIMU:DeleteUnmanagedContexts|DeleteUnmanagedContexts]] | |||
| |- | |||
| | 0x00110000 | |||
| | [[NIMU:UpdateAutoTitleDownloadTasksAsync|UpdateAutoTitleDownloadTasksAsync]] | |||
| |- | |||
| | 0x00120000 | |||
| | [[NIMU:StartPendingAutoTitleDownloadTasksAsync|StartPendingAutoTitleDownloadTasksAsync]] | |||
| |- | |||
| | 0x00130000 | |||
| | [[NIMU:GetAsyncResult|GetAsyncResult]] | |||
| |- | |||
| | 0x00140000 | |||
| | [[NIMU:CancelAsyncCall|CancelAsyncCall]] | |||
| |- | |||
| | 0x00150000 | |||
| | [[NIMU:IsPendingAutoTitleDownloadTasks|IsPendingAutoTitleDownloadTasks]] | |||
| |- | |||
| | 0x00160000 | |||
| | [[NIMU:GetNumAutoTitleDownloadTasks|GetNumAutoTitleDownloadTasks]] | |||
| |- | |||
| | 0x00170042 | |||
| | [[NIMU:GetAutoTitleDownloadTaskInfos|GetAutoTitleDownloadTaskInfos]] | |||
| |- | |||
| | 0x00180080 | |||
| | [[NIMU:CancelAutoTitleDownloadTask|CancelAutoTitleDownloadTask]] | |||
| |- | |||
| | 0x00190002 | |||
| | [[NIMU:SetAutoDbgDat|SetAutoDbgDat]] | |||
| |- | |||
| | 0x001A0002 | |||
| | [[NIMU:GetAutoDbgDat|GetAutoDbgDat]] | |||
| |- | |||
| | 0x001B0042 | |||
| | [[NIMU:SetDbgTasks|SetDbgTasks]] | |||
| |- | |||
| | 0x001C0042 | |||
| | [[NIMU:GetDbgTasks|GetDbgTasks]] | |||
| |- | |||
| | 0x001D0000 | |||
| | [[NIMU:DeleteDbgData|DeleteDbgData]] | |||
| |- | |||
| | 0x001E0042 | |||
| | [[NIMU:SetTslXml|SetTslXml]] | |||
| |- | |||
| | 0x001F0000 | |||
| | [[NIMU:GetTslXmlSize|GetTslXmlSize]] | |||
| |- | |||
| | 0x00200042 | |||
| | [[NIMU:GetTslXml|GetTslXml]] | |||
| |- | |||
| | 0x00210000 | |||
| | [[NIMU:DeleteTslXml|DeleteTslXml]] | |||
| |- | |||
| | 0x00220042 | |||
| | [[NIMU:SetDtlXml|SetDtlXml]] | |||
| |- | |||
| | 0x00230000 | |||
| | [[NIMU:GetDtlXmlSize|GetDtlXmlSize]] | |||
| |- | |||
| | 0x00240042 | |||
| | [[NIMU:GetDtlXml|GetDtlXml]] | |||
| |- | |||
| | 0x00250000 | |||
| | [[NIMU:UpdateAccountStatus|UpdateAccountStatus]] | |||
| |- | |||
| | 0x00260180 | |||
| | [[NIMU:StartTitleDownload|StartTitleDownload]] | |||
| |- | |||
| | 0x00270000 | |||
| | [[NIMU:StopTitleDownload|StopTitleDownload]] | |||
| |- | |||
| | 0x00280000 | |||
| | [[NIMU:GetTitleDownloadProgress|GetTitleDownloadProgress]] | |||
| |- | |||
| | 0x00290246 | |||
| | [[NIMU:RegisterTask|RegisterTask]] | |||
| |- | |||
| | 0x002A0000 | |||
| | [[NIMU:IsSystemUpdateAvailable|IsSystemUpdateAvailable]] | |||
| |- | |||
| | 0x002B0000 | |||
| | ? (Response: 0 = 0x002B0040, 1 = Result Code) | |||
| |- | |||
| | 0x002C0000 | |||
| | [[NIMU:UpdateTickets|UpdateTickets]] | |||
| |- | |||
| | 0x002D00C0 | |||
| | [[NIMU:DownloadTitleSeedAsync|DownloadTitleSeedAsync]] | |||
| |- | |||
| | 0x002E0000 | |||
| | [[NIMU:DownloadMissingTitleSeedsAsync|DownloadMissingTitleSeedsAsync]] | |||
| |- | |||
| |} | |} | ||
| = NIM  | {{Anchor|NIMS}}{{Anchor|nim:s}} | ||
| = NIM shop service "nim:s" = | |||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| |- | |- | ||
| !  Command Header | !  Command Header | ||
| !  Description | !  Description | ||
| |- | |||
| | 0x00010200 | |||
| | [[NIMS:StartDownloadSimple|StartDownloadSimple]] | |||
| |- | |||
| | 0x00020000 | |||
| | [[NIMS:CancelDownload|CancelDownload]] | |||
| |- | |||
| | 0x00030000 | |||
| | [[NIMS:GetProgress|GetProgress]] | |||
| |- | |||
| | 0x00050082 | |||
| | [[NIMS:UnregisterTask|UnregisterTask]] | |||
| |- | |- | ||
| | 0x00060080 | | 0x00060080 | ||
| |  | | [[NIMS:IsTaskRegistered|IsTaskRegistered]] | ||
| |- | |||
| | 0x00070080 | |||
| | GetTaskInfoFromTitleId | |||
| |- | |||
| | 0x00080042 | |||
| | GetTaskList | |||
| |- | |||
| | 0x0009xxxx | |||
| | Returns 0xE0C0D3F4, not implemented. | |||
| |- | |- | ||
| | 0x000A0000 | | 0x000A0000 | ||
| | [[NIMS:CheckSysupdateAvailableSOAP|CheckSysupdateAvailableSOAP]] | | [[NIMS:CheckSysupdateAvailableSOAP|CheckSysupdateAvailableSOAP]] | ||
| |- | |||
| | 0x000B0084 | |||
| | [[NIMS:SetAttribute|SetAttribute]] | |||
| |- | |||
| | 0x000C0082 | |||
| | SetAttributeInt32 | |||
| |- | |||
| | 0x000D0082 | |||
| | Connect | |||
| |- | |||
| | 0x000E0000 | |||
| | UnregisterSOAP, aka soap account delete | |||
| |- | |||
| | 0x000F0042 | |||
| | SetCountrySOAP, change effective country registry | |||
| |- | |||
| | 0x00100080 | |||
| | Returns 0xE0C0D3F4, not implemented, reads for an int64 in IPC. | |||
| |- | |||
| | 0x001100C4 | |||
| | Returns 0xE0C0D3F4, not implemented, reads for IPC parameters. | |||
| |- | |||
| | 0x00120084 | |||
| | SetExternalAccountSOAP | |||
| |- | |||
| | 0x00130042 | |||
| | DeleteExternalAccountSOAP | |||
| |- | |||
| | 0x00140000 | |||
| | DeleteSavedCardSOAP | |||
| |- | |||
| | 0x00150082 | |||
| | ListCashReplenishAmountsSOAP | |||
| |- | |- | ||
| | 0x0016020A | | 0x0016020A | ||
| | [[NIMS:ListTitles|ListTitles]] | | [[NIMS:ListTitles|ListTitles]] | ||
| |- | |||
| | 0x0017020A | |||
| | ListContentSetsExSOAP | |||
| |- | |||
| | 0x0018020A | |||
| | ListItemsSOAP | |||
| |- | |||
| | 0x0019028C | |||
| | ListContentSetGroupsSOAP | |||
| |- | |||
| | 0x001E0104 | |||
| | GetTaxesSOAP | |||
| |- | |||
| | 0x001F0106 | |||
| | GetTaxLocationSOAP | |||
| |- | |||
| | 0x00220080 | |||
| | AccountDeleteTitleETicketsSOAP. The SOAP request is sent only after the ticket for the specified titleID has been successfully deleted. | |||
| |- | |||
| | 0x00290000 | |||
| | [[NIMS:AccountCheckBalanceSOAP|AccountCheckBalanceSOAP]] | |||
| |- | |- | ||
| | 0x002D0042 | | 0x002D0042 | ||
| | [[NIMS:DownloadTickets|DownloadTickets]] | | [[NIMS:DownloadTickets|DownloadTickets]] | ||
| |- | |||
| | 0x0036xxxx | |||
| | Returns 0xE0C0D3F4, not implemented. | |||
| |- | |||
| | 0x003C0002 | |||
| | [[NIMS:RegisterSelf|RegisterSelf]] | |||
| |- | |||
| | 0x003F0000 | |||
| | GetInitializeResult. Checks whether nim is properly initialized or not. If it is not, the result code returned is non-zero. | |||
| |- | |- | ||
| | 0x00420240 | | 0x00420240 | ||
| | [[NIMS:StartDownload|StartDownload]] | | [[NIMS:StartDownload|StartDownload]] | ||
| |- | |||
| | 0x00550246 | |||
| | [[NIMS:RegisterTask|RegisterTask]] | |||
| |- | |||
| | 0x00570082 | |||
| | [[NIMS:ConnectNoTicketDownload|ConnectNoTicketDownload]] | |||
| |- | |||
| | 0x005B0000 | |||
| | DeleteInitAccSavedData | |||
| |- | |||
| | 0x005C0000 | |||
| | DeleteAccountSavedData | |||
| |- | |||
| | 0x005F00C0 | |||
| | DownloadTitleSeed | |||
| |} | |} | ||
| {{Anchor|NIMAOC}}{{Anchor|nim:aoc}} | |||
| = NIM server service "nim:aoc" = | = NIM server service "nim:aoc" = | ||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| Line 93: | Line 301: | ||
| |} | |} | ||
| {{Anchor|NIMNDM}}{{Anchor|nim:ndm}} | |||
| = NIM service "nim:ndm" = | = NIM service "nim:ndm" = | ||
| {| class="wikitable" border="1" | |||
| |- | |||
| !  Command Header | |||
| !  Description | |||
| |- | |||
| | 0x00010000 | |||
| | GetDaemonEventHandle | |||
| |- | |||
| | 0x00020000 | |||
| | Does nothing, always returns 0 | |||
| |- | |||
| | 0x00030000 | |||
| | SetDaemonToWorkingState | |||
| |- | |||
| | 0x00040040 | |||
| | SetDaemonToSuspendedState | |||
| |- | |||
| | 0x00050000 | |||
| | GetDaemonState | |||
| |- | |||
| |} | |||
| = kagiya server = | = kagiya server = | ||
| Line 105: | Line 335: | ||
| ==Trusted RootCAs== | ==Trusted RootCAs== | ||
| During startup NIM-module creates two RootCertChains with [[HTTP_Services|HTTPC]]. Both of these only contain the same [[HTTPC:RootCertChainAddDefaultCert|default]] cert with ID 0x3. The first RootCertChain is used with NetUpdateSOAP. Requests such as the "notifications.json" page don't use these RootCertChains(in this case just [[HTTPC:AddDefaultCert|default]] certID 0xB is used). | During startup NIM-module creates two RootCertChains with [[HTTP_Services|HTTPC]]. Both of these only contain the same [[HTTPC:RootCertChainAddDefaultCert|default]] cert with ID 0x3. The first RootCertChain is used with NetUpdateSOAP. Requests such as the "notifications.json" page don't use these RootCertChains(in this case just [[HTTPC:AddDefaultCert|default]] certID 0xB is used). | ||
| ==SOAP== | |||
| ===NetUpdateSOAP=== | |||
| There are exactly 3 types of network SOAP requests used with [https://nus.c.shop.nintendowifi.net/nus/services/NetUpdateSOAP NetUpdateSOAP] by NIM module, described below. This URL contained in NIM module itself is only used with GetSystemTitleHash. The other requests use an identical URL loaded from an ECommerceSOAP response instead. | |||
| See also [https://github.com/yellows8/ninupdates here]. | |||
| ====GetSystemUpdate==== | |||
| Returns the current sysupdate title-listing. This also contains the SystemTitleHash returned by GetSystemTitleHash. | |||
| ====GetSystemTitleHash==== | |||
| Returns the current SystemTitleHash for the current sysupdate title-listing. | |||
| ====GetSystemCommonETicket==== | |||
| Returns the Base64-encoded cetk for each specified TitleId entry. | |||
| This is only used when installing new titles. This means with CDN system-updates, tickets are never installed except when a title is being installed for the first time. For example, a system on the latest system-version that was only ever updated via CDN has the same NATIVE_FIRM ticket installed from the factory. | |||
| =Sysupdate checking process= | =Sysupdate checking process= | ||
| Line 113: | Line 361: | ||
| The GetSystemUpdate SOAP request contains a titlelist of all NAND system-titles. For GetSystemUpdate response parsing, it compares each SOAP title_entry with the NAND system titlelist. If a SOAP titleID isn't found in the NAND titlelist, this means NAND is missing a new title and hence a sysupdate is required for installing that title. If a NAND title_entry-version is less than the SOAP title_entry-version, this means the title needs updated and hence a sysupdate is required. | The GetSystemUpdate SOAP request contains a titlelist of all NAND system-titles. For GetSystemUpdate response parsing, it compares each SOAP title_entry with the NAND system titlelist. If a SOAP titleID isn't found in the NAND titlelist, this means NAND is missing a new title and hence a sysupdate is required for installing that title. If a NAND title_entry-version is less than the SOAP title_entry-version, this means the title needs updated and hence a sysupdate is required. | ||
| At least one <TitleVersion> entry with valid data in the GetSystemUpdate response is required. | |||
| The titleIDs sent in the GetSystemUpdate SOAP request are decimal, while the titleIDs in the response are hex. | The titleIDs sent in the GetSystemUpdate SOAP request are decimal, while the titleIDs in the response are hex. | ||
| Line 127: | Line 375: | ||
| | 0x60 | | 0x60 | ||
| | 0x1 | | 0x1 | ||
| | u8 flag used with the SystemTitleHash. | | u8 flag used with the SystemTitleHash. 0x01 = latest sysupdate isn't installed as of last SOAP requests, 0x03 = latest sysupdate is installed as of last SOAP requests. | ||
| |- | |- | ||
| | 0x61 | | 0x61 | ||
| | 0x21 | | 0x21 | ||
| | ASCII hex SystemTitleHash. This is the latest SystemTitleHash which NIM module received from SOAP. | | ASCII hex SystemTitleHash, including NUL-terminator. This is the latest SystemTitleHash which NIM module received from SOAP. | ||
| |} | |||
| =Types= | |||
| ==SystemUpdateProgress== | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| !  Offset | |||
| !  Length | |||
| !  Description | |||
| |- | |||
| | 0x00 | |||
| | 0x01 | |||
| | [[#SystemUpdateState|System Update State]] | |||
| |- | |||
| | 0x01 | |||
| | 0x03 | |||
| | Padding | |||
| |- | |||
| | 0x04 | |||
| | 0x04 | |||
| | Last Operation Result Code | |||
| |- | |||
| | 0x08 | |||
| | 0x08 | |||
| | Current Title Downloaded Bytes | |||
| |- | |||
| | 0x10 | |||
| | 0x08 | |||
| | Current Title Total Bytes | |||
| |- | |||
| | 0x18 | |||
| | 0x08 | |||
| | Titles Downloaded | |||
| |- | |||
| | 0x20 | |||
| | 0x08 | |||
| | Titles Total | |||
| |} | |||
| ==SystemUpdateState== | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| !  Value | |||
| !  Description | |||
| |- | |||
| | 0 | |||
| | Not Initialized | |||
| |- | |||
| | 1 | |||
| | Starting System Update | |||
| |- | |||
| | 2 | |||
| | Fetching System Hash and Account Status | |||
| |- | |||
| | 3 | |||
| | Installing New Tickets | |||
| |- | |||
| | 4 | |||
| | Installing Titles | |||
| |- | |||
| | 5 | |||
| | Update Complete | |||
| |- | |||
| | 6 | |||
| | Failed - System Updates Disabled (Dev Units Only) | |||
| |- | |||
| | 7 | |||
| | ? (Only for background updates) | |||
| |- | |||
| | 8 | |||
| | ? (Only for background updates) | |||
| |} | |||
| ==TitleDownloadProgress== | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| !  Offset | |||
| !  Length | |||
| !  Description | |||
| |- | |||
| | 0x00 | |||
| | 0x01 | |||
| | [[#TitleDownloadState|Title Download State]] | |||
| |- | |||
| | 0x01 | |||
| | 0x03 | |||
| | Padding | |||
| |- | |||
| | 0x04 | |||
| | 0x04 | |||
| | Last Operation Result Code | |||
| |- | |||
| | 0x08 | |||
| | 0x08 | |||
| | Downloaded Bytes | |||
| |- | |||
| | 0x10 | |||
| | 0x08 | |||
| | Total Bytes | |||
| |} | |||
| ==TitleDownloadState== | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| !  Value | |||
| !  Description | |||
| |- | |||
| | 0 | |||
| | Not Initialized | |||
| |- | |||
| | 1 | |||
| | Starting Title Download | |||
| |- | |||
| | 2 | |||
| | Downloading and Installing TMD | |||
| |- | |||
| | 3 | |||
| | Committing TMD | |||
| |- | |||
| | 4 | |||
| | Downloading and Installing Contents | |||
| |- | |||
| | 5 | |||
| | Contents Installed | |||
| |- | |||
| | 6 | |||
| | [[AM:CommitImportPrograms|Committing Titles]] | |||
| |- | |||
| | 7 | |||
| | Finished | |||
| |- | |||
| | 8 | |||
| | ? (Unknown error regarding title version?) | |||
| |- | |||
| | 9 | |||
| | ? (Creating the .ctx file (or error doing so)?) | |||
| |- | |||
| | 10 | |||
| | Background Download Failed | |||
| |} | |||
| ==TitleDownloadConfig== | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| !  Offset | |||
| !  Length | |||
| !  Description | |||
| |- | |||
| | 0x00 | |||
| | 0x08 | |||
| | Title ID | |||
| |- | |||
| | 0x08 | |||
| | 0x04 | |||
| | Title version | |||
| |- | |||
| | 0x0C | |||
| | 0x04 | |||
| | Unknown (always 0?) | |||
| |- | |||
| | 0x10 | |||
| | 0x01 | |||
| | Age Rating (for HOME Menu parental controls) | |||
| |- | |||
| | 0x11 | |||
| | 0x01 | |||
| | [[Filesystem_services#MediaType|Media Type]] | |||
| |- | |||
| | 0x12 | |||
| | 0x02 | |||
| | Padding | |||
| |- | |||
| | 0x14 | |||
| | 0x04 | |||
| | Unknown (always 0?) | |||
| |} | |} | ||
| ==BackgroundTitleDownloadConfig== | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| !  Offset | |||
| !  Length | |||
| !  Description | |||
| |- | |||
| | 0x000 | |||
| | 0x018 | |||
| | [[#TitleDownloadConfig|Title Download Config]] | |||
| |- | |||
| | 0x018 | |||
| | 0x001 | |||
| | Unknown | |||
| |- | |||
| | 0x019 | |||
| | 0x001 | |||
| | Unknown | |||
| |- | |||
| | 0x01A | |||
| | 0x006 | |||
| | Padding | |||
| |- | |||
| | 0x020 | |||
| | 0x008 | |||
| | Requester Title ID | |||
| |- | |||
| | 0x028 | |||
| | 0x090 | |||
| | Title Name (UTF-16) | |||
| |- | |||
| | 0x0B8 | |||
| | 0x002 | |||
| | Title Name Forced NUL Terminator (always 0) | |||
| |- | |||
| | 0x0BA | |||
| | 0x048 | |||
| | Developer Name (UTF-16) | |||
| |- | |||
| | 0x102 | |||
| | 0x002 | |||
| | Developer Name Forced NUL Terminator (always 0) | |||
| |} | |||
| ==BackgroundTitleDownloadTaskInfo== | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| !  Offset | |||
| !  Length | |||
| !  Description | |||
| |- | |||
| | 0x000 | |||
| | 0x104 | |||
| | [[#BackgroundTitleDownloadConfig|Background Title Download Config]] | |||
| |- | |||
| | 0x104 | |||
| | 0x004 | |||
| | Padding | |||
| |- | |||
| | 0x108 | |||
| | 0x018 | |||
| | [[#TitleDownloadProgress|Title Download Progress]] | |||
| |} | |||
| ==AutoTitleDownloadTaskInfo== | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| !  Offset | |||
| !  Length | |||
| !  Description | |||
| |- | |||
| | 0x000 | |||
| | 0x008 | |||
| | Task ID | |||
| |- | |||
| | 0x008 | |||
| | 0x008 | |||
| | Title ID | |||
| |- | |||
| | 0x010 | |||
| | 0x004 | |||
| | Title Version | |||
| |- | |||
| | 0x014 | |||
| | 0x014 | |||
| | Unknown | |||
| |- | |||
| | 0x028 | |||
| | 0x008 | |||
| | Required Storage Space | |||
| |- | |||
| | 0x030 | |||
| | 0x004 | |||
| | Last Operation Result code | |||
| |- | |||
| | 0x034 | |||
| | 0x004 | |||
| | Last Operation Customer Support Code | |||
| |- | |||
| | 0x038 | |||
| | 0x090 | |||
| | Title Name (UTF-16) | |||
| |- | |||
| | 0x0C8 | |||
| | 0x002 | |||
| | Title Name Forced NUL Terminator (always 0) | |||
| |- | |||
| | 0x0CA | |||
| | 0x048 | |||
| | Developer Name (UTF-16) | |||
| |- | |||
| | 0x112 | |||
| | 0x002 | |||
| | Developer Name Forced NUL Terminator (always 0) | |||
| |- | |||
| | 0x114 | |||
| | 0x024 | |||
| | Unknown | |||
| |} | |||
| ==InstallationMode== | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| !  Value | |||
| !  Description | |||
| |- | |||
| | 0 | |||
| | Initial Installation | |||
| |- | |||
| | 1 | |||
| | Unknown | |||
| |- | |||
| | 2 | |||
| | Unknown | |||
| |- | |||
| | 3 | |||
| | Re-installation | |||
| |} | |||
| ==Autodbg== | |||
| Despite this being for debug purposes, it's used in retail if present. | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| !  Offset | |||
| !  Length | |||
| !  Description | |||
| |- | |||
| | 0x000 | |||
| | 0x004 | |||
| | Debug flags | |||
| |- | |||
| | 0x004 | |||
| | 0x004 | |||
| | Number of debug tasks in dbgtasks.dat | |||
| |- | |||
| | 0x008 | |||
| | 0x100 | |||
| | Debug URL dst.xml override | |||
| |} | |||
| ===Autodbg flag bits=== | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| !  Bit | |||
| !  Description | |||
| |- | |||
| | 0 | |||
| | Use the tasks stored in dbgtasks.dat | |||
| |- | |||
| | 1 | |||
| | Use provided debug dtl.xml URL override | |||
| |- | |||
| | 2 | |||
| | Disable the download of dtl.xml | |||
| |- | |||
| | 3 | |||
| | Skip connecting to SOAP EC and download ETickets with a false success result during TSL processing | |||
| |- | |||
| | 4 | |||
| | Fake assume always ticket is present during TSL task condition processing | |||
| |- | |||
| | 5 | |||
| | Skip NPNS notification fetch for auto title downloads with a false success result | |||
| |} | |||
| =Error Results= | |||
| ==NIM Results== | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| !  Result | |||
| !  Description | |||
| |- | |||
| | 0xE0E0D001 | |||
| | Non-null terminated string on IPC parameter for given length. | |||
| |- | |||
| | 0xD960D003 | |||
| | SOAP EC/NUP manager internal error number translation of unhandled values or -4199. | |||
| |- | |||
| | 0xD960D004 | |||
| | Unexpected/invalid state enums. (generic) | |||
| |- | |||
| | 0xC820D005 | |||
| | Invalid state under one title install manager. | |||
| |- | |||
| | 0xD8A0D006 | |||
| | Error state enum value. (generic) | |||
| |- | |||
| | 0xC920D008 | |||
| | When content downloading, HTTP Status was not 200 or 206 when connecting, and when status is 206, the Content-Range values failed sanity check. | |||
| |- | |||
| | 0xC920D009 | |||
| | Mismatch system title hash with server system title hash. | |||
| |- | |||
| | 0xC960D00C | |||
| | Failed to convert country enum value in CFG save block 0xB0000 to country ISO 3166-1 Alpha-2 code. | |||
| |- | |||
| | 0xC960D00D | |||
| | CFG didn't reply any serial number or dummy serial number "000000000000000" was given. | |||
| |- | |||
| | 0xC860D00E | |||
| | Max total size exceeded for system update pending titles. (128 MiB) | |||
| |- | |||
| | 0xC880D00F | |||
| | *to be filled* | |||
| |- | |||
| | 0xC8E0D011 | |||
| | Bad condition, title id for purpose or size under one title install manager. | |||
| |- | |||
| | 0xC960D012 | |||
| | Invalid .dat or less than expected size of buffer length read from .dat save files during raw data load. | |||
| |- | |||
| | 0xC960D013 | |||
| | Daemon service is suspended. | |||
| |- | |||
| | 0xC8A0D014 | |||
| | *to be filled* | |||
| |- | |||
| | 0xC960D015 | |||
| | Version mismatch for reinstall condition. | |||
| |- | |||
| | 0xC960D016 | |||
| | Used in a few contexts where length does not match expected or the limit. Example, seed data size from HTTP is not 16 bytes. | |||
| |- | |||
| | 0xC920D017 | |||
| | SetIVSData will not perform, conditions are not adequate to set IVS. In Service Standby mode or not registered successfully in IAS. | |||
| |- | |||
| | 0xC920D019 | |||
| | Certain EC connect flows disallowed to continue while IVS is waiting to be synced from servers. System Transfer has previously occurred and IVS is pending. | |||
| |- | |||
| | 0xC920D01A | |||
| | For nim:s IPC cmd id 0x40, IVS not flagged for synchronization on target console on EC connect after system transfer. | |||
| |- | |||
| | 0xC960D01B | |||
| | Failed to convert language enum value in CFG save block 0xA0002 to language ISO 639-1 code. | |||
| |- | |||
| | 0xE0E0D01C | |||
| | Invalid installation mode for some IPC contexts. | |||
| |- | |||
| | 0xE0C0D01E | |||
| | May be either: | |||
| * Trying to set autodbg or dbgtasks with too many tasks on nim:u IPC cmd ids 0x19 and 0x1B, respectively. | |||
| * Non debug ENVINFO when calling debug version of get balance nim:s IPC cmd id 0x56. | |||
| * A boolean parameter for nim:s IPC cmd id 0x58 was set false. | |||
| |- | |||
| | 0xD860D020 | |||
| | May be either: | |||
| * Result translation of 0xC860D06E if returned by the early attributes filter handler. | |||
| * If the internal Work-only heap fails to initialize with buffer length lesser than 32 bytes. This buffer is given over IPC. | |||
| |- | |||
| | 0xC860D021 | |||
| | Task manager has run out of task slots. | |||
| |- | |||
| | 0xC920D022 | |||
| | Buffer size too small for ticket length on nim:aoc IPC cmd id 0x1B. | |||
| |- | |||
| | 0xD880D023 | |||
| | When Account Id missing for nim:aoc IPC cmd id 0x1B and 0x20 or when Account Id or Token are missing for nim:s IPC cmd id 0x53. | |||
| |- | |||
| | 0xD860D024 | |||
| | Failed to initialize Data Heap using buffer given over IPC. | |||
| |- | |||
| | 0xD920D025 | |||
| | SOAP reply implied that Service Standby mode is enabled. Certain EC flows cancelled. | |||
| |- | |||
| | 0xC8A0D026 | |||
| | May be either: | |||
| * Result translation, NIM ran into NPNS result 0xD8A15C06 or NIM result 0xD960D02B. | |||
| * System updates pending while trying to SOAP EC connect with ETicket download while processing auto downloads. | |||
| |- | |||
| | 0xC8A0D027 | |||
| | This occurs under certain code paths. | |||
| <ol> | |||
| <li>Result translation of result error from:</li> | |||
| <ul><li>HTTP module</li></ul> | |||
| <ul><li>SSL module</li></ul> | |||
| <ul><li>NIM module if description is between 100 to 299 (inclusive), 200 descriptions to fit the reserved range of the SOAP manager internal error range of -4000 to -4199 </li></ul> | |||
| <li>Unexpected HTTP status, followed up also by generating error integer with 54400 + http status, result value used as a 005-xxxx error</li> | |||
| </ol> | |||
| |- | |||
| | 0xD960D028 | |||
| | Generic XML parsing error. Not related to SOAP XML. | |||
| |- | |||
| | 0xD960D029 | |||
| | XML processor stub function called. Not related to SOAP XML. | |||
| |- | |||
| | 0xD960D02A | |||
| | Generic XML data processing error: bad length or insufficient memory. Not related to SOAP XML. | |||
| |- | |||
| | 0xD960D02B | |||
| | Result translation of 0xD960D028. | |||
| |- | |||
| | 0xD960D02C | |||
| | Auto download programmed max task count exceeded trying to add more to list. (64) | |||
| |- | |||
| | 0xD960D02D | |||
| | tsl.xml or tsl.xml.tmp couldn't be opened. FS result translation of description between 100 and 179, inclusive. | |||
| |- | |||
| | 0xD960D02E | |||
| | During tsl.xml task condition check. Still unclear, type of task check | |||
| |- | |||
| | 0xD960D030 | |||
| | During tsl.xml task condition check. Ticket missing for title when expected. Will not occur with autodbg flag bit 4 set. | |||
| |- | |||
| | 0xD960D031 | |||
| | During tsl.xml task condition check. Title already installed when not overwrite mode. | |||
| |- | |||
| | 0xD960D032 | |||
| | During tsl.xml task condition check. Task for title already exists with same or higher version in task.dat. | |||
| |- | |||
| | 0xD960D033 | |||
| | During tsl.xml task condition check. Task for title already exists in task.dat. | |||
| |- | |||
| | 0xD8E0D034 | |||
| | During tsl.xml task condition check. Unexpected task title type. | |||
| |- | |||
| | 0xD960D035 | |||
| | During tsl.xml task condition check. Tsl.xml task will not be processed while max programmed maximum for tasks pending in task.dat is equal or exceeded. (10) | |||
| |- | |||
| | 0xD960D037 | |||
| | Failed to load saved dtl.xml with result error of FS with description between 100 and 179, inclusive. | |||
| |- | |||
| | 0xD960D038 | |||
| | During tsl.xml task condition check. Not enough space for target SDMC user title. | |||
| |- | |||
| | 0xD8A0D03A | |||
| | No valid NPNS X-Device-Token was available while trying to fetch it from CFG save block 0xF0006. | |||
| |- | |||
| | 0xD940D03B | |||
| | Selected tsl.xml task was cancelled with nim:u IPC cmd id 0x18. | |||
| |- | |||
| | 0xD960D03C | |||
| | Result translation for 0xD960D028 while trying to read XML. Not related to SOAP XML. | |||
| |- | |||
| | 0xD8A0D03D | |||
| | During tsl.xml task condition check. SDMC not inserted or non-writable for SDMC title. (bad media status) | |||
| |- | |||
| | 0xD960D03E | |||
| | During tsl.xml task condition check. Not enough space for target TWL user title. | |||
| |- | |||
| | 0xD940D03F | |||
| | NPNS notification url is not HTTPS. | |||
| |- | |||
| | 0xD940D040 | |||
| | NIM ran into NPNS result 0xD8A15C07. Result translation. | |||
| |- | |||
| | 0xD860D041 | |||
| | During tsl.xml task condition check. Pending task count of task.dat and installed SDMC user title count exceed programmed max. (300) | |||
| |- | |||
| | 0xD860D042 | |||
| | During tsl.xml task condition check. Pending task count of task.dat and installed TWL user title count exceed programmed max. (40) | |||
| |- | |||
| | 0xD880D043 | |||
| | HTTP 404 while fetching title crypto seed from kagiya. | |||
| |- | |||
| | 0xD880D044 | |||
| | HTTP 503 while fetching title crypto seed from kagiya. | |||
| |- | |||
| | 0xC960D065 | |||
| | SOAP EC/NUP manager internal error number translation of value -4001 | |||
| |- | |||
| | 0xE0C0D066 | |||
| | SOAP EC/NUP manager internal error number translation of value -4002 | |||
| |- | |||
| | 0xE0E0D068 | |||
| | SOAP EC/NUP manager internal error number translation of value -4004 | |||
| |- | |||
| | 0xC860D069 | |||
| | SOAP EC/NUP manager internal error number translation of value -4005 | |||
| |- | |||
| | 0xC880D06A | |||
| | SOAP EC/NUP manager internal error number translation of value -4006 | |||
| |- | |||
| | 0xC8A0D06B | |||
| | SOAP EC/NUP manager internal error number translation of value -4007 | |||
| |- | |||
| | 0xC8A0D06C | |||
| | SOAP EC/NUP manager internal error number translation of value -4008 | |||
| |- | |||
| | 0xC860D06E | |||
| | SOAP EC/NUP manager internal error number translation of value -4010 | |||
| |- | |||
| | 0xC920D073 | |||
| | SOAP EC/NUP manager internal error number translation of value -4015 | |||
| |- | |||
| | 0xC900D075 | |||
| | SOAP EC/NUP manager internal error number translation of value -4017 | |||
| |- | |||
| | 0xC860D076 | |||
| | SOAP EC/NUP manager internal error number translation of value -4018 | |||
| |- | |||
| | 0xC920D077 | |||
| | SOAP EC/NUP manager internal error number translation of value -4019 | |||
| |- | |||
| | 0xC900D084 | |||
| | SOAP EC/NUP manager internal error number translation of value -4032 | |||
| |- | |||
| | 0xC900D085 | |||
| | SOAP EC/NUP manager internal error number translation of value -4033 | |||
| |- | |||
| | 0xC920D086 | |||
| | SOAP EC/NUP manager internal error number translation of value -4034 | |||
| |- | |||
| | 0xC920D08A | |||
| | SOAP EC/NUP manager internal error number translation of value -4038 | |||
| |- | |||
| | 0xC900D08B | |||
| | SOAP EC/NUP manager internal error number translation of value -4039 | |||
| |- | |||
| | 0xC920D08C | |||
| | SOAP EC/NUP manager internal error number translation of value -4040 | |||
| |- | |||
| | 0xE0A0D08D | |||
| | SOAP EC/NUP manager internal error number translation of value -4041 | |||
| |- | |||
| | 0xC920D08F | |||
| | SOAP EC/NUP manager internal error number translation of value -4043 | |||
| |- | |||
| | 0xC920D095 | |||
| | SOAP EC/NUP manager internal error number translation of value -4049 | |||
| |- | |||
| | 0xE0E0D099 | |||
| | SOAP EC/NUP manager internal error number translation of value -4053 | |||
| |- | |||
| | 0xC900D09F | |||
| | SOAP EC/NUP manager internal error number translation of value -4059 | |||
| |- | |||
| | 0xE100D0A0 | |||
| | SOAP EC/NUP manager internal error number translation of value -4060 | |||
| |- | |||
| | 0xE100D0A1 | |||
| | SOAP EC/NUP manager internal error number translation of value -4061 | |||
| |- | |||
| | 0xC920D0A4 | |||
| | SOAP EC/NUP manager internal error number translation of value -4064 | |||
| |- | |||
| | 0xC920D0A7 | |||
| | SOAP EC/NUP manager internal error number translation of value -4067 | |||
| |- | |||
| | 0xC920D0A8 | |||
| | SOAP EC/NUP manager internal error number translation of value -4068 | |||
| |- | |||
| | 0xE0A0D0A9 | |||
| | SOAP EC/NUP manager internal error number translation of value -4069 | |||
| |- | |||
| | 0xC920D0AD | |||
| | SOAP EC/NUP manager internal error number translation of value -4073 | |||
| |- | |||
| | 0xC920D0B1 | |||
| | SOAP EC/NUP manager internal error number translation of value -4077 | |||
| |- | |||
| | 0xC920D0B3 | |||
| | SOAP EC/NUP manager internal error number translation of value -4079 | |||
| |- | |||
| | 0xC920D0B5 | |||
| | SOAP EC/NUP manager internal error number translation of value -4081 | |||
| |} | |||
| ==NPNS Results== | |||
| NPNS has a module number for results, but no module exists, but can be at least in part found inside NIM. | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| !  Result | |||
| !  Description | |||
| |- | |||
| | 0xC9215C00 | |||
| | Result translation, HTTP result 0xD8A0A018. | |||
| |- | |||
| | 0xD8615C01 | |||
| | Allocation error, insufficient memory. | |||
| |- | |||
| | 0xD8A15C02 | |||
| | HTTP non 2xx, json message processing, default error code switch result error. | |||
| |- | |||
| | 0xD8A15C03 | |||
| | JSON processing errors. | |||
| |- | |||
| | 0xD8A15C04 | |||
| | Notifications array bigger than expected. | |||
| |- | |||
| | 0xD8A15C05 | |||
| | HTTP Empty body response. | |||
| |- | |||
| | 0xD8A15C06 | |||
| | HTTP non 2xx, json message processing, error code 1003 given in json body. | |||
| |- | |||
| | 0xD8A15C07 | |||
| | HTTP non 2xx, json message processing, error code 1000 given in json body. | |||
| |- | |||
| | 0xD8A15C08 | |||
| | HTTP non 2xx, json message processing, error code 1004 given in json body. | |||
| |} | |||
| ==Other Results== | |||
| Any other result that is not given by other modules as a response, but found internally in NIM. | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| !  Result | |||
| !  Module value | |||
| !  Description | |||
| |- | |||
| | 0xD8600801 | |||
| | Util (2) | |||
| | Encoding errors. In NIM, if error while encoding base64 for X-Authentication-Key or X-Authentication-Data HTTP parameters. | |||
| |} | |||
| [[Category:Services]] | |||