<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.3dbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Luigoalma</id>
	<title>3dbrew - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.3dbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Luigoalma"/>
	<link rel="alternate" type="text/html" href="https://www.3dbrew.org/wiki/Special:Contributions/Luigoalma"/>
	<updated>2026-04-14T19:44:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=22148</id>
		<title>NIM Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=22148"/>
		<updated>2023-03-08T01:11:04Z</updated>

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

		<summary type="html">&lt;p&gt;Luigoalma: This should be all NIM specific results codes, that are not using the common descriptions numbers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= NIM updater service &amp;quot;nim:u&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| [[NIMU:StartNetworkUpdate|StartNetworkUpdate]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[NIMU:GetProgress|GetProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| [[NIMU:Cancel|Cancel]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| [[NIMU:CommitSystemTitles|CommitSystemTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| [[NIMU:GetBackgroundEventForMenu|GetBackgroundEventForMenu]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| [[NIMU:GetBackgroundEventForNews|GetBackgroundEventForNews]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| [[NIMU:FormatSaveData|FormatSaveData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| [[NIMU:GetCustomerSupportCode|GetCustomerSupportCode]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[NIMU:IsCommittableAllSystemTitles|IsCommittableAllSystemTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[NIMU:GetBackgroundProgress|GetBackgroundProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| [[NIMU:GetSavedHash|GetSavedHash]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0082&lt;br /&gt;
| [[NIMU:UnregisterTask|UnregisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0080&lt;br /&gt;
| [[NIMU:IsRegistered|IsRegistered]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0080&lt;br /&gt;
| [[NIMU:FindTaskInfo|FindTaskInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0042&lt;br /&gt;
| [[NIMU:GetTaskInfos|GetTaskInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| [[NIMU:DeleteUnmanagedContexts|DeleteUnmanagedContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110000&lt;br /&gt;
| [[NIMU:UpdateAutoTitleDownloadTasksAsync|UpdateAutoTitleDownloadTasksAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00120000&lt;br /&gt;
| [[NIMU:StartPendingAutoTitleDownloadTasksAsync|StartPendingAutoTitleDownloadTasksAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| [[NIMU:GetAsyncResult|GetAsyncResult]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140000&lt;br /&gt;
| [[NIMU:CancelAsyncCall|CancelAsyncCall]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150000&lt;br /&gt;
| [[NIMU:IsPendingAutoTitleDownloadTasks|IsPendingAutoTitleDownloadTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00160000&lt;br /&gt;
| [[NIMU:GetNumAutoTitleDownloadTasks|GetNumAutoTitleDownloadTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170042&lt;br /&gt;
| [[NIMU:GetAutoTitleDownloadTaskInfos|GetAutoTitleDownloadTaskInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180080&lt;br /&gt;
| [[NIMU:CancelAutoTitleDownloadTask|CancelAutoTitleDownloadTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190002&lt;br /&gt;
| [[NIMU:SetAutoDbgDat|SetAutoDbgDat]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0002&lt;br /&gt;
| [[NIMU:GetAutoDbgDat|GetAutoDbgDat]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0042&lt;br /&gt;
| [[NIMU:SetDbgTasks|SetDbgTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0042&lt;br /&gt;
| [[NIMU:GetDbgTasks|GetDbgTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| [[NIMU:DeleteDbgData|DeleteDbgData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E0042&lt;br /&gt;
| [[NIMU:SetTslXml|SetTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0000&lt;br /&gt;
| [[NIMU:GetTslXmlSize|GetTslXmlSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200042&lt;br /&gt;
| [[NIMU:GetTslXml|GetTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| [[NIMU:DeleteTslXml|DeleteTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220042&lt;br /&gt;
| [[NIMU:SetDtlXml|SetDtlXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00230000&lt;br /&gt;
| [[NIMU:GetDtlXmlSize|GetDtlXmlSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240042&lt;br /&gt;
| [[NIMU:GetDtlXml|GetDtlXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| [[NIMU:UpdateAccountStatus|UpdateAccountStatus]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260180&lt;br /&gt;
| [[NIMU:StartTitleDownload|StartTitleDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270000&lt;br /&gt;
| [[NIMU:StopTitleDownload|StopTitleDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280000&lt;br /&gt;
| [[NIMU:GetTitleDownloadProgress|GetTitleDownloadProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290246&lt;br /&gt;
| [[NIMU:RegisterTask|RegisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0000&lt;br /&gt;
| [[NIMU:IsSystemUpdateAvailable|IsSystemUpdateAvailable]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0000&lt;br /&gt;
| ? (Response: 0 = 0x002B0040, 1 = Result Code)&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0000&lt;br /&gt;
| [[NIMU:UpdateTickets|UpdateTickets]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D00C0&lt;br /&gt;
| [[NIMU:DownloadTitleSeedAsync|DownloadTitleSeedAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0000&lt;br /&gt;
| [[NIMU:DownloadMissingTitleSeedsAsync|DownloadMissingTitleSeedsAsync]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM server service &amp;quot;nim:s&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010200&lt;br /&gt;
| [[NIMS:StartDownloadSimple|StartDownloadSimple]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[NIMS:CancelDownload|CancelDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| [[NIMS:GetProgress|GetProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050082&lt;br /&gt;
| [[NIMS:UnregisterTask|UnregisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060080&lt;br /&gt;
| [[NIMS:IsTaskRegistered|IsTaskRegistered]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[NIMS:CheckSysupdateAvailableSOAP|CheckSysupdateAvailableSOAP]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0084&lt;br /&gt;
| [[NIMS:SetAttribute|SetAttribute]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0016020A&lt;br /&gt;
| [[NIMS:ListTitles|ListTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220080&lt;br /&gt;
| AccountDeleteTitleETicketsSOAP. The SOAP request is sent only after the ticket for the specified titleID has been successfully deleted.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290000&lt;br /&gt;
| [[NIMS:AccountCheckBalanceSOAP|AccountCheckBalanceSOAP]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D0042&lt;br /&gt;
| [[NIMS:DownloadTickets|DownloadTickets]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C0002&lt;br /&gt;
| [[NIMS:RegisterSelf|RegisterSelf]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F0000&lt;br /&gt;
| GetInitializeResult. Checks whether nim is properly initialized or not. If it is not, the result code returned is non-zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420240&lt;br /&gt;
| [[NIMS:StartDownload|StartDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00550246&lt;br /&gt;
| [[NIMS:RegisterTask|RegisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00570082&lt;br /&gt;
| [[NIMS:ConnectNoTicketDownload|ConnectNoTicketDownload]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM server service &amp;quot;nim:aoc&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030042&lt;br /&gt;
| SetApplicationId&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040042&lt;br /&gt;
| SetTin&lt;br /&gt;
|-&lt;br /&gt;
| 0x000902D0&lt;br /&gt;
| ListContentSetsEx&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| GetBalance&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| GetCustomerSupportCode&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| Initialize&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240282&lt;br /&gt;
| CalculateContentsRequiredSize&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| RefreshServerTime&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM service &amp;quot;nim:ndm&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| GetDaemonEventHandle&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| Does nothing, always returns 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| SetDaemonToWorkingState&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040040&lt;br /&gt;
| SetDaemonToSuspendedState&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| GetDaemonState&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kagiya server =&lt;br /&gt;
The nim system module communicates with a server called kagiya (kagiya-ctr.cdn.nintendo.net or kagiya-dev-ctr.cdn.nintendo.net for development units). It provides the 9.6 crypto seed in binary form for any given title ID under (HTTPS) kagiya-ctr.cdn.nintendo.net/title/0x%16llx/ext_key?country=%s, where %16llx is the title ID and %s is a country code as used in the [[EShop|eShop]].&lt;br /&gt;
&lt;br /&gt;
=New3DS=&lt;br /&gt;
NIM module only uses [[PTMSYSM:CheckNew3DS|CheckNew3DS]] for determining what heap sizes to use, in two functions. One is for the size of the 0x08000000 vmem heap, the other is probably for some buffer allocated on that heap. The New3DS version of these sizes are 0x1C000-bytes larger than the Old3DS sizes here.&lt;br /&gt;
&lt;br /&gt;
=HTTPS requests=&lt;br /&gt;
&lt;br /&gt;
==Trusted RootCAs==&lt;br /&gt;
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 &amp;quot;notifications.json&amp;quot; page don&#039;t use these RootCertChains(in this case just [[HTTPC:AddDefaultCert|default]] certID 0xB is used).&lt;br /&gt;
&lt;br /&gt;
==SOAP==&lt;br /&gt;
&lt;br /&gt;
===NetUpdateSOAP===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
See also [https://github.com/yellows8/ninupdates here].&lt;br /&gt;
&lt;br /&gt;
====GetSystemUpdate====&lt;br /&gt;
Returns the current sysupdate title-listing. This also contains the SystemTitleHash returned by GetSystemTitleHash.&lt;br /&gt;
&lt;br /&gt;
====GetSystemTitleHash====&lt;br /&gt;
Returns the current SystemTitleHash for the current sysupdate title-listing.&lt;br /&gt;
&lt;br /&gt;
====GetSystemCommonETicket====&lt;br /&gt;
Returns the Base64-encoded cetk for each specified TitleId entry.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Sysupdate checking process=&lt;br /&gt;
This section describes the process used when checking whether a sysupdate is required.&lt;br /&gt;
&lt;br /&gt;
First the GetSystemTitleHash SOAP request is done. Then the SystemTitleHash in savedata hash.dat is compared with the received one. If they match and the SystemTitleHash flag is set to value 0x03, it will immediately return that no sysupdate is required. Otherwise it will start the GetSystemUpdate SOAP request handling.&lt;br /&gt;
&lt;br /&gt;
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&#039;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.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;lt;TitleVersion&amp;gt; entry with valid data in the GetSystemUpdate response is required.&lt;br /&gt;
&lt;br /&gt;
The titleIDs sent in the GetSystemUpdate SOAP request are decimal, while the titleIDs in the response are hex.&lt;br /&gt;
&lt;br /&gt;
=NIM [[System_SaveData]]=&lt;br /&gt;
==hash.dat==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 flag used with the SystemTitleHash. 0x01 = latest sysupdate isn&#039;t installed as of last SOAP requests, 0x03 = latest sysupdate is installed as of last SOAP requests.&lt;br /&gt;
|-&lt;br /&gt;
| 0x61&lt;br /&gt;
| 0x21&lt;br /&gt;
| ASCII hex SystemTitleHash, including NUL-terminator. This is the latest SystemTitleHash which NIM module received from SOAP.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Types=&lt;br /&gt;
&lt;br /&gt;
==SystemUpdateProgress==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[#SystemUpdateState|System Update State]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| 0x03&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x04&lt;br /&gt;
| Last Operation Result Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x08&lt;br /&gt;
| Current Title Downloaded Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x08&lt;br /&gt;
| Current Title Total Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x08&lt;br /&gt;
| Titles Downloaded&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x08&lt;br /&gt;
| Titles Total&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==SystemUpdateState==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Not Initialized&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Starting System Update&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Fetching System Hash and Account Status&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Installing New Tickets&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Installing Titles&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Update Complete&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Failed - System Updates Disabled (Dev Units Only)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| ? (Only for background updates)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| ? (Only for background updates)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadProgress==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[#TitleDownloadState|Title Download State]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| 0x03&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x04&lt;br /&gt;
| Last Operation Result Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x08&lt;br /&gt;
| Downloaded Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x08&lt;br /&gt;
| Total Bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadState==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Not Initialized&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Starting Title Download&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Downloading and Installing TMD&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Committing TMD&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Downloading and Installing Contents&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Contents Installed&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| [[AM:CommitImportPrograms|Committing Titles]]&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Finished&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| ? (Unknown error regarding title version?)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| ? (Creating the .ctx file (or error doing so)?)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Background Download Failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadConfig==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x08&lt;br /&gt;
| Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x04&lt;br /&gt;
| Title version&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 0x04&lt;br /&gt;
| Unknown (always 0?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x01&lt;br /&gt;
| Age Rating (for HOME Menu parental controls)&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[Filesystem_services#MediaType|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x02&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x04&lt;br /&gt;
| Unknown (always 0?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==BackgroundTitleDownloadConfig==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x018&lt;br /&gt;
| [[#TitleDownloadConfig|Title Download Config]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x018&lt;br /&gt;
| 0x001&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x019&lt;br /&gt;
| 0x001&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x01A&lt;br /&gt;
| 0x006&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x020&lt;br /&gt;
| 0x008&lt;br /&gt;
| Requester Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x028&lt;br /&gt;
| 0x090&lt;br /&gt;
| Title Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B8&lt;br /&gt;
| 0x002&lt;br /&gt;
| Title Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0BA&lt;br /&gt;
| 0x048&lt;br /&gt;
| Developer Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x102&lt;br /&gt;
| 0x002&lt;br /&gt;
| Developer Name Forced NUL Terminator (always 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==BackgroundTitleDownloadTaskInfo==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x104&lt;br /&gt;
| [[#BackgroundTitleDownloadConfig|Background Title Download Config]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x104&lt;br /&gt;
| 0x004&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x108&lt;br /&gt;
| 0x018&lt;br /&gt;
| [[#TitleDownloadProgress|Title Download Progress]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==AutoTitleDownloadTaskInfo==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x008&lt;br /&gt;
| Task ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x008&lt;br /&gt;
| 0x008&lt;br /&gt;
| Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x010&lt;br /&gt;
| 0x004&lt;br /&gt;
| Title Version&lt;br /&gt;
|-&lt;br /&gt;
| 0x014&lt;br /&gt;
| 0x014&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x028&lt;br /&gt;
| 0x008&lt;br /&gt;
| Required Storage Space&lt;br /&gt;
|-&lt;br /&gt;
| 0x030&lt;br /&gt;
| 0x004&lt;br /&gt;
| Last Operation Result code&lt;br /&gt;
|-&lt;br /&gt;
| 0x034&lt;br /&gt;
| 0x004&lt;br /&gt;
| Last Operation Customer Support Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x038&lt;br /&gt;
| 0x090&lt;br /&gt;
| Title Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C8&lt;br /&gt;
| 0x002&lt;br /&gt;
| Title Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0CA&lt;br /&gt;
| 0x048&lt;br /&gt;
| Developer Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x112&lt;br /&gt;
| 0x002&lt;br /&gt;
| Developer Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x114&lt;br /&gt;
| 0x024&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==InstallationMode==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Initial Installation&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Re-installation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Autodbg==&lt;br /&gt;
&lt;br /&gt;
Despite this being for debug purposes, it&#039;s used in retail if present.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x004&lt;br /&gt;
| Debug flags&lt;br /&gt;
|-&lt;br /&gt;
| 0x004&lt;br /&gt;
| 0x004&lt;br /&gt;
| Number of debug tasks in dbgtasks.dat&lt;br /&gt;
|-&lt;br /&gt;
| 0x008&lt;br /&gt;
| 0x100&lt;br /&gt;
| Debug URL dst.xml override&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Autodbg flag bits===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bit&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Use the tasks stored in dbgtasks.dat&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Use provided debug dtl.xml URL override&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Disable the download of dtl.xml&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Skip connecting to SOAP EC and download ETickets with a false success result during TSL processing&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Fake assume always ticket is present during TSL task condition processing&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Skip NPNS notification fetch for auto title downloads with a false success result&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Error Results=&lt;br /&gt;
&lt;br /&gt;
==NIM Results==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Result&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E0D001&lt;br /&gt;
| Non-null terminated string on IPC parameter for given length.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D003&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of unhandled values or -4199.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D004&lt;br /&gt;
| Unexpected/invalid state enums. (generic)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC820D005&lt;br /&gt;
| Invalid state under one title install manager.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A0D006&lt;br /&gt;
| Error state enum value. (generic)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D008&lt;br /&gt;
| When content downloading, HTTP Status was not 200 or 206 when connecting, and when status is 206, the Content-Range values failed sanity check.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D009&lt;br /&gt;
| Mismatch system title hash with server system title hash.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC960D00C&lt;br /&gt;
| Failed to convert country enum value in CFG save block 0xB0000 to country ISO 3166-1 Alpha-2 code.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC960D00D&lt;br /&gt;
| CFG didn&#039;t reply any serial number or dummy serial number &amp;quot;000000000000000&amp;quot; was given.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860D00E&lt;br /&gt;
| Max total size exceeded for system update pending titles. (128 MiB)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC880D00F&lt;br /&gt;
| *to be filled*&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8E0D011&lt;br /&gt;
| Bad condition, title id for purpose or size under one title install manager.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC960D012&lt;br /&gt;
| Invalid .dat or less than expected size of buffer length read from .dat save files during raw data load.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC960D013&lt;br /&gt;
| Daemon service is suspended.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8A0D014&lt;br /&gt;
| *to be filled*&lt;br /&gt;
|-&lt;br /&gt;
| 0xC960D015&lt;br /&gt;
| Version mismatch for reinstall condition.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC960D016&lt;br /&gt;
| Used in a few contexts where length does not match expected or the limit. Example, seed data size from HTTP is not 16 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D017&lt;br /&gt;
| SetIVSData will not perform, conditions are not adequate to set IVS. In Service Standby mode or not registered successfully in IAS.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D019&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D01A&lt;br /&gt;
| For nim:s IPC cmd id 0x40, IVS not flagged for synchronization on target console on EC connect after system transfer.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC960D01B&lt;br /&gt;
| Failed to convert language enum value in CFG save block 0xA0002 to language ISO 639-1 code.&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E0D01C&lt;br /&gt;
| Invalid installation mode for some IPC contexts.&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0C0D01E&lt;br /&gt;
| May be either:&lt;br /&gt;
* Trying to set autodbg or dbgtasks with too many tasks on nim:u IPC cmd ids 0x19 and 0x1B, respectively.&lt;br /&gt;
* Non debug ENVINFO when calling debug version of get balance nim:s IPC cmd id 0x56.&lt;br /&gt;
* A boolean parameter for nim:s IPC cmd id 0x58 was set false.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD860D020&lt;br /&gt;
| May be either:&lt;br /&gt;
* Result translation of 0xC860D06E if returned by the early attributes filter handler.&lt;br /&gt;
* If the internal Work-only heap fails to initialize with buffer length lesser than 32 bytes. This buffer is given over IPC.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860D021&lt;br /&gt;
| Task manager has run out of task slots.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D022&lt;br /&gt;
| Buffer size too small for ticket length on nim:aoc IPC cmd id 0x1B.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD880D023&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD860D024&lt;br /&gt;
| Failed to initialize Data Heap using buffer given over IPC.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD920D025&lt;br /&gt;
| SOAP reply implied that Service Standby mode is enabled. Certain EC flows cancelled.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8A0D026&lt;br /&gt;
| May be either:&lt;br /&gt;
* Result translation, NIM ran into NPNS result 0xD8A15C06 or NIM result 0xD960D02B.&lt;br /&gt;
* System updates pending while trying to SOAP EC connect with ETicket download while processing auto downloads.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8A0D027&lt;br /&gt;
| This occurs under certain code paths.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Result translation of result error from:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;HTTP module&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;SSL module&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;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 &amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Unexpected HTTP status, followed up also by generating error integer with 54400 + http status, result value used as a 005-xxxx error&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D028&lt;br /&gt;
| Generic XML parsing error. Not related to SOAP XML.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D029&lt;br /&gt;
| XML processor stub function called. Not related to SOAP XML.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D02A&lt;br /&gt;
| Generic XML data processing error: bad length or insufficient memory. Not related to SOAP XML.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D02B&lt;br /&gt;
| Result translation of 0xD960D028.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D02C&lt;br /&gt;
| Auto download programmed max task count exceeded trying to add more to list. (64)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D02D&lt;br /&gt;
| tsl.xml or tsl.xml.tmp couldn&#039;t be opened. FS result translation of description between 100 and 179, inclusive.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D02E&lt;br /&gt;
| During tsl.xml task condition check. Still unclear, type of task check&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D030&lt;br /&gt;
| During tsl.xml task condition check. Ticket missing for title when expected. Will not occur with autodbg flag bit 4 set.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D031&lt;br /&gt;
| During tsl.xml task condition check. Title already installed when not overwrite mode.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D032&lt;br /&gt;
| During tsl.xml task condition check. Task for title already exists with same or higher version in task.dat.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D033&lt;br /&gt;
| During tsl.xml task condition check. Task for title already exists in task.dat.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E0D034&lt;br /&gt;
| During tsl.xml task condition check. Unexpected task title type.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D035&lt;br /&gt;
| 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)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D037&lt;br /&gt;
| Failed to load saved dtl.xml with result error of FS with description between 100 and 179, inclusive.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D038&lt;br /&gt;
| During tsl.xml task condition check. Not enough space for target SDMC user title.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A0D03A&lt;br /&gt;
| No valid NPNS X-Device-Token was available while trying to fetch it from CFG save block 0xF0006.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD940D03B&lt;br /&gt;
| Selected tsl.xml task was cancelled with nim:u IPC cmd id 0x18.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D03C&lt;br /&gt;
| Result translation for 0xD960D028 while trying to read XML. Not related to SOAP XML.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A0D03D&lt;br /&gt;
| During tsl.xml task condition check. SDMC not inserted or non-writable for SDMC title. (bad media status)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D03E&lt;br /&gt;
| During tsl.xml task condition check. Not enough space for target TWL user title.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD940D03F&lt;br /&gt;
| NPNS notification url is not HTTPS.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD940D040&lt;br /&gt;
| NIM ran into NPNS result 0xD8A15C07. Result translation.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD860D041&lt;br /&gt;
| During tsl.xml task condition check. Pending task count of task.dat and installed SDMC user title count exceed programmed max. (300)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD860D042&lt;br /&gt;
| During tsl.xml task condition check. Pending task count of task.dat and installed TWL user title count exceed programmed max. (40)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD880D043&lt;br /&gt;
| HTTP 404 while fetching title crypto seed from kagiya.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD880D044&lt;br /&gt;
| HTTP 503 while fetching title crypto seed from kagiya.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC960D065&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4001&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0C0D066&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4002&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E0D068&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4004&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860D069&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4005&lt;br /&gt;
|-&lt;br /&gt;
| 0xC880D06A&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4006&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8A0D06B&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4007&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8A0D06C&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4008&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860D06E&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4010&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D073&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4015&lt;br /&gt;
|-&lt;br /&gt;
| 0xC900D075&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4017&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860D076&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4018&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D077&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4019&lt;br /&gt;
|-&lt;br /&gt;
| 0xC900D084&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4032&lt;br /&gt;
|-&lt;br /&gt;
| 0xC900D085&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4033&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D086&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4034&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D08A&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4038&lt;br /&gt;
|-&lt;br /&gt;
| 0xC900D08B&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4039&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D08C&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4040&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0A0D08D&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4041&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D08F&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4043&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D095&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4049&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E0D099&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4053&lt;br /&gt;
|-&lt;br /&gt;
| 0xC900D09F&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4059&lt;br /&gt;
|-&lt;br /&gt;
| 0xE100D0A0&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4060&lt;br /&gt;
|-&lt;br /&gt;
| 0xE100D0A1&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4061&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D0A4&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4064&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D0A7&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4067&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D0A8&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4068&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0A0D0A9&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4069&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D0AD&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4073&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D0B1&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4077&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D0B3&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4079&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D0B5&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4081&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NPNS Results==&lt;br /&gt;
&lt;br /&gt;
NPNS has a module number for results, but no module exists, but can be at least in part found inside NIM.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Result&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xC9215C00&lt;br /&gt;
| Result translation, HTTP result 0xD8A0A018.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8615C01&lt;br /&gt;
| Allocation error, insufficient memory.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C02&lt;br /&gt;
| HTTP non 2xx, json message processing, default error code switch result error.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C03&lt;br /&gt;
| JSON processing errors.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C04&lt;br /&gt;
| Notifications array bigger than expected.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C05&lt;br /&gt;
| HTTP Empty body response.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C06&lt;br /&gt;
| HTTP non 2xx, json message processing, error code 1003 given in json body.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C07&lt;br /&gt;
| HTTP non 2xx, json message processing, error code 1000 given in json body.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C08&lt;br /&gt;
| HTTP non 2xx, json message processing, error code 1004 given in json body.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other Results==&lt;br /&gt;
&lt;br /&gt;
Any other result that is not given by other modules as a response, but found internally in NIM.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Result&lt;br /&gt;
!  Module value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8600801&lt;br /&gt;
| Util (2)&lt;br /&gt;
| Encoding errors. In NIM, if error while encoding base64 for X-Authentication-Key or X-Authentication-Data HTTP parameters.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=22146</id>
		<title>NIM Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=22146"/>
		<updated>2023-03-04T19:35:21Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: More result errors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= NIM updater service &amp;quot;nim:u&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| [[NIMU:StartNetworkUpdate|StartNetworkUpdate]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[NIMU:GetProgress|GetProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| [[NIMU:Cancel|Cancel]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| [[NIMU:CommitSystemTitles|CommitSystemTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| [[NIMU:GetBackgroundEventForMenu|GetBackgroundEventForMenu]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| [[NIMU:GetBackgroundEventForNews|GetBackgroundEventForNews]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| [[NIMU:FormatSaveData|FormatSaveData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| [[NIMU:GetCustomerSupportCode|GetCustomerSupportCode]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[NIMU:IsCommittableAllSystemTitles|IsCommittableAllSystemTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[NIMU:GetBackgroundProgress|GetBackgroundProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| [[NIMU:GetSavedHash|GetSavedHash]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0082&lt;br /&gt;
| [[NIMU:UnregisterTask|UnregisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0080&lt;br /&gt;
| [[NIMU:IsRegistered|IsRegistered]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0080&lt;br /&gt;
| [[NIMU:FindTaskInfo|FindTaskInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0042&lt;br /&gt;
| [[NIMU:GetTaskInfos|GetTaskInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| [[NIMU:DeleteUnmanagedContexts|DeleteUnmanagedContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110000&lt;br /&gt;
| [[NIMU:UpdateAutoTitleDownloadTasksAsync|UpdateAutoTitleDownloadTasksAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00120000&lt;br /&gt;
| [[NIMU:StartPendingAutoTitleDownloadTasksAsync|StartPendingAutoTitleDownloadTasksAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| [[NIMU:GetAsyncResult|GetAsyncResult]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140000&lt;br /&gt;
| [[NIMU:CancelAsyncCall|CancelAsyncCall]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150000&lt;br /&gt;
| [[NIMU:IsPendingAutoTitleDownloadTasks|IsPendingAutoTitleDownloadTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00160000&lt;br /&gt;
| [[NIMU:GetNumAutoTitleDownloadTasks|GetNumAutoTitleDownloadTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170042&lt;br /&gt;
| [[NIMU:GetAutoTitleDownloadTaskInfos|GetAutoTitleDownloadTaskInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180080&lt;br /&gt;
| [[NIMU:CancelAutoTitleDownloadTask|CancelAutoTitleDownloadTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190002&lt;br /&gt;
| [[NIMU:SetAutoDbgDat|SetAutoDbgDat]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0002&lt;br /&gt;
| [[NIMU:GetAutoDbgDat|GetAutoDbgDat]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0042&lt;br /&gt;
| [[NIMU:SetDbgTasks|SetDbgTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0042&lt;br /&gt;
| [[NIMU:GetDbgTasks|GetDbgTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| [[NIMU:DeleteDbgData|DeleteDbgData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E0042&lt;br /&gt;
| [[NIMU:SetTslXml|SetTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0000&lt;br /&gt;
| [[NIMU:GetTslXmlSize|GetTslXmlSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200042&lt;br /&gt;
| [[NIMU:GetTslXml|GetTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| [[NIMU:DeleteTslXml|DeleteTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220042&lt;br /&gt;
| [[NIMU:SetDtlXml|SetDtlXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00230000&lt;br /&gt;
| [[NIMU:GetDtlXmlSize|GetDtlXmlSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240042&lt;br /&gt;
| [[NIMU:GetDtlXml|GetDtlXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| [[NIMU:UpdateAccountStatus|UpdateAccountStatus]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260180&lt;br /&gt;
| [[NIMU:StartTitleDownload|StartTitleDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270000&lt;br /&gt;
| [[NIMU:StopTitleDownload|StopTitleDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280000&lt;br /&gt;
| [[NIMU:GetTitleDownloadProgress|GetTitleDownloadProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290246&lt;br /&gt;
| [[NIMU:RegisterTask|RegisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0000&lt;br /&gt;
| [[NIMU:IsSystemUpdateAvailable|IsSystemUpdateAvailable]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0000&lt;br /&gt;
| ? (Response: 0 = 0x002B0040, 1 = Result Code)&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0000&lt;br /&gt;
| [[NIMU:UpdateTickets|UpdateTickets]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D00C0&lt;br /&gt;
| [[NIMU:DownloadTitleSeedAsync|DownloadTitleSeedAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0000&lt;br /&gt;
| [[NIMU:DownloadMissingTitleSeedsAsync|DownloadMissingTitleSeedsAsync]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM server service &amp;quot;nim:s&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010200&lt;br /&gt;
| [[NIMS:StartDownloadSimple|StartDownloadSimple]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[NIMS:CancelDownload|CancelDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| [[NIMS:GetProgress|GetProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050082&lt;br /&gt;
| [[NIMS:UnregisterTask|UnregisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060080&lt;br /&gt;
| [[NIMS:IsTaskRegistered|IsTaskRegistered]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[NIMS:CheckSysupdateAvailableSOAP|CheckSysupdateAvailableSOAP]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0084&lt;br /&gt;
| [[NIMS:SetAttribute|SetAttribute]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0016020A&lt;br /&gt;
| [[NIMS:ListTitles|ListTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220080&lt;br /&gt;
| AccountDeleteTitleETicketsSOAP. The SOAP request is sent only after the ticket for the specified titleID has been successfully deleted.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290000&lt;br /&gt;
| [[NIMS:AccountCheckBalanceSOAP|AccountCheckBalanceSOAP]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D0042&lt;br /&gt;
| [[NIMS:DownloadTickets|DownloadTickets]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C0002&lt;br /&gt;
| [[NIMS:RegisterSelf|RegisterSelf]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F0000&lt;br /&gt;
| GetInitializeResult. Checks whether nim is properly initialized or not. If it is not, the result code returned is non-zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420240&lt;br /&gt;
| [[NIMS:StartDownload|StartDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00550246&lt;br /&gt;
| [[NIMS:RegisterTask|RegisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00570082&lt;br /&gt;
| [[NIMS:ConnectNoTicketDownload|ConnectNoTicketDownload]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM server service &amp;quot;nim:aoc&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030042&lt;br /&gt;
| SetApplicationId&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040042&lt;br /&gt;
| SetTin&lt;br /&gt;
|-&lt;br /&gt;
| 0x000902D0&lt;br /&gt;
| ListContentSetsEx&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| GetBalance&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| GetCustomerSupportCode&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| Initialize&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240282&lt;br /&gt;
| CalculateContentsRequiredSize&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| RefreshServerTime&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM service &amp;quot;nim:ndm&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| GetDaemonEventHandle&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| Does nothing, always returns 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| SetDaemonToWorkingState&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040040&lt;br /&gt;
| SetDaemonToSuspendedState&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| GetDaemonState&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kagiya server =&lt;br /&gt;
The nim system module communicates with a server called kagiya (kagiya-ctr.cdn.nintendo.net or kagiya-dev-ctr.cdn.nintendo.net for development units). It provides the 9.6 crypto seed in binary form for any given title ID under (HTTPS) kagiya-ctr.cdn.nintendo.net/title/0x%16llx/ext_key?country=%s, where %16llx is the title ID and %s is a country code as used in the [[EShop|eShop]].&lt;br /&gt;
&lt;br /&gt;
=New3DS=&lt;br /&gt;
NIM module only uses [[PTMSYSM:CheckNew3DS|CheckNew3DS]] for determining what heap sizes to use, in two functions. One is for the size of the 0x08000000 vmem heap, the other is probably for some buffer allocated on that heap. The New3DS version of these sizes are 0x1C000-bytes larger than the Old3DS sizes here.&lt;br /&gt;
&lt;br /&gt;
=HTTPS requests=&lt;br /&gt;
&lt;br /&gt;
==Trusted RootCAs==&lt;br /&gt;
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 &amp;quot;notifications.json&amp;quot; page don&#039;t use these RootCertChains(in this case just [[HTTPC:AddDefaultCert|default]] certID 0xB is used).&lt;br /&gt;
&lt;br /&gt;
==SOAP==&lt;br /&gt;
&lt;br /&gt;
===NetUpdateSOAP===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
See also [https://github.com/yellows8/ninupdates here].&lt;br /&gt;
&lt;br /&gt;
====GetSystemUpdate====&lt;br /&gt;
Returns the current sysupdate title-listing. This also contains the SystemTitleHash returned by GetSystemTitleHash.&lt;br /&gt;
&lt;br /&gt;
====GetSystemTitleHash====&lt;br /&gt;
Returns the current SystemTitleHash for the current sysupdate title-listing.&lt;br /&gt;
&lt;br /&gt;
====GetSystemCommonETicket====&lt;br /&gt;
Returns the Base64-encoded cetk for each specified TitleId entry.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Sysupdate checking process=&lt;br /&gt;
This section describes the process used when checking whether a sysupdate is required.&lt;br /&gt;
&lt;br /&gt;
First the GetSystemTitleHash SOAP request is done. Then the SystemTitleHash in savedata hash.dat is compared with the received one. If they match and the SystemTitleHash flag is set to value 0x03, it will immediately return that no sysupdate is required. Otherwise it will start the GetSystemUpdate SOAP request handling.&lt;br /&gt;
&lt;br /&gt;
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&#039;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.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;lt;TitleVersion&amp;gt; entry with valid data in the GetSystemUpdate response is required.&lt;br /&gt;
&lt;br /&gt;
The titleIDs sent in the GetSystemUpdate SOAP request are decimal, while the titleIDs in the response are hex.&lt;br /&gt;
&lt;br /&gt;
=NIM [[System_SaveData]]=&lt;br /&gt;
==hash.dat==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 flag used with the SystemTitleHash. 0x01 = latest sysupdate isn&#039;t installed as of last SOAP requests, 0x03 = latest sysupdate is installed as of last SOAP requests.&lt;br /&gt;
|-&lt;br /&gt;
| 0x61&lt;br /&gt;
| 0x21&lt;br /&gt;
| ASCII hex SystemTitleHash, including NUL-terminator. This is the latest SystemTitleHash which NIM module received from SOAP.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Types=&lt;br /&gt;
&lt;br /&gt;
==SystemUpdateProgress==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[#SystemUpdateState|System Update State]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| 0x03&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x04&lt;br /&gt;
| Last Operation Result Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x08&lt;br /&gt;
| Current Title Downloaded Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x08&lt;br /&gt;
| Current Title Total Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x08&lt;br /&gt;
| Titles Downloaded&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x08&lt;br /&gt;
| Titles Total&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==SystemUpdateState==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Not Initialized&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Starting System Update&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Fetching System Hash and Account Status&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Installing New Tickets&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Installing Titles&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Update Complete&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Failed - System Updates Disabled (Dev Units Only)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| ? (Only for background updates)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| ? (Only for background updates)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadProgress==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[#TitleDownloadState|Title Download State]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| 0x03&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x04&lt;br /&gt;
| Last Operation Result Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x08&lt;br /&gt;
| Downloaded Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x08&lt;br /&gt;
| Total Bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadState==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Not Initialized&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Starting Title Download&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Downloading and Installing TMD&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Committing TMD&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Downloading and Installing Contents&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Contents Installed&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| [[AM:CommitImportPrograms|Committing Titles]]&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Finished&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| ? (Unknown error regarding title version?)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| ? (Creating the .ctx file (or error doing so)?)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Background Download Failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadConfig==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x08&lt;br /&gt;
| Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x04&lt;br /&gt;
| Title version&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 0x04&lt;br /&gt;
| Unknown (always 0?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x01&lt;br /&gt;
| Age Rating (for HOME Menu parental controls)&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[Filesystem_services#MediaType|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x02&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x04&lt;br /&gt;
| Unknown (always 0?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==BackgroundTitleDownloadConfig==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x018&lt;br /&gt;
| [[#TitleDownloadConfig|Title Download Config]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x018&lt;br /&gt;
| 0x001&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x019&lt;br /&gt;
| 0x001&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x01A&lt;br /&gt;
| 0x006&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x020&lt;br /&gt;
| 0x008&lt;br /&gt;
| Requester Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x028&lt;br /&gt;
| 0x090&lt;br /&gt;
| Title Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B8&lt;br /&gt;
| 0x002&lt;br /&gt;
| Title Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0BA&lt;br /&gt;
| 0x048&lt;br /&gt;
| Developer Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x102&lt;br /&gt;
| 0x002&lt;br /&gt;
| Developer Name Forced NUL Terminator (always 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==BackgroundTitleDownloadTaskInfo==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x104&lt;br /&gt;
| [[#BackgroundTitleDownloadConfig|Background Title Download Config]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x104&lt;br /&gt;
| 0x004&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x108&lt;br /&gt;
| 0x018&lt;br /&gt;
| [[#TitleDownloadProgress|Title Download Progress]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==AutoTitleDownloadTaskInfo==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x008&lt;br /&gt;
| Task ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x008&lt;br /&gt;
| 0x008&lt;br /&gt;
| Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x010&lt;br /&gt;
| 0x004&lt;br /&gt;
| Title Version&lt;br /&gt;
|-&lt;br /&gt;
| 0x014&lt;br /&gt;
| 0x014&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x028&lt;br /&gt;
| 0x008&lt;br /&gt;
| Required Storage Space&lt;br /&gt;
|-&lt;br /&gt;
| 0x030&lt;br /&gt;
| 0x004&lt;br /&gt;
| Last Operation Result code&lt;br /&gt;
|-&lt;br /&gt;
| 0x034&lt;br /&gt;
| 0x004&lt;br /&gt;
| Last Operation Customer Support Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x038&lt;br /&gt;
| 0x090&lt;br /&gt;
| Title Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C8&lt;br /&gt;
| 0x002&lt;br /&gt;
| Title Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0CA&lt;br /&gt;
| 0x048&lt;br /&gt;
| Developer Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x112&lt;br /&gt;
| 0x002&lt;br /&gt;
| Developer Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x114&lt;br /&gt;
| 0x024&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==InstallationMode==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Initial Installation&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Re-installation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Autodbg==&lt;br /&gt;
&lt;br /&gt;
Despite this being for debug purposes, it&#039;s used in retail if present.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x004&lt;br /&gt;
| Debug flags&lt;br /&gt;
|-&lt;br /&gt;
| 0x004&lt;br /&gt;
| 0x004&lt;br /&gt;
| Number of debug tasks in dbgtasks.dat&lt;br /&gt;
|-&lt;br /&gt;
| 0x008&lt;br /&gt;
| 0x100&lt;br /&gt;
| Debug URL dst.xml override&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Autodbg flag bits===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bit&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Use the tasks stored in dbgtasks.dat&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Use provided debug dtl.xml URL override&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Disable the download of dtl.xml&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Skip connecting to SOAP EC and download ETickets with a false success result during TSL processing&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Fake assume always ticket is present during TSL task condition processing&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Skip NPNS notification fetch for auto title downloads with a false success result&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Error Results=&lt;br /&gt;
&lt;br /&gt;
==NIM Results==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Result&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E0D001&lt;br /&gt;
| Non-null terminated string on IPC parameter for given length.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D003&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of unhandled values or -4199.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D004&lt;br /&gt;
| Unexpected/invalid state enums. (generic)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC820D005&lt;br /&gt;
| Invalid state under one title install manager.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A0D006&lt;br /&gt;
| Error state enum value. (generic)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D009&lt;br /&gt;
| Mismatch system title hash with server system title hash.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860D00E&lt;br /&gt;
| Max total size exceeded for system update pending titles. (128 MiB)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8E0D011&lt;br /&gt;
| Bad condition, title id for purpose or size under one title install manager.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC960D012&lt;br /&gt;
| Invalid .dat or less than expected size of buffer length read from .dat save files during raw data load.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC960D013&lt;br /&gt;
| Daemon service is suspended.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC960D015&lt;br /&gt;
| Version mismatch for reinstall condition.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D019&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860D021&lt;br /&gt;
| Task manager has run out of task slots.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD920D025&lt;br /&gt;
| SOAP reply implied that Service Standby mode is enabled. Certain EC flows cancelled.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8A0D026&lt;br /&gt;
| May be either:&lt;br /&gt;
* Result translation, NIM ran into NPNS result 0xD8A15C06 or NIM result 0xD960D02B.&lt;br /&gt;
* System updates pending while trying to SOAP EC connect with ETicket download while processing auto downloads.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8A0D027&lt;br /&gt;
| This occurs under certain code paths.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Result translation of result error from:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;HTTP module&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;SSL module&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;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 &amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Unexpected HTTP status, followed up also by generating error integer with 54400 + http status, result value used as a 005-xxxx error&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D028&lt;br /&gt;
| Generic XML parsing error. Not related to SOAP XML.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D029&lt;br /&gt;
| XML processor stub function called. Not related to SOAP XML.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D02A&lt;br /&gt;
| Generic XML data processing error: bad length or insufficient memory. Not related to SOAP XML.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D02B&lt;br /&gt;
| Result translation of 0xD960D028.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D02D&lt;br /&gt;
| tsl.xml or tsl.xml.tmp couldn&#039;t be opened. FS result translation of description between 100 and 179, inclusive.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D02E&lt;br /&gt;
| During tsl.xml task condition check. Still unclear, type of task check&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D030&lt;br /&gt;
| During tsl.xml task condition check. Ticket missing for title when expected. Will not occur with autodbg flag bit 4 set.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D031&lt;br /&gt;
| During tsl.xml task condition check. Title already installed when not overwrite mode.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D032&lt;br /&gt;
| During tsl.xml task condition check. Task for title already exists with same or higher version in task.dat.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D033&lt;br /&gt;
| During tsl.xml task condition check. Task for title already exists in task.dat.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E0D034&lt;br /&gt;
| During tsl.xml task condition check. Unexpected task title type.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D035&lt;br /&gt;
| 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)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D037&lt;br /&gt;
| Failed to load saved dtl.xml with result error of FS with description between 100 and 179, inclusive.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D038&lt;br /&gt;
| During tsl.xml task condition check. Not enough space for target SDMC user title.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A0D03D&lt;br /&gt;
| During tsl.xml task condition check. SDMC not inserted or non-writable for SDMC title. (bad media status)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D03E&lt;br /&gt;
| During tsl.xml task condition check. Not enough space for target TWL user title.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD940D040&lt;br /&gt;
| NIM ran into NPNS result 0xD8A15C07. Result translation.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD860D041&lt;br /&gt;
| During tsl.xml task condition check. Pending task count of task.dat and installed SDMC user title count exceed programmed max. (300)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD860D042&lt;br /&gt;
| During tsl.xml task condition check. Pending task count of task.dat and installed TWL user title count exceed programmed max. (40)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD880D043&lt;br /&gt;
| HTTP 404 while fetching title crypto seed from kagiya.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD880D044&lt;br /&gt;
| HTTP 503 while fetching title crypto seed from kagiya.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC960D065&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4001&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0C0D066&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4002&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E0D068&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4004&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860D069&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4005&lt;br /&gt;
|-&lt;br /&gt;
| 0xC880D06A&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4006&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8A0D06B&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4007&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8A0D06C&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4008&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860D06E&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4010&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D073&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4015&lt;br /&gt;
|-&lt;br /&gt;
| 0xC900D075&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4017&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860D076&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4018&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D077&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4019&lt;br /&gt;
|-&lt;br /&gt;
| 0xC900D084&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4032&lt;br /&gt;
|-&lt;br /&gt;
| 0xC900D085&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4033&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D086&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4034&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D08A&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4038&lt;br /&gt;
|-&lt;br /&gt;
| 0xC900D08B&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4039&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D08C&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4040&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0A0D08D&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4041&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D08F&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4043&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D095&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4049&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E0D099&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4053&lt;br /&gt;
|-&lt;br /&gt;
| 0xC900D09F&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4059&lt;br /&gt;
|-&lt;br /&gt;
| 0xE100D0A0&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4060&lt;br /&gt;
|-&lt;br /&gt;
| 0xE100D0A1&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4061&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D0A4&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4064&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D0A7&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4067&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D0A8&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4068&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0A0D0A9&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4069&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D0AD&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4073&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D0B1&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4077&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D0B3&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4079&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D0B5&lt;br /&gt;
| SOAP EC/NUP manager internal error number translation of value -4081&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NPNS Results==&lt;br /&gt;
&lt;br /&gt;
NPNS has a module number for results, but no module exists, but can be at least in part found inside NIM.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Result&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xC9215C00&lt;br /&gt;
| Result translation, HTTP result 0xD8A0A018.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8615C01&lt;br /&gt;
| Allocation error, insufficient memory.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C02&lt;br /&gt;
| HTTP non 2xx, json message processing, default error code switch result error.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C03&lt;br /&gt;
| JSON processing errors.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C04&lt;br /&gt;
| Notifications array bigger than expected.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C05&lt;br /&gt;
| HTTP Empty body response.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C06&lt;br /&gt;
| HTTP non 2xx, json message processing, error code 1003 given in json body.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C07&lt;br /&gt;
| HTTP non 2xx, json message processing, error code 1000 given in json body.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C08&lt;br /&gt;
| HTTP non 2xx, json message processing, error code 1004 given in json body.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other Results==&lt;br /&gt;
&lt;br /&gt;
Any other result that is not given by other modules as a response, but found internally in NIM.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Result&lt;br /&gt;
!  Module value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8600801&lt;br /&gt;
| Util (2)&lt;br /&gt;
| Encoding errors. In NIM, if error while encoding base64 for X-Authentication-Key or X-Authentication-Data HTTP parameters.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=22145</id>
		<title>NIM Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=22145"/>
		<updated>2023-03-04T18:51:17Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: nim:ndm service&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= NIM updater service &amp;quot;nim:u&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| [[NIMU:StartNetworkUpdate|StartNetworkUpdate]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[NIMU:GetProgress|GetProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| [[NIMU:Cancel|Cancel]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| [[NIMU:CommitSystemTitles|CommitSystemTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| [[NIMU:GetBackgroundEventForMenu|GetBackgroundEventForMenu]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| [[NIMU:GetBackgroundEventForNews|GetBackgroundEventForNews]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| [[NIMU:FormatSaveData|FormatSaveData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| [[NIMU:GetCustomerSupportCode|GetCustomerSupportCode]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[NIMU:IsCommittableAllSystemTitles|IsCommittableAllSystemTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[NIMU:GetBackgroundProgress|GetBackgroundProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| [[NIMU:GetSavedHash|GetSavedHash]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0082&lt;br /&gt;
| [[NIMU:UnregisterTask|UnregisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0080&lt;br /&gt;
| [[NIMU:IsRegistered|IsRegistered]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0080&lt;br /&gt;
| [[NIMU:FindTaskInfo|FindTaskInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0042&lt;br /&gt;
| [[NIMU:GetTaskInfos|GetTaskInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| [[NIMU:DeleteUnmanagedContexts|DeleteUnmanagedContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110000&lt;br /&gt;
| [[NIMU:UpdateAutoTitleDownloadTasksAsync|UpdateAutoTitleDownloadTasksAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00120000&lt;br /&gt;
| [[NIMU:StartPendingAutoTitleDownloadTasksAsync|StartPendingAutoTitleDownloadTasksAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| [[NIMU:GetAsyncResult|GetAsyncResult]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140000&lt;br /&gt;
| [[NIMU:CancelAsyncCall|CancelAsyncCall]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150000&lt;br /&gt;
| [[NIMU:IsPendingAutoTitleDownloadTasks|IsPendingAutoTitleDownloadTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00160000&lt;br /&gt;
| [[NIMU:GetNumAutoTitleDownloadTasks|GetNumAutoTitleDownloadTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170042&lt;br /&gt;
| [[NIMU:GetAutoTitleDownloadTaskInfos|GetAutoTitleDownloadTaskInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180080&lt;br /&gt;
| [[NIMU:CancelAutoTitleDownloadTask|CancelAutoTitleDownloadTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190002&lt;br /&gt;
| [[NIMU:SetAutoDbgDat|SetAutoDbgDat]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0002&lt;br /&gt;
| [[NIMU:GetAutoDbgDat|GetAutoDbgDat]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0042&lt;br /&gt;
| [[NIMU:SetDbgTasks|SetDbgTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0042&lt;br /&gt;
| [[NIMU:GetDbgTasks|GetDbgTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| [[NIMU:DeleteDbgData|DeleteDbgData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E0042&lt;br /&gt;
| [[NIMU:SetTslXml|SetTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0000&lt;br /&gt;
| [[NIMU:GetTslXmlSize|GetTslXmlSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200042&lt;br /&gt;
| [[NIMU:GetTslXml|GetTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| [[NIMU:DeleteTslXml|DeleteTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220042&lt;br /&gt;
| [[NIMU:SetDtlXml|SetDtlXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00230000&lt;br /&gt;
| [[NIMU:GetDtlXmlSize|GetDtlXmlSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240042&lt;br /&gt;
| [[NIMU:GetDtlXml|GetDtlXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| [[NIMU:UpdateAccountStatus|UpdateAccountStatus]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260180&lt;br /&gt;
| [[NIMU:StartTitleDownload|StartTitleDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270000&lt;br /&gt;
| [[NIMU:StopTitleDownload|StopTitleDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280000&lt;br /&gt;
| [[NIMU:GetTitleDownloadProgress|GetTitleDownloadProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290246&lt;br /&gt;
| [[NIMU:RegisterTask|RegisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0000&lt;br /&gt;
| [[NIMU:IsSystemUpdateAvailable|IsSystemUpdateAvailable]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0000&lt;br /&gt;
| ? (Response: 0 = 0x002B0040, 1 = Result Code)&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0000&lt;br /&gt;
| [[NIMU:UpdateTickets|UpdateTickets]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D00C0&lt;br /&gt;
| [[NIMU:DownloadTitleSeedAsync|DownloadTitleSeedAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0000&lt;br /&gt;
| [[NIMU:DownloadMissingTitleSeedsAsync|DownloadMissingTitleSeedsAsync]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM server service &amp;quot;nim:s&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010200&lt;br /&gt;
| [[NIMS:StartDownloadSimple|StartDownloadSimple]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[NIMS:CancelDownload|CancelDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| [[NIMS:GetProgress|GetProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050082&lt;br /&gt;
| [[NIMS:UnregisterTask|UnregisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060080&lt;br /&gt;
| [[NIMS:IsTaskRegistered|IsTaskRegistered]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[NIMS:CheckSysupdateAvailableSOAP|CheckSysupdateAvailableSOAP]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0084&lt;br /&gt;
| [[NIMS:SetAttribute|SetAttribute]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0016020A&lt;br /&gt;
| [[NIMS:ListTitles|ListTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220080&lt;br /&gt;
| AccountDeleteTitleETicketsSOAP. The SOAP request is sent only after the ticket for the specified titleID has been successfully deleted.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290000&lt;br /&gt;
| [[NIMS:AccountCheckBalanceSOAP|AccountCheckBalanceSOAP]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D0042&lt;br /&gt;
| [[NIMS:DownloadTickets|DownloadTickets]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C0002&lt;br /&gt;
| [[NIMS:RegisterSelf|RegisterSelf]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F0000&lt;br /&gt;
| GetInitializeResult. Checks whether nim is properly initialized or not. If it is not, the result code returned is non-zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420240&lt;br /&gt;
| [[NIMS:StartDownload|StartDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00550246&lt;br /&gt;
| [[NIMS:RegisterTask|RegisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00570082&lt;br /&gt;
| [[NIMS:ConnectNoTicketDownload|ConnectNoTicketDownload]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM server service &amp;quot;nim:aoc&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030042&lt;br /&gt;
| SetApplicationId&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040042&lt;br /&gt;
| SetTin&lt;br /&gt;
|-&lt;br /&gt;
| 0x000902D0&lt;br /&gt;
| ListContentSetsEx&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| GetBalance&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| GetCustomerSupportCode&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| Initialize&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240282&lt;br /&gt;
| CalculateContentsRequiredSize&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| RefreshServerTime&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM service &amp;quot;nim:ndm&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| GetDaemonEventHandle&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| Does nothing, always returns 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| SetDaemonToWorkingState&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040040&lt;br /&gt;
| SetDaemonToSuspendedState&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| GetDaemonState&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kagiya server =&lt;br /&gt;
The nim system module communicates with a server called kagiya (kagiya-ctr.cdn.nintendo.net or kagiya-dev-ctr.cdn.nintendo.net for development units). It provides the 9.6 crypto seed in binary form for any given title ID under (HTTPS) kagiya-ctr.cdn.nintendo.net/title/0x%16llx/ext_key?country=%s, where %16llx is the title ID and %s is a country code as used in the [[EShop|eShop]].&lt;br /&gt;
&lt;br /&gt;
=New3DS=&lt;br /&gt;
NIM module only uses [[PTMSYSM:CheckNew3DS|CheckNew3DS]] for determining what heap sizes to use, in two functions. One is for the size of the 0x08000000 vmem heap, the other is probably for some buffer allocated on that heap. The New3DS version of these sizes are 0x1C000-bytes larger than the Old3DS sizes here.&lt;br /&gt;
&lt;br /&gt;
=HTTPS requests=&lt;br /&gt;
&lt;br /&gt;
==Trusted RootCAs==&lt;br /&gt;
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 &amp;quot;notifications.json&amp;quot; page don&#039;t use these RootCertChains(in this case just [[HTTPC:AddDefaultCert|default]] certID 0xB is used).&lt;br /&gt;
&lt;br /&gt;
==SOAP==&lt;br /&gt;
&lt;br /&gt;
===NetUpdateSOAP===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
See also [https://github.com/yellows8/ninupdates here].&lt;br /&gt;
&lt;br /&gt;
====GetSystemUpdate====&lt;br /&gt;
Returns the current sysupdate title-listing. This also contains the SystemTitleHash returned by GetSystemTitleHash.&lt;br /&gt;
&lt;br /&gt;
====GetSystemTitleHash====&lt;br /&gt;
Returns the current SystemTitleHash for the current sysupdate title-listing.&lt;br /&gt;
&lt;br /&gt;
====GetSystemCommonETicket====&lt;br /&gt;
Returns the Base64-encoded cetk for each specified TitleId entry.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Sysupdate checking process=&lt;br /&gt;
This section describes the process used when checking whether a sysupdate is required.&lt;br /&gt;
&lt;br /&gt;
First the GetSystemTitleHash SOAP request is done. Then the SystemTitleHash in savedata hash.dat is compared with the received one. If they match and the SystemTitleHash flag is set to value 0x03, it will immediately return that no sysupdate is required. Otherwise it will start the GetSystemUpdate SOAP request handling.&lt;br /&gt;
&lt;br /&gt;
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&#039;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.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;lt;TitleVersion&amp;gt; entry with valid data in the GetSystemUpdate response is required.&lt;br /&gt;
&lt;br /&gt;
The titleIDs sent in the GetSystemUpdate SOAP request are decimal, while the titleIDs in the response are hex.&lt;br /&gt;
&lt;br /&gt;
=NIM [[System_SaveData]]=&lt;br /&gt;
==hash.dat==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 flag used with the SystemTitleHash. 0x01 = latest sysupdate isn&#039;t installed as of last SOAP requests, 0x03 = latest sysupdate is installed as of last SOAP requests.&lt;br /&gt;
|-&lt;br /&gt;
| 0x61&lt;br /&gt;
| 0x21&lt;br /&gt;
| ASCII hex SystemTitleHash, including NUL-terminator. This is the latest SystemTitleHash which NIM module received from SOAP.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Types=&lt;br /&gt;
&lt;br /&gt;
==SystemUpdateProgress==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[#SystemUpdateState|System Update State]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| 0x03&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x04&lt;br /&gt;
| Last Operation Result Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x08&lt;br /&gt;
| Current Title Downloaded Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x08&lt;br /&gt;
| Current Title Total Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x08&lt;br /&gt;
| Titles Downloaded&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x08&lt;br /&gt;
| Titles Total&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==SystemUpdateState==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Not Initialized&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Starting System Update&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Fetching System Hash and Account Status&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Installing New Tickets&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Installing Titles&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Update Complete&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Failed - System Updates Disabled (Dev Units Only)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| ? (Only for background updates)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| ? (Only for background updates)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadProgress==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[#TitleDownloadState|Title Download State]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| 0x03&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x04&lt;br /&gt;
| Last Operation Result Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x08&lt;br /&gt;
| Downloaded Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x08&lt;br /&gt;
| Total Bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadState==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Not Initialized&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Starting Title Download&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Downloading and Installing TMD&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Committing TMD&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Downloading and Installing Contents&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Contents Installed&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| [[AM:CommitImportPrograms|Committing Titles]]&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Finished&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| ? (Unknown error regarding title version?)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| ? (Creating the .ctx file (or error doing so)?)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Background Download Failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadConfig==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x08&lt;br /&gt;
| Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x04&lt;br /&gt;
| Title version&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 0x04&lt;br /&gt;
| Unknown (always 0?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x01&lt;br /&gt;
| Age Rating (for HOME Menu parental controls)&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[Filesystem_services#MediaType|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x02&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x04&lt;br /&gt;
| Unknown (always 0?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==BackgroundTitleDownloadConfig==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x018&lt;br /&gt;
| [[#TitleDownloadConfig|Title Download Config]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x018&lt;br /&gt;
| 0x001&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x019&lt;br /&gt;
| 0x001&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x01A&lt;br /&gt;
| 0x006&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x020&lt;br /&gt;
| 0x008&lt;br /&gt;
| Requester Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x028&lt;br /&gt;
| 0x090&lt;br /&gt;
| Title Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B8&lt;br /&gt;
| 0x002&lt;br /&gt;
| Title Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0BA&lt;br /&gt;
| 0x048&lt;br /&gt;
| Developer Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x102&lt;br /&gt;
| 0x002&lt;br /&gt;
| Developer Name Forced NUL Terminator (always 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==BackgroundTitleDownloadTaskInfo==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x104&lt;br /&gt;
| [[#BackgroundTitleDownloadConfig|Background Title Download Config]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x104&lt;br /&gt;
| 0x004&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x108&lt;br /&gt;
| 0x018&lt;br /&gt;
| [[#TitleDownloadProgress|Title Download Progress]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==AutoTitleDownloadTaskInfo==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x008&lt;br /&gt;
| Task ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x008&lt;br /&gt;
| 0x008&lt;br /&gt;
| Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x010&lt;br /&gt;
| 0x004&lt;br /&gt;
| Title Version&lt;br /&gt;
|-&lt;br /&gt;
| 0x014&lt;br /&gt;
| 0x014&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x028&lt;br /&gt;
| 0x008&lt;br /&gt;
| Required Storage Space&lt;br /&gt;
|-&lt;br /&gt;
| 0x030&lt;br /&gt;
| 0x004&lt;br /&gt;
| Last Operation Result code&lt;br /&gt;
|-&lt;br /&gt;
| 0x034&lt;br /&gt;
| 0x004&lt;br /&gt;
| Last Operation Customer Support Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x038&lt;br /&gt;
| 0x090&lt;br /&gt;
| Title Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C8&lt;br /&gt;
| 0x002&lt;br /&gt;
| Title Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0CA&lt;br /&gt;
| 0x048&lt;br /&gt;
| Developer Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x112&lt;br /&gt;
| 0x002&lt;br /&gt;
| Developer Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x114&lt;br /&gt;
| 0x024&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==InstallationMode==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Initial Installation&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Re-installation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Autodbg==&lt;br /&gt;
&lt;br /&gt;
Despite this being for debug purposes, it&#039;s used in retail if present.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x004&lt;br /&gt;
| Debug flags&lt;br /&gt;
|-&lt;br /&gt;
| 0x004&lt;br /&gt;
| 0x004&lt;br /&gt;
| Number of debug tasks in dbgtasks.dat&lt;br /&gt;
|-&lt;br /&gt;
| 0x008&lt;br /&gt;
| 0x100&lt;br /&gt;
| Debug URL dst.xml override&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Autodbg flag bits===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bit&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Use the tasks stored in dbgtasks.dat&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Use provided debug dtl.xml URL override&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Disable the download of dtl.xml&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Skip connecting to SOAP EC and download ETickets with a false success result during TSL processing&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Fake assume always ticket is present during TSL task condition processing&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Skip NPNS notification fetch for auto title downloads with a false success result&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Error Results=&lt;br /&gt;
&lt;br /&gt;
==NIM Results==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Result&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E0D001&lt;br /&gt;
| Non-null terminated string on IPC parameter for given length.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D004&lt;br /&gt;
| Unexpected/invalid state enums. (generic)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC820D005&lt;br /&gt;
| Invalid state under one managed title install manager.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A0D006&lt;br /&gt;
| Error state enum value. (generic)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D009&lt;br /&gt;
| Mismatch system title hash with server system title hash.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860D00E&lt;br /&gt;
| Max total size exceeded for system update pending titles. (128 MiB)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8E0D011&lt;br /&gt;
| Bad condition, title id for purpose or size under one managed title install manager.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8A0D027&lt;br /&gt;
| This occurs under certain code paths.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Result translation of result error from:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;HTTP module&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;SSL module&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;NIM module if description is between 100 to 299 (inclusive)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Unexpected HTTP status, followed up also by generating error integer with 54400 + http status, result value used as a 005-xxxx error&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D02E&lt;br /&gt;
| During tsl.xml task condition check. Still unclear, type of task check&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D030&lt;br /&gt;
| During tsl.xml task condition check. Ticket missing for title when expected. Will not occur with autodbg flag bit 4 set.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D031&lt;br /&gt;
| During tsl.xml task condition check. Title already installed when not overwrite mode.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D032&lt;br /&gt;
| During tsl.xml task condition check. Task for title already exists with same or higher version in task.dat.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D033&lt;br /&gt;
| During tsl.xml task condition check. Task for title already exists in task.dat.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E0D034&lt;br /&gt;
| During tsl.xml task condition check. Unexpected task title type.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D035&lt;br /&gt;
| 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)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D037&lt;br /&gt;
| Failed to load saved dtl.xml with result error of FS with description between 100 and 179, inclusive.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D038&lt;br /&gt;
| During tsl.xml task condition check. Not enough space for target SDMC user title.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A0D03D&lt;br /&gt;
| During tsl.xml task condition check. SDMC not inserted or non-writable for SDMC title. (bad media status)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D03E&lt;br /&gt;
| During tsl.xml task condition check. Not enough space for target TWL user title.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD940D040&lt;br /&gt;
| NIM ran into NPNS result 0xD8A15C07. Result translation.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD860D041&lt;br /&gt;
| During tsl.xml task condition check. Pending task count of task.dat and installed SDMC user title count exceed programmed max. (300)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD860D042&lt;br /&gt;
| During tsl.xml task condition check. Pending task count of task.dat and installed TWL user title count exceed programmed max. (40)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD880D043&lt;br /&gt;
| HTTP 404 while fetching title crypto seed from kagiya.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD880D044&lt;br /&gt;
| HTTP 503 while fetching title crypto seed from kagiya.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NPNS Results==&lt;br /&gt;
&lt;br /&gt;
NPNS has a module number for results, but no module exists, but can be at least in part found inside NIM.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Result&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8615C01&lt;br /&gt;
| Allocation error, insufficient memory.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C02&lt;br /&gt;
| HTTP non 2xx, json message processing, default error code switch result error.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C03&lt;br /&gt;
| JSON processing errors.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C04&lt;br /&gt;
| Notifications array bigger than expected.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C05&lt;br /&gt;
| HTTP Empty body response.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C06&lt;br /&gt;
| HTTP non 2xx, json message processing, error code 1003 given in json body.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C07&lt;br /&gt;
| HTTP non 2xx, json message processing, error code 1000 given in json body.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C08&lt;br /&gt;
| HTTP non 2xx, json message processing, error code 1004 given in json body.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other Results==&lt;br /&gt;
&lt;br /&gt;
Any other result that is not given by other modules as a response, but found internally in NIM.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Result&lt;br /&gt;
!  Module value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8600801&lt;br /&gt;
| Util (2)&lt;br /&gt;
| Encoding errors. In NIM, if error while encoding base64 for X-Authentication-Key or X-Authentication-Data HTTP parameters.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=22144</id>
		<title>NIM Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=22144"/>
		<updated>2023-03-04T15:56:38Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Correction of result error values, swapped myself accidentally while taking note of results&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= NIM updater service &amp;quot;nim:u&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| [[NIMU:StartNetworkUpdate|StartNetworkUpdate]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[NIMU:GetProgress|GetProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| [[NIMU:Cancel|Cancel]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| [[NIMU:CommitSystemTitles|CommitSystemTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| [[NIMU:GetBackgroundEventForMenu|GetBackgroundEventForMenu]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| [[NIMU:GetBackgroundEventForNews|GetBackgroundEventForNews]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| [[NIMU:FormatSaveData|FormatSaveData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| [[NIMU:GetCustomerSupportCode|GetCustomerSupportCode]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[NIMU:IsCommittableAllSystemTitles|IsCommittableAllSystemTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[NIMU:GetBackgroundProgress|GetBackgroundProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| [[NIMU:GetSavedHash|GetSavedHash]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0082&lt;br /&gt;
| [[NIMU:UnregisterTask|UnregisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0080&lt;br /&gt;
| [[NIMU:IsRegistered|IsRegistered]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0080&lt;br /&gt;
| [[NIMU:FindTaskInfo|FindTaskInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0042&lt;br /&gt;
| [[NIMU:GetTaskInfos|GetTaskInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| [[NIMU:DeleteUnmanagedContexts|DeleteUnmanagedContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110000&lt;br /&gt;
| [[NIMU:UpdateAutoTitleDownloadTasksAsync|UpdateAutoTitleDownloadTasksAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00120000&lt;br /&gt;
| [[NIMU:StartPendingAutoTitleDownloadTasksAsync|StartPendingAutoTitleDownloadTasksAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| [[NIMU:GetAsyncResult|GetAsyncResult]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140000&lt;br /&gt;
| [[NIMU:CancelAsyncCall|CancelAsyncCall]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150000&lt;br /&gt;
| [[NIMU:IsPendingAutoTitleDownloadTasks|IsPendingAutoTitleDownloadTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00160000&lt;br /&gt;
| [[NIMU:GetNumAutoTitleDownloadTasks|GetNumAutoTitleDownloadTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170042&lt;br /&gt;
| [[NIMU:GetAutoTitleDownloadTaskInfos|GetAutoTitleDownloadTaskInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180080&lt;br /&gt;
| [[NIMU:CancelAutoTitleDownloadTask|CancelAutoTitleDownloadTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190002&lt;br /&gt;
| [[NIMU:SetAutoDbgDat|SetAutoDbgDat]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0002&lt;br /&gt;
| [[NIMU:GetAutoDbgDat|GetAutoDbgDat]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0042&lt;br /&gt;
| [[NIMU:SetDbgTasks|SetDbgTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0042&lt;br /&gt;
| [[NIMU:GetDbgTasks|GetDbgTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| [[NIMU:DeleteDbgData|DeleteDbgData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E0042&lt;br /&gt;
| [[NIMU:SetTslXml|SetTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0000&lt;br /&gt;
| [[NIMU:GetTslXmlSize|GetTslXmlSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200042&lt;br /&gt;
| [[NIMU:GetTslXml|GetTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| [[NIMU:DeleteTslXml|DeleteTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220042&lt;br /&gt;
| [[NIMU:SetDtlXml|SetDtlXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00230000&lt;br /&gt;
| [[NIMU:GetDtlXmlSize|GetDtlXmlSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240042&lt;br /&gt;
| [[NIMU:GetDtlXml|GetDtlXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| [[NIMU:UpdateAccountStatus|UpdateAccountStatus]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260180&lt;br /&gt;
| [[NIMU:StartTitleDownload|StartTitleDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270000&lt;br /&gt;
| [[NIMU:StopTitleDownload|StopTitleDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280000&lt;br /&gt;
| [[NIMU:GetTitleDownloadProgress|GetTitleDownloadProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290246&lt;br /&gt;
| [[NIMU:RegisterTask|RegisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0000&lt;br /&gt;
| [[NIMU:IsSystemUpdateAvailable|IsSystemUpdateAvailable]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0000&lt;br /&gt;
| ? (Response: 0 = 0x002B0040, 1 = Result Code)&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0000&lt;br /&gt;
| [[NIMU:UpdateTickets|UpdateTickets]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D00C0&lt;br /&gt;
| [[NIMU:DownloadTitleSeedAsync|DownloadTitleSeedAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0000&lt;br /&gt;
| [[NIMU:DownloadMissingTitleSeedsAsync|DownloadMissingTitleSeedsAsync]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM server service &amp;quot;nim:s&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010200&lt;br /&gt;
| [[NIMS:StartDownloadSimple|StartDownloadSimple]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[NIMS:CancelDownload|CancelDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| [[NIMS:GetProgress|GetProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050082&lt;br /&gt;
| [[NIMS:UnregisterTask|UnregisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060080&lt;br /&gt;
| [[NIMS:IsTaskRegistered|IsTaskRegistered]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[NIMS:CheckSysupdateAvailableSOAP|CheckSysupdateAvailableSOAP]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0084&lt;br /&gt;
| [[NIMS:SetAttribute|SetAttribute]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0016020A&lt;br /&gt;
| [[NIMS:ListTitles|ListTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220080&lt;br /&gt;
| AccountDeleteTitleETicketsSOAP. The SOAP request is sent only after the ticket for the specified titleID has been successfully deleted.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290000&lt;br /&gt;
| [[NIMS:AccountCheckBalanceSOAP|AccountCheckBalanceSOAP]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D0042&lt;br /&gt;
| [[NIMS:DownloadTickets|DownloadTickets]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C0002&lt;br /&gt;
| [[NIMS:RegisterSelf|RegisterSelf]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F0000&lt;br /&gt;
| GetInitializeResult. Checks whether nim is properly initialized or not. If it is not, the result code returned is non-zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420240&lt;br /&gt;
| [[NIMS:StartDownload|StartDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00550246&lt;br /&gt;
| [[NIMS:RegisterTask|RegisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00570082&lt;br /&gt;
| [[NIMS:ConnectNoTicketDownload|ConnectNoTicketDownload]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM server service &amp;quot;nim:aoc&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030042&lt;br /&gt;
| SetApplicationId&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040042&lt;br /&gt;
| SetTin&lt;br /&gt;
|-&lt;br /&gt;
| 0x000902D0&lt;br /&gt;
| ListContentSetsEx&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| GetBalance&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| GetCustomerSupportCode&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| Initialize&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240282&lt;br /&gt;
| CalculateContentsRequiredSize&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| RefreshServerTime&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM service &amp;quot;nim:ndm&amp;quot; =&lt;br /&gt;
&lt;br /&gt;
= kagiya server =&lt;br /&gt;
The nim system module communicates with a server called kagiya (kagiya-ctr.cdn.nintendo.net or kagiya-dev-ctr.cdn.nintendo.net for development units). It provides the 9.6 crypto seed in binary form for any given title ID under (HTTPS) kagiya-ctr.cdn.nintendo.net/title/0x%16llx/ext_key?country=%s, where %16llx is the title ID and %s is a country code as used in the [[EShop|eShop]].&lt;br /&gt;
&lt;br /&gt;
=New3DS=&lt;br /&gt;
NIM module only uses [[PTMSYSM:CheckNew3DS|CheckNew3DS]] for determining what heap sizes to use, in two functions. One is for the size of the 0x08000000 vmem heap, the other is probably for some buffer allocated on that heap. The New3DS version of these sizes are 0x1C000-bytes larger than the Old3DS sizes here.&lt;br /&gt;
&lt;br /&gt;
=HTTPS requests=&lt;br /&gt;
&lt;br /&gt;
==Trusted RootCAs==&lt;br /&gt;
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 &amp;quot;notifications.json&amp;quot; page don&#039;t use these RootCertChains(in this case just [[HTTPC:AddDefaultCert|default]] certID 0xB is used).&lt;br /&gt;
&lt;br /&gt;
==SOAP==&lt;br /&gt;
&lt;br /&gt;
===NetUpdateSOAP===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
See also [https://github.com/yellows8/ninupdates here].&lt;br /&gt;
&lt;br /&gt;
====GetSystemUpdate====&lt;br /&gt;
Returns the current sysupdate title-listing. This also contains the SystemTitleHash returned by GetSystemTitleHash.&lt;br /&gt;
&lt;br /&gt;
====GetSystemTitleHash====&lt;br /&gt;
Returns the current SystemTitleHash for the current sysupdate title-listing.&lt;br /&gt;
&lt;br /&gt;
====GetSystemCommonETicket====&lt;br /&gt;
Returns the Base64-encoded cetk for each specified TitleId entry.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Sysupdate checking process=&lt;br /&gt;
This section describes the process used when checking whether a sysupdate is required.&lt;br /&gt;
&lt;br /&gt;
First the GetSystemTitleHash SOAP request is done. Then the SystemTitleHash in savedata hash.dat is compared with the received one. If they match and the SystemTitleHash flag is set to value 0x03, it will immediately return that no sysupdate is required. Otherwise it will start the GetSystemUpdate SOAP request handling.&lt;br /&gt;
&lt;br /&gt;
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&#039;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.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;lt;TitleVersion&amp;gt; entry with valid data in the GetSystemUpdate response is required.&lt;br /&gt;
&lt;br /&gt;
The titleIDs sent in the GetSystemUpdate SOAP request are decimal, while the titleIDs in the response are hex.&lt;br /&gt;
&lt;br /&gt;
=NIM [[System_SaveData]]=&lt;br /&gt;
==hash.dat==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 flag used with the SystemTitleHash. 0x01 = latest sysupdate isn&#039;t installed as of last SOAP requests, 0x03 = latest sysupdate is installed as of last SOAP requests.&lt;br /&gt;
|-&lt;br /&gt;
| 0x61&lt;br /&gt;
| 0x21&lt;br /&gt;
| ASCII hex SystemTitleHash, including NUL-terminator. This is the latest SystemTitleHash which NIM module received from SOAP.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Types=&lt;br /&gt;
&lt;br /&gt;
==SystemUpdateProgress==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[#SystemUpdateState|System Update State]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| 0x03&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x04&lt;br /&gt;
| Last Operation Result Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x08&lt;br /&gt;
| Current Title Downloaded Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x08&lt;br /&gt;
| Current Title Total Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x08&lt;br /&gt;
| Titles Downloaded&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x08&lt;br /&gt;
| Titles Total&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==SystemUpdateState==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Not Initialized&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Starting System Update&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Fetching System Hash and Account Status&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Installing New Tickets&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Installing Titles&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Update Complete&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Failed - System Updates Disabled (Dev Units Only)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| ? (Only for background updates)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| ? (Only for background updates)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadProgress==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[#TitleDownloadState|Title Download State]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| 0x03&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x04&lt;br /&gt;
| Last Operation Result Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x08&lt;br /&gt;
| Downloaded Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x08&lt;br /&gt;
| Total Bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadState==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Not Initialized&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Starting Title Download&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Downloading and Installing TMD&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Committing TMD&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Downloading and Installing Contents&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Contents Installed&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| [[AM:CommitImportPrograms|Committing Titles]]&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Finished&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| ? (Unknown error regarding title version?)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| ? (Creating the .ctx file (or error doing so)?)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Background Download Failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadConfig==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x08&lt;br /&gt;
| Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x04&lt;br /&gt;
| Title version&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 0x04&lt;br /&gt;
| Unknown (always 0?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x01&lt;br /&gt;
| Age Rating (for HOME Menu parental controls)&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[Filesystem_services#MediaType|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x02&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x04&lt;br /&gt;
| Unknown (always 0?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==BackgroundTitleDownloadConfig==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x018&lt;br /&gt;
| [[#TitleDownloadConfig|Title Download Config]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x018&lt;br /&gt;
| 0x001&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x019&lt;br /&gt;
| 0x001&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x01A&lt;br /&gt;
| 0x006&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x020&lt;br /&gt;
| 0x008&lt;br /&gt;
| Requester Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x028&lt;br /&gt;
| 0x090&lt;br /&gt;
| Title Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B8&lt;br /&gt;
| 0x002&lt;br /&gt;
| Title Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0BA&lt;br /&gt;
| 0x048&lt;br /&gt;
| Developer Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x102&lt;br /&gt;
| 0x002&lt;br /&gt;
| Developer Name Forced NUL Terminator (always 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==BackgroundTitleDownloadTaskInfo==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x104&lt;br /&gt;
| [[#BackgroundTitleDownloadConfig|Background Title Download Config]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x104&lt;br /&gt;
| 0x004&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x108&lt;br /&gt;
| 0x018&lt;br /&gt;
| [[#TitleDownloadProgress|Title Download Progress]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==AutoTitleDownloadTaskInfo==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x008&lt;br /&gt;
| Task ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x008&lt;br /&gt;
| 0x008&lt;br /&gt;
| Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x010&lt;br /&gt;
| 0x004&lt;br /&gt;
| Title Version&lt;br /&gt;
|-&lt;br /&gt;
| 0x014&lt;br /&gt;
| 0x014&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x028&lt;br /&gt;
| 0x008&lt;br /&gt;
| Required Storage Space&lt;br /&gt;
|-&lt;br /&gt;
| 0x030&lt;br /&gt;
| 0x004&lt;br /&gt;
| Last Operation Result code&lt;br /&gt;
|-&lt;br /&gt;
| 0x034&lt;br /&gt;
| 0x004&lt;br /&gt;
| Last Operation Customer Support Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x038&lt;br /&gt;
| 0x090&lt;br /&gt;
| Title Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C8&lt;br /&gt;
| 0x002&lt;br /&gt;
| Title Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0CA&lt;br /&gt;
| 0x048&lt;br /&gt;
| Developer Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x112&lt;br /&gt;
| 0x002&lt;br /&gt;
| Developer Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x114&lt;br /&gt;
| 0x024&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==InstallationMode==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Initial Installation&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Re-installation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Autodbg==&lt;br /&gt;
&lt;br /&gt;
Despite this being for debug purposes, it&#039;s used in retail if present.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x004&lt;br /&gt;
| Debug flags&lt;br /&gt;
|-&lt;br /&gt;
| 0x004&lt;br /&gt;
| 0x004&lt;br /&gt;
| Number of debug tasks in dbgtasks.dat&lt;br /&gt;
|-&lt;br /&gt;
| 0x008&lt;br /&gt;
| 0x100&lt;br /&gt;
| Debug URL dst.xml override&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Autodbg flag bits===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bit&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Use the tasks stored in dbgtasks.dat&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Use provided debug dtl.xml URL override&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Disable the download of dtl.xml&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Skip connecting to SOAP EC and download ETickets with a false success result during TSL processing&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Fake assume always ticket is present during TSL task condition processing&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Skip NPNS notification fetch for auto title downloads with a false success result&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Error Results=&lt;br /&gt;
&lt;br /&gt;
==NIM Results==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Result&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E0D001&lt;br /&gt;
| Non-null terminated string on IPC parameter for given length.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D004&lt;br /&gt;
| Unexpected/invalid state enums. (generic)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC820D005&lt;br /&gt;
| Invalid state under one managed title install manager.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A0D006&lt;br /&gt;
| Error state enum value. (generic)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D009&lt;br /&gt;
| Mismatch system title hash with server system title hash.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860D00E&lt;br /&gt;
| Max total size exceeded for system update pending titles. (128 MiB)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8E0D011&lt;br /&gt;
| Bad condition, title id for purpose or size under one managed title install manager.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8A0D027&lt;br /&gt;
| This occurs under certain code paths.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Result translation of result error from:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;HTTP module&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;SSL module&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;NIM module if description is between 100 to 299 (inclusive)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Unexpected HTTP status, followed up also by generating error integer with 54400 + http status, result value used as a 005-xxxx error&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D02E&lt;br /&gt;
| During tsl.xml task condition check. Still unclear, type of task check&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D030&lt;br /&gt;
| During tsl.xml task condition check. Ticket missing for title when expected. Will not occur with autodbg flag bit 4 set.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D031&lt;br /&gt;
| During tsl.xml task condition check. Title already installed when not overwrite mode.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D032&lt;br /&gt;
| During tsl.xml task condition check. Task for title already exists with same or higher version in task.dat.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D033&lt;br /&gt;
| During tsl.xml task condition check. Task for title already exists in task.dat.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E0D034&lt;br /&gt;
| During tsl.xml task condition check. Unexpected task title type.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D035&lt;br /&gt;
| 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)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D037&lt;br /&gt;
| Failed to load saved dtl.xml with result error of FS with description between 100 and 179, inclusive.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D038&lt;br /&gt;
| During tsl.xml task condition check. Not enough space for target SDMC user title.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A0D03D&lt;br /&gt;
| During tsl.xml task condition check. SDMC not inserted or non-writable for SDMC title. (bad media status)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D03E&lt;br /&gt;
| During tsl.xml task condition check. Not enough space for target TWL user title.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD940D040&lt;br /&gt;
| NIM ran into NPNS result 0xD8A15C07. Result translation.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD860D041&lt;br /&gt;
| During tsl.xml task condition check. Pending task count of task.dat and installed SDMC user title count exceed programmed max. (300)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD860D042&lt;br /&gt;
| During tsl.xml task condition check. Pending task count of task.dat and installed TWL user title count exceed programmed max. (40)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD880D043&lt;br /&gt;
| HTTP 404 while fetching title crypto seed from kagiya.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD880D044&lt;br /&gt;
| HTTP 503 while fetching title crypto seed from kagiya.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NPNS Results==&lt;br /&gt;
&lt;br /&gt;
NPNS has a module number for results, but no module exists, but can be at least in part found inside NIM.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Result&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8615C01&lt;br /&gt;
| Allocation error, insufficient memory.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C02&lt;br /&gt;
| HTTP non 2xx, json message processing, default error code switch result error.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C03&lt;br /&gt;
| JSON processing errors.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C04&lt;br /&gt;
| Notifications array bigger than expected.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C05&lt;br /&gt;
| HTTP Empty body response.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C06&lt;br /&gt;
| HTTP non 2xx, json message processing, error code 1003 given in json body.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C07&lt;br /&gt;
| HTTP non 2xx, json message processing, error code 1000 given in json body.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C08&lt;br /&gt;
| HTTP non 2xx, json message processing, error code 1004 given in json body.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other Results==&lt;br /&gt;
&lt;br /&gt;
Any other result that is not given by other modules as a response, but found internally in NIM.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Result&lt;br /&gt;
!  Module value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8600801&lt;br /&gt;
| Util (2)&lt;br /&gt;
| Encoding errors. In NIM, if error while encoding base64 for X-Authentication-Key or X-Authentication-Data HTTP parameters.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=22143</id>
		<title>NIM Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=22143"/>
		<updated>2023-03-04T00:58:07Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Add some extent of error codes. More to add later from reversal work.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= NIM updater service &amp;quot;nim:u&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| [[NIMU:StartNetworkUpdate|StartNetworkUpdate]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[NIMU:GetProgress|GetProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| [[NIMU:Cancel|Cancel]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| [[NIMU:CommitSystemTitles|CommitSystemTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| [[NIMU:GetBackgroundEventForMenu|GetBackgroundEventForMenu]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| [[NIMU:GetBackgroundEventForNews|GetBackgroundEventForNews]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| [[NIMU:FormatSaveData|FormatSaveData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| [[NIMU:GetCustomerSupportCode|GetCustomerSupportCode]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[NIMU:IsCommittableAllSystemTitles|IsCommittableAllSystemTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[NIMU:GetBackgroundProgress|GetBackgroundProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| [[NIMU:GetSavedHash|GetSavedHash]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0082&lt;br /&gt;
| [[NIMU:UnregisterTask|UnregisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0080&lt;br /&gt;
| [[NIMU:IsRegistered|IsRegistered]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0080&lt;br /&gt;
| [[NIMU:FindTaskInfo|FindTaskInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0042&lt;br /&gt;
| [[NIMU:GetTaskInfos|GetTaskInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| [[NIMU:DeleteUnmanagedContexts|DeleteUnmanagedContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110000&lt;br /&gt;
| [[NIMU:UpdateAutoTitleDownloadTasksAsync|UpdateAutoTitleDownloadTasksAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00120000&lt;br /&gt;
| [[NIMU:StartPendingAutoTitleDownloadTasksAsync|StartPendingAutoTitleDownloadTasksAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| [[NIMU:GetAsyncResult|GetAsyncResult]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140000&lt;br /&gt;
| [[NIMU:CancelAsyncCall|CancelAsyncCall]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150000&lt;br /&gt;
| [[NIMU:IsPendingAutoTitleDownloadTasks|IsPendingAutoTitleDownloadTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00160000&lt;br /&gt;
| [[NIMU:GetNumAutoTitleDownloadTasks|GetNumAutoTitleDownloadTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170042&lt;br /&gt;
| [[NIMU:GetAutoTitleDownloadTaskInfos|GetAutoTitleDownloadTaskInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180080&lt;br /&gt;
| [[NIMU:CancelAutoTitleDownloadTask|CancelAutoTitleDownloadTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190002&lt;br /&gt;
| [[NIMU:SetAutoDbgDat|SetAutoDbgDat]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0002&lt;br /&gt;
| [[NIMU:GetAutoDbgDat|GetAutoDbgDat]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0042&lt;br /&gt;
| [[NIMU:SetDbgTasks|SetDbgTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0042&lt;br /&gt;
| [[NIMU:GetDbgTasks|GetDbgTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| [[NIMU:DeleteDbgData|DeleteDbgData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E0042&lt;br /&gt;
| [[NIMU:SetTslXml|SetTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0000&lt;br /&gt;
| [[NIMU:GetTslXmlSize|GetTslXmlSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200042&lt;br /&gt;
| [[NIMU:GetTslXml|GetTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| [[NIMU:DeleteTslXml|DeleteTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220042&lt;br /&gt;
| [[NIMU:SetDtlXml|SetDtlXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00230000&lt;br /&gt;
| [[NIMU:GetDtlXmlSize|GetDtlXmlSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240042&lt;br /&gt;
| [[NIMU:GetDtlXml|GetDtlXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| [[NIMU:UpdateAccountStatus|UpdateAccountStatus]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260180&lt;br /&gt;
| [[NIMU:StartTitleDownload|StartTitleDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270000&lt;br /&gt;
| [[NIMU:StopTitleDownload|StopTitleDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280000&lt;br /&gt;
| [[NIMU:GetTitleDownloadProgress|GetTitleDownloadProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290246&lt;br /&gt;
| [[NIMU:RegisterTask|RegisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0000&lt;br /&gt;
| [[NIMU:IsSystemUpdateAvailable|IsSystemUpdateAvailable]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0000&lt;br /&gt;
| ? (Response: 0 = 0x002B0040, 1 = Result Code)&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0000&lt;br /&gt;
| [[NIMU:UpdateTickets|UpdateTickets]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D00C0&lt;br /&gt;
| [[NIMU:DownloadTitleSeedAsync|DownloadTitleSeedAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0000&lt;br /&gt;
| [[NIMU:DownloadMissingTitleSeedsAsync|DownloadMissingTitleSeedsAsync]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM server service &amp;quot;nim:s&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010200&lt;br /&gt;
| [[NIMS:StartDownloadSimple|StartDownloadSimple]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[NIMS:CancelDownload|CancelDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| [[NIMS:GetProgress|GetProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050082&lt;br /&gt;
| [[NIMS:UnregisterTask|UnregisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060080&lt;br /&gt;
| [[NIMS:IsTaskRegistered|IsTaskRegistered]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[NIMS:CheckSysupdateAvailableSOAP|CheckSysupdateAvailableSOAP]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0084&lt;br /&gt;
| [[NIMS:SetAttribute|SetAttribute]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0016020A&lt;br /&gt;
| [[NIMS:ListTitles|ListTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220080&lt;br /&gt;
| AccountDeleteTitleETicketsSOAP. The SOAP request is sent only after the ticket for the specified titleID has been successfully deleted.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290000&lt;br /&gt;
| [[NIMS:AccountCheckBalanceSOAP|AccountCheckBalanceSOAP]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D0042&lt;br /&gt;
| [[NIMS:DownloadTickets|DownloadTickets]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C0002&lt;br /&gt;
| [[NIMS:RegisterSelf|RegisterSelf]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F0000&lt;br /&gt;
| GetInitializeResult. Checks whether nim is properly initialized or not. If it is not, the result code returned is non-zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420240&lt;br /&gt;
| [[NIMS:StartDownload|StartDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00550246&lt;br /&gt;
| [[NIMS:RegisterTask|RegisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00570082&lt;br /&gt;
| [[NIMS:ConnectNoTicketDownload|ConnectNoTicketDownload]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM server service &amp;quot;nim:aoc&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030042&lt;br /&gt;
| SetApplicationId&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040042&lt;br /&gt;
| SetTin&lt;br /&gt;
|-&lt;br /&gt;
| 0x000902D0&lt;br /&gt;
| ListContentSetsEx&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| GetBalance&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| GetCustomerSupportCode&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| Initialize&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240282&lt;br /&gt;
| CalculateContentsRequiredSize&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| RefreshServerTime&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM service &amp;quot;nim:ndm&amp;quot; =&lt;br /&gt;
&lt;br /&gt;
= kagiya server =&lt;br /&gt;
The nim system module communicates with a server called kagiya (kagiya-ctr.cdn.nintendo.net or kagiya-dev-ctr.cdn.nintendo.net for development units). It provides the 9.6 crypto seed in binary form for any given title ID under (HTTPS) kagiya-ctr.cdn.nintendo.net/title/0x%16llx/ext_key?country=%s, where %16llx is the title ID and %s is a country code as used in the [[EShop|eShop]].&lt;br /&gt;
&lt;br /&gt;
=New3DS=&lt;br /&gt;
NIM module only uses [[PTMSYSM:CheckNew3DS|CheckNew3DS]] for determining what heap sizes to use, in two functions. One is for the size of the 0x08000000 vmem heap, the other is probably for some buffer allocated on that heap. The New3DS version of these sizes are 0x1C000-bytes larger than the Old3DS sizes here.&lt;br /&gt;
&lt;br /&gt;
=HTTPS requests=&lt;br /&gt;
&lt;br /&gt;
==Trusted RootCAs==&lt;br /&gt;
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 &amp;quot;notifications.json&amp;quot; page don&#039;t use these RootCertChains(in this case just [[HTTPC:AddDefaultCert|default]] certID 0xB is used).&lt;br /&gt;
&lt;br /&gt;
==SOAP==&lt;br /&gt;
&lt;br /&gt;
===NetUpdateSOAP===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
See also [https://github.com/yellows8/ninupdates here].&lt;br /&gt;
&lt;br /&gt;
====GetSystemUpdate====&lt;br /&gt;
Returns the current sysupdate title-listing. This also contains the SystemTitleHash returned by GetSystemTitleHash.&lt;br /&gt;
&lt;br /&gt;
====GetSystemTitleHash====&lt;br /&gt;
Returns the current SystemTitleHash for the current sysupdate title-listing.&lt;br /&gt;
&lt;br /&gt;
====GetSystemCommonETicket====&lt;br /&gt;
Returns the Base64-encoded cetk for each specified TitleId entry.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Sysupdate checking process=&lt;br /&gt;
This section describes the process used when checking whether a sysupdate is required.&lt;br /&gt;
&lt;br /&gt;
First the GetSystemTitleHash SOAP request is done. Then the SystemTitleHash in savedata hash.dat is compared with the received one. If they match and the SystemTitleHash flag is set to value 0x03, it will immediately return that no sysupdate is required. Otherwise it will start the GetSystemUpdate SOAP request handling.&lt;br /&gt;
&lt;br /&gt;
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&#039;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.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;lt;TitleVersion&amp;gt; entry with valid data in the GetSystemUpdate response is required.&lt;br /&gt;
&lt;br /&gt;
The titleIDs sent in the GetSystemUpdate SOAP request are decimal, while the titleIDs in the response are hex.&lt;br /&gt;
&lt;br /&gt;
=NIM [[System_SaveData]]=&lt;br /&gt;
==hash.dat==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 flag used with the SystemTitleHash. 0x01 = latest sysupdate isn&#039;t installed as of last SOAP requests, 0x03 = latest sysupdate is installed as of last SOAP requests.&lt;br /&gt;
|-&lt;br /&gt;
| 0x61&lt;br /&gt;
| 0x21&lt;br /&gt;
| ASCII hex SystemTitleHash, including NUL-terminator. This is the latest SystemTitleHash which NIM module received from SOAP.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Types=&lt;br /&gt;
&lt;br /&gt;
==SystemUpdateProgress==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[#SystemUpdateState|System Update State]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| 0x03&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x04&lt;br /&gt;
| Last Operation Result Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x08&lt;br /&gt;
| Current Title Downloaded Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x08&lt;br /&gt;
| Current Title Total Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x08&lt;br /&gt;
| Titles Downloaded&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x08&lt;br /&gt;
| Titles Total&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==SystemUpdateState==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Not Initialized&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Starting System Update&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Fetching System Hash and Account Status&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Installing New Tickets&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Installing Titles&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Update Complete&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Failed - System Updates Disabled (Dev Units Only)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| ? (Only for background updates)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| ? (Only for background updates)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadProgress==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[#TitleDownloadState|Title Download State]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| 0x03&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x04&lt;br /&gt;
| Last Operation Result Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x08&lt;br /&gt;
| Downloaded Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x08&lt;br /&gt;
| Total Bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadState==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Not Initialized&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Starting Title Download&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Downloading and Installing TMD&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Committing TMD&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Downloading and Installing Contents&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Contents Installed&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| [[AM:CommitImportPrograms|Committing Titles]]&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Finished&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| ? (Unknown error regarding title version?)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| ? (Creating the .ctx file (or error doing so)?)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Background Download Failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadConfig==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x08&lt;br /&gt;
| Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x04&lt;br /&gt;
| Title version&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 0x04&lt;br /&gt;
| Unknown (always 0?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x01&lt;br /&gt;
| Age Rating (for HOME Menu parental controls)&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[Filesystem_services#MediaType|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x02&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x04&lt;br /&gt;
| Unknown (always 0?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==BackgroundTitleDownloadConfig==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x018&lt;br /&gt;
| [[#TitleDownloadConfig|Title Download Config]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x018&lt;br /&gt;
| 0x001&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x019&lt;br /&gt;
| 0x001&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x01A&lt;br /&gt;
| 0x006&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x020&lt;br /&gt;
| 0x008&lt;br /&gt;
| Requester Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x028&lt;br /&gt;
| 0x090&lt;br /&gt;
| Title Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B8&lt;br /&gt;
| 0x002&lt;br /&gt;
| Title Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0BA&lt;br /&gt;
| 0x048&lt;br /&gt;
| Developer Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x102&lt;br /&gt;
| 0x002&lt;br /&gt;
| Developer Name Forced NUL Terminator (always 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==BackgroundTitleDownloadTaskInfo==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x104&lt;br /&gt;
| [[#BackgroundTitleDownloadConfig|Background Title Download Config]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x104&lt;br /&gt;
| 0x004&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x108&lt;br /&gt;
| 0x018&lt;br /&gt;
| [[#TitleDownloadProgress|Title Download Progress]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==AutoTitleDownloadTaskInfo==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x008&lt;br /&gt;
| Task ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x008&lt;br /&gt;
| 0x008&lt;br /&gt;
| Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x010&lt;br /&gt;
| 0x004&lt;br /&gt;
| Title Version&lt;br /&gt;
|-&lt;br /&gt;
| 0x014&lt;br /&gt;
| 0x014&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x028&lt;br /&gt;
| 0x008&lt;br /&gt;
| Required Storage Space&lt;br /&gt;
|-&lt;br /&gt;
| 0x030&lt;br /&gt;
| 0x004&lt;br /&gt;
| Last Operation Result code&lt;br /&gt;
|-&lt;br /&gt;
| 0x034&lt;br /&gt;
| 0x004&lt;br /&gt;
| Last Operation Customer Support Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x038&lt;br /&gt;
| 0x090&lt;br /&gt;
| Title Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C8&lt;br /&gt;
| 0x002&lt;br /&gt;
| Title Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0CA&lt;br /&gt;
| 0x048&lt;br /&gt;
| Developer Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x112&lt;br /&gt;
| 0x002&lt;br /&gt;
| Developer Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x114&lt;br /&gt;
| 0x024&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==InstallationMode==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Initial Installation&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Re-installation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Autodbg==&lt;br /&gt;
&lt;br /&gt;
Despite this being for debug purposes, it&#039;s used in retail if present.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x004&lt;br /&gt;
| Debug flags&lt;br /&gt;
|-&lt;br /&gt;
| 0x004&lt;br /&gt;
| 0x004&lt;br /&gt;
| Number of debug tasks in dbgtasks.dat&lt;br /&gt;
|-&lt;br /&gt;
| 0x008&lt;br /&gt;
| 0x100&lt;br /&gt;
| Debug URL dst.xml override&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Autodbg flag bits===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bit&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Use the tasks stored in dbgtasks.dat&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Use provided debug dtl.xml URL override&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Disable the download of dtl.xml&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Skip connecting to SOAP EC and download ETickets with a false success result during TSL processing&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Fake assume always ticket is present during TSL task condition processing&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Skip NPNS notification fetch for auto title downloads with a false success result&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Error Results=&lt;br /&gt;
&lt;br /&gt;
==NIM Results==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Result&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8600801&lt;br /&gt;
| Non-null terminated string on IPC parameter or failure to encode base64 for X-Authentication-Key or X-Authentication-Data HTTP parameters.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D004&lt;br /&gt;
| Unexpected/invalid state enums. (generic)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC820D005&lt;br /&gt;
| Invalid state under one managed title install manager.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A0D006&lt;br /&gt;
| Error state enum value. (generic)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC920D009&lt;br /&gt;
| Mismatch system title hash with server system title hash.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC860D00E&lt;br /&gt;
| Max total size exceeded for system update pending titles. (128 MiB)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8E0D011&lt;br /&gt;
| Bad condition, title id for purpose or size under one managed title install manager.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8A0D027&lt;br /&gt;
| This occurs under certain code paths.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Result translation of result error from:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;HTTP module&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;SSL module&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;NIM module if description is between 100 to 299 (inclusive)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Unexpected HTTP status, followed up also by generating error integer with 54400 + http status, result value used as a 005-xxxx error&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D02E&lt;br /&gt;
| During tsl.xml task condition check. Still unclear, type of task check&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D030&lt;br /&gt;
| During tsl.xml task condition check. Ticket missing for title when expected. Will not occur with autodbg flag bit 4 set.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D031&lt;br /&gt;
| During tsl.xml task condition check. Title already installed when not overwrite mode.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D032&lt;br /&gt;
| During tsl.xml task condition check. Task for title already exists with same or higher version in task.dat.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D033&lt;br /&gt;
| During tsl.xml task condition check. Task for title already exists in task.dat.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E0D034&lt;br /&gt;
| During tsl.xml task condition check. Unexpected task title type.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D035&lt;br /&gt;
| 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)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D037&lt;br /&gt;
| Failed to load saved dtl.xml with result error of FS with description between 100 and 179, inclusive.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D038&lt;br /&gt;
| During tsl.xml task condition check. Not enough space for target SDMC user title.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A0D03D&lt;br /&gt;
| During tsl.xml task condition check. SDMC not inserted or non-writable for SDMC title. (bad media status)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD960D03E&lt;br /&gt;
| During tsl.xml task condition check. Not enough space for target TWL user title.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD940D040&lt;br /&gt;
| NIM ran into NPNS result 0xD8A15C07. Result translation.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD860D041&lt;br /&gt;
| During tsl.xml task condition check. Pending task count of task.dat and installed SDMC user title count exceed programmed max. (300)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD860D042&lt;br /&gt;
| During tsl.xml task condition check. Pending task count of task.dat and installed TWL user title count exceed programmed max. (40)&lt;br /&gt;
|-&lt;br /&gt;
| 0xD880D043&lt;br /&gt;
| HTTP 404 while fetching title crypto seed from kagiya.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD880D044&lt;br /&gt;
| HTTP 503 while fetching title crypto seed from kagiya.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NPNS Results==&lt;br /&gt;
&lt;br /&gt;
NPNS has a module number for results, but no module exists, but can be at least in part found inside NIM.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Result&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8615C01&lt;br /&gt;
| Allocation error, insufficient memory.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C02&lt;br /&gt;
| HTTP non 2xx, json message processing, default error code switch result error.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C03&lt;br /&gt;
| JSON processing errors.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C04&lt;br /&gt;
| Notifications array bigger than expected.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C05&lt;br /&gt;
| HTTP Empty body response.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C06&lt;br /&gt;
| HTTP non 2xx, json message processing, error code 1003 given in json body.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C07&lt;br /&gt;
| HTTP non 2xx, json message processing, error code 1000 given in json body.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A15C08&lt;br /&gt;
| HTTP non 2xx, json message processing, error code 1004 given in json body.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=22142</id>
		<title>NIM Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=22142"/>
		<updated>2023-03-03T23:19:31Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Autodbg information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= NIM updater service &amp;quot;nim:u&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| [[NIMU:StartNetworkUpdate|StartNetworkUpdate]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[NIMU:GetProgress|GetProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| [[NIMU:Cancel|Cancel]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| [[NIMU:CommitSystemTitles|CommitSystemTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| [[NIMU:GetBackgroundEventForMenu|GetBackgroundEventForMenu]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| [[NIMU:GetBackgroundEventForNews|GetBackgroundEventForNews]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| [[NIMU:FormatSaveData|FormatSaveData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| [[NIMU:GetCustomerSupportCode|GetCustomerSupportCode]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[NIMU:IsCommittableAllSystemTitles|IsCommittableAllSystemTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[NIMU:GetBackgroundProgress|GetBackgroundProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| [[NIMU:GetSavedHash|GetSavedHash]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0082&lt;br /&gt;
| [[NIMU:UnregisterTask|UnregisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0080&lt;br /&gt;
| [[NIMU:IsRegistered|IsRegistered]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0080&lt;br /&gt;
| [[NIMU:FindTaskInfo|FindTaskInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0042&lt;br /&gt;
| [[NIMU:GetTaskInfos|GetTaskInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| [[NIMU:DeleteUnmanagedContexts|DeleteUnmanagedContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110000&lt;br /&gt;
| [[NIMU:UpdateAutoTitleDownloadTasksAsync|UpdateAutoTitleDownloadTasksAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00120000&lt;br /&gt;
| [[NIMU:StartPendingAutoTitleDownloadTasksAsync|StartPendingAutoTitleDownloadTasksAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| [[NIMU:GetAsyncResult|GetAsyncResult]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140000&lt;br /&gt;
| [[NIMU:CancelAsyncCall|CancelAsyncCall]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150000&lt;br /&gt;
| [[NIMU:IsPendingAutoTitleDownloadTasks|IsPendingAutoTitleDownloadTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00160000&lt;br /&gt;
| [[NIMU:GetNumAutoTitleDownloadTasks|GetNumAutoTitleDownloadTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170042&lt;br /&gt;
| [[NIMU:GetAutoTitleDownloadTaskInfos|GetAutoTitleDownloadTaskInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180080&lt;br /&gt;
| [[NIMU:CancelAutoTitleDownloadTask|CancelAutoTitleDownloadTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190002&lt;br /&gt;
| [[NIMU:SetAutoDbgDat|SetAutoDbgDat]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0002&lt;br /&gt;
| [[NIMU:GetAutoDbgDat|GetAutoDbgDat]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0042&lt;br /&gt;
| [[NIMU:SetDbgTasks|SetDbgTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0042&lt;br /&gt;
| [[NIMU:GetDbgTasks|GetDbgTasks]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| [[NIMU:DeleteDbgData|DeleteDbgData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E0042&lt;br /&gt;
| [[NIMU:SetTslXml|SetTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0000&lt;br /&gt;
| [[NIMU:GetTslXmlSize|GetTslXmlSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200042&lt;br /&gt;
| [[NIMU:GetTslXml|GetTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| [[NIMU:DeleteTslXml|DeleteTslXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220042&lt;br /&gt;
| [[NIMU:SetDtlXml|SetDtlXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00230000&lt;br /&gt;
| [[NIMU:GetDtlXmlSize|GetDtlXmlSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240042&lt;br /&gt;
| [[NIMU:GetDtlXml|GetDtlXml]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| [[NIMU:UpdateAccountStatus|UpdateAccountStatus]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260180&lt;br /&gt;
| [[NIMU:StartTitleDownload|StartTitleDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270000&lt;br /&gt;
| [[NIMU:StopTitleDownload|StopTitleDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280000&lt;br /&gt;
| [[NIMU:GetTitleDownloadProgress|GetTitleDownloadProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290246&lt;br /&gt;
| [[NIMU:RegisterTask|RegisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0000&lt;br /&gt;
| [[NIMU:IsSystemUpdateAvailable|IsSystemUpdateAvailable]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0000&lt;br /&gt;
| ? (Response: 0 = 0x002B0040, 1 = Result Code)&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0000&lt;br /&gt;
| [[NIMU:UpdateTickets|UpdateTickets]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D00C0&lt;br /&gt;
| [[NIMU:DownloadTitleSeedAsync|DownloadTitleSeedAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0000&lt;br /&gt;
| [[NIMU:DownloadMissingTitleSeedsAsync|DownloadMissingTitleSeedsAsync]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM server service &amp;quot;nim:s&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010200&lt;br /&gt;
| [[NIMS:StartDownloadSimple|StartDownloadSimple]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[NIMS:CancelDownload|CancelDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| [[NIMS:GetProgress|GetProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050082&lt;br /&gt;
| [[NIMS:UnregisterTask|UnregisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060080&lt;br /&gt;
| [[NIMS:IsTaskRegistered|IsTaskRegistered]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[NIMS:CheckSysupdateAvailableSOAP|CheckSysupdateAvailableSOAP]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0084&lt;br /&gt;
| [[NIMS:SetAttribute|SetAttribute]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0016020A&lt;br /&gt;
| [[NIMS:ListTitles|ListTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220080&lt;br /&gt;
| AccountDeleteTitleETicketsSOAP. The SOAP request is sent only after the ticket for the specified titleID has been successfully deleted.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290000&lt;br /&gt;
| [[NIMS:AccountCheckBalanceSOAP|AccountCheckBalanceSOAP]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D0042&lt;br /&gt;
| [[NIMS:DownloadTickets|DownloadTickets]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C0002&lt;br /&gt;
| [[NIMS:RegisterSelf|RegisterSelf]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F0000&lt;br /&gt;
| GetInitializeResult. Checks whether nim is properly initialized or not. If it is not, the result code returned is non-zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420240&lt;br /&gt;
| [[NIMS:StartDownload|StartDownload]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00550246&lt;br /&gt;
| [[NIMS:RegisterTask|RegisterTask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00570082&lt;br /&gt;
| [[NIMS:ConnectNoTicketDownload|ConnectNoTicketDownload]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM server service &amp;quot;nim:aoc&amp;quot; =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030042&lt;br /&gt;
| SetApplicationId&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040042&lt;br /&gt;
| SetTin&lt;br /&gt;
|-&lt;br /&gt;
| 0x000902D0&lt;br /&gt;
| ListContentSetsEx&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| GetBalance&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| GetCustomerSupportCode&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| Initialize&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240282&lt;br /&gt;
| CalculateContentsRequiredSize&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| RefreshServerTime&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= NIM service &amp;quot;nim:ndm&amp;quot; =&lt;br /&gt;
&lt;br /&gt;
= kagiya server =&lt;br /&gt;
The nim system module communicates with a server called kagiya (kagiya-ctr.cdn.nintendo.net or kagiya-dev-ctr.cdn.nintendo.net for development units). It provides the 9.6 crypto seed in binary form for any given title ID under (HTTPS) kagiya-ctr.cdn.nintendo.net/title/0x%16llx/ext_key?country=%s, where %16llx is the title ID and %s is a country code as used in the [[EShop|eShop]].&lt;br /&gt;
&lt;br /&gt;
=New3DS=&lt;br /&gt;
NIM module only uses [[PTMSYSM:CheckNew3DS|CheckNew3DS]] for determining what heap sizes to use, in two functions. One is for the size of the 0x08000000 vmem heap, the other is probably for some buffer allocated on that heap. The New3DS version of these sizes are 0x1C000-bytes larger than the Old3DS sizes here.&lt;br /&gt;
&lt;br /&gt;
=HTTPS requests=&lt;br /&gt;
&lt;br /&gt;
==Trusted RootCAs==&lt;br /&gt;
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 &amp;quot;notifications.json&amp;quot; page don&#039;t use these RootCertChains(in this case just [[HTTPC:AddDefaultCert|default]] certID 0xB is used).&lt;br /&gt;
&lt;br /&gt;
==SOAP==&lt;br /&gt;
&lt;br /&gt;
===NetUpdateSOAP===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
See also [https://github.com/yellows8/ninupdates here].&lt;br /&gt;
&lt;br /&gt;
====GetSystemUpdate====&lt;br /&gt;
Returns the current sysupdate title-listing. This also contains the SystemTitleHash returned by GetSystemTitleHash.&lt;br /&gt;
&lt;br /&gt;
====GetSystemTitleHash====&lt;br /&gt;
Returns the current SystemTitleHash for the current sysupdate title-listing.&lt;br /&gt;
&lt;br /&gt;
====GetSystemCommonETicket====&lt;br /&gt;
Returns the Base64-encoded cetk for each specified TitleId entry.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Sysupdate checking process=&lt;br /&gt;
This section describes the process used when checking whether a sysupdate is required.&lt;br /&gt;
&lt;br /&gt;
First the GetSystemTitleHash SOAP request is done. Then the SystemTitleHash in savedata hash.dat is compared with the received one. If they match and the SystemTitleHash flag is set to value 0x03, it will immediately return that no sysupdate is required. Otherwise it will start the GetSystemUpdate SOAP request handling.&lt;br /&gt;
&lt;br /&gt;
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&#039;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.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;lt;TitleVersion&amp;gt; entry with valid data in the GetSystemUpdate response is required.&lt;br /&gt;
&lt;br /&gt;
The titleIDs sent in the GetSystemUpdate SOAP request are decimal, while the titleIDs in the response are hex.&lt;br /&gt;
&lt;br /&gt;
=NIM [[System_SaveData]]=&lt;br /&gt;
==hash.dat==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 flag used with the SystemTitleHash. 0x01 = latest sysupdate isn&#039;t installed as of last SOAP requests, 0x03 = latest sysupdate is installed as of last SOAP requests.&lt;br /&gt;
|-&lt;br /&gt;
| 0x61&lt;br /&gt;
| 0x21&lt;br /&gt;
| ASCII hex SystemTitleHash, including NUL-terminator. This is the latest SystemTitleHash which NIM module received from SOAP.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Types=&lt;br /&gt;
&lt;br /&gt;
==SystemUpdateProgress==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[#SystemUpdateState|System Update State]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| 0x03&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x04&lt;br /&gt;
| Last Operation Result Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x08&lt;br /&gt;
| Current Title Downloaded Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x08&lt;br /&gt;
| Current Title Total Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x08&lt;br /&gt;
| Titles Downloaded&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x08&lt;br /&gt;
| Titles Total&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==SystemUpdateState==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Not Initialized&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Starting System Update&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Fetching System Hash and Account Status&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Installing New Tickets&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Installing Titles&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Update Complete&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Failed - System Updates Disabled (Dev Units Only)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| ? (Only for background updates)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| ? (Only for background updates)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadProgress==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[#TitleDownloadState|Title Download State]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| 0x03&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x04&lt;br /&gt;
| Last Operation Result Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x08&lt;br /&gt;
| Downloaded Bytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x08&lt;br /&gt;
| Total Bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadState==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Not Initialized&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Starting Title Download&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Downloading and Installing TMD&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Committing TMD&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Downloading and Installing Contents&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Contents Installed&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| [[AM:CommitImportPrograms|Committing Titles]]&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Finished&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| ? (Unknown error regarding title version?)&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| ? (Creating the .ctx file (or error doing so)?)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Background Download Failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==TitleDownloadConfig==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x08&lt;br /&gt;
| Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 0x04&lt;br /&gt;
| Title version&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 0x04&lt;br /&gt;
| Unknown (always 0?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x01&lt;br /&gt;
| Age Rating (for HOME Menu parental controls)&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| 0x01&lt;br /&gt;
| [[Filesystem_services#MediaType|Media Type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x02&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x04&lt;br /&gt;
| Unknown (always 0?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==BackgroundTitleDownloadConfig==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x018&lt;br /&gt;
| [[#TitleDownloadConfig|Title Download Config]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x018&lt;br /&gt;
| 0x001&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x019&lt;br /&gt;
| 0x001&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x01A&lt;br /&gt;
| 0x006&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x020&lt;br /&gt;
| 0x008&lt;br /&gt;
| Requester Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x028&lt;br /&gt;
| 0x090&lt;br /&gt;
| Title Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B8&lt;br /&gt;
| 0x002&lt;br /&gt;
| Title Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0BA&lt;br /&gt;
| 0x048&lt;br /&gt;
| Developer Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x102&lt;br /&gt;
| 0x002&lt;br /&gt;
| Developer Name Forced NUL Terminator (always 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==BackgroundTitleDownloadTaskInfo==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x104&lt;br /&gt;
| [[#BackgroundTitleDownloadConfig|Background Title Download Config]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x104&lt;br /&gt;
| 0x004&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x108&lt;br /&gt;
| 0x018&lt;br /&gt;
| [[#TitleDownloadProgress|Title Download Progress]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==AutoTitleDownloadTaskInfo==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x008&lt;br /&gt;
| Task ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x008&lt;br /&gt;
| 0x008&lt;br /&gt;
| Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x010&lt;br /&gt;
| 0x004&lt;br /&gt;
| Title Version&lt;br /&gt;
|-&lt;br /&gt;
| 0x014&lt;br /&gt;
| 0x014&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x028&lt;br /&gt;
| 0x008&lt;br /&gt;
| Required Storage Space&lt;br /&gt;
|-&lt;br /&gt;
| 0x030&lt;br /&gt;
| 0x004&lt;br /&gt;
| Last Operation Result code&lt;br /&gt;
|-&lt;br /&gt;
| 0x034&lt;br /&gt;
| 0x004&lt;br /&gt;
| Last Operation Customer Support Code&lt;br /&gt;
|-&lt;br /&gt;
| 0x038&lt;br /&gt;
| 0x090&lt;br /&gt;
| Title Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C8&lt;br /&gt;
| 0x002&lt;br /&gt;
| Title Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0CA&lt;br /&gt;
| 0x048&lt;br /&gt;
| Developer Name (UTF-16)&lt;br /&gt;
|-&lt;br /&gt;
| 0x112&lt;br /&gt;
| 0x002&lt;br /&gt;
| Developer Name Forced NUL Terminator (always 0)&lt;br /&gt;
|-&lt;br /&gt;
| 0x114&lt;br /&gt;
| 0x024&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==InstallationMode==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Initial Installation&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Re-installation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Autodbg==&lt;br /&gt;
&lt;br /&gt;
Despite this being for debug purposes, it&#039;s used in retail if present.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Length&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 0x004&lt;br /&gt;
| Debug flags&lt;br /&gt;
|-&lt;br /&gt;
| 0x004&lt;br /&gt;
| 0x004&lt;br /&gt;
| Number of debug tasks in dbgtasks.dat&lt;br /&gt;
|-&lt;br /&gt;
| 0x008&lt;br /&gt;
| 0x100&lt;br /&gt;
| Debug URL dst.xml override&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Autodbg flag bits===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bit&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Use the tasks stored in dbgtasks.dat&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Use provided debug dtl.xml URL override&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Disable the download of dtl.xml&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Skip connecting to SOAP EC and download ETickets with a false success result during TSL processing&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Fake assume always ticket is present during TSL task condition processing&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Skip NPNS notification fetch for auto title downloads with a false success result&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CTCert&amp;diff=21866</id>
		<title>CTCert</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CTCert&amp;diff=21866"/>
		<updated>2022-04-27T20:44:35Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Saying 01 is incorrect, its not always 1 that&amp;#039;s loaded off dev OTP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary=&lt;br /&gt;
The console-unique CTCert is used for signing [[Title Data Structure|CTX]] files, the DeviceCert used by [[eShop]], and for [[DSiWare_Exports|DSiWare]] exports. This ECDSA signature, the ECDSA private key for this cert, and the IssuerID is loaded from memory initialized by bootrom instead of NAND. This is the 3DS equivalent of the DSi TWCert.&lt;br /&gt;
&lt;br /&gt;
The CTCert is signed with ECDSA by Nintendo. CTCerts can be verified via a DER stored in NATIVE_FIRM, separate DERs are used for retail and dev/debug.&lt;br /&gt;
&lt;br /&gt;
=Structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x04&lt;br /&gt;
| [[Certificates|Signature]] Type, 0x010005.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x3C&lt;br /&gt;
| ECDSA Signature using Nintendo&#039;s private key, in big-endian.  The first 0x1E bytes are &amp;quot;r&amp;quot;; the second 0x1E bytes are &amp;quot;s&amp;quot;.  The hash is SHA-256 computed over this certificate, starting at byte 0x80 (&amp;quot;Cert Issue ID&amp;quot;) to the end.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x40&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x40&lt;br /&gt;
| Cert Issuer ID, for retail this is &amp;quot;Nintendo CA - G3_NintendoCTR2prod&amp;quot;, for dev &amp;quot;Nintendo CA - G3_NintendoCTR2dev&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x04&lt;br /&gt;
| Key Type&lt;br /&gt;
|-&lt;br /&gt;
| 0xC4&lt;br /&gt;
| 0x40&lt;br /&gt;
| Key ID: &amp;quot;CT&amp;lt;DeviceId&amp;gt;-&amp;lt;ConsoleType&amp;gt;&amp;quot;, where DeviceId is the hex [[PSPXI:GetDeviceId|DeviceId]], and ConsoleType is 00 for retail, any other single byte hex value for dev&lt;br /&gt;
|-&lt;br /&gt;
| 0x104&lt;br /&gt;
| 0x04&lt;br /&gt;
| Expiration time as UNIX Timestamp in big endian.&lt;br /&gt;
|-&lt;br /&gt;
| 0x108&lt;br /&gt;
| 0x3C&lt;br /&gt;
| ECDSA Public Key of this console as a curve point in big-endian.  The first 0x1E bytes are &amp;quot;x&amp;quot; of this point; the second 0x1E bytes are &amp;quot;y&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x144&lt;br /&gt;
| 0x3C&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Boot ROM decrypts [[OTP Registers]] and writes the private key and Nintendo&#039;s signature of CTCert to [[Memory_layout#ARM9_ITCM|ARM9 ITCM]]; the public key is computed from the private key.&lt;br /&gt;
&lt;br /&gt;
The curve used for ECDSA is sect233r1.&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Process_Services_PXI&amp;diff=21850</id>
		<title>Process Services PXI</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Process_Services_PXI&amp;diff=21850"/>
		<updated>2022-04-15T14:20:12Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: More clear information about exponents on RSA context&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Process Services PXI &amp;quot;pxi:ps9&amp;quot;=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header (Pre 2.0)&lt;br /&gt;
!  Command Header (Post 2.0)&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| This crypts a raw message with RSA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020284&lt;br /&gt;
| 0x00020284&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SignRsaSha256&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030284&lt;br /&gt;
| 0x00030284&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| VerifyRsaSha256&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040140&lt;br /&gt;
| Removed&lt;br /&gt;
| [[1.0.0-0]], removed with [[2.0.0-2]]&lt;br /&gt;
| SetAesKey&lt;br /&gt;
|-&lt;br /&gt;
| 0x000501C4&lt;br /&gt;
| 0x000401C4&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:EncryptDecryptAes|EncryptDecryptAes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060284&lt;br /&gt;
| 0x00050284&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:EncryptSignDecryptVerifyAesCcm|EncryptSignDecryptVerifyAesCcm]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetRomId. This reads 0x40-bytes from [[Gamecards|gamecard]] command 0xC6 (gamecard-uniqueID), and returns the first 0x10-bytes from that since the rest of the command reply is all 0xFF-bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetRomId2. The first u8 this returns is from GetRomMakerCode, the following 0x10-bytes are from [[AES|encrypting]] the 0x10-bytes which GetRomId also returns. This is encrypted with AES-CBC, the regular normal-key and IV set by [[FIRM|Process9]] for this are loaded from the Process9 .rodata section.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:GetCTRCardAutoStartupBit|GetCTRCardAutoStartupBit]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetRomMakerCode&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:GetLocalFriendCodeSeed|GetLocalFriendCodeSeed]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:GetDeviceId|GetDeviceId]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0042&lt;br /&gt;
| 0x000C0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SeedRNG&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0042&lt;br /&gt;
| 0x000D0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:GenerateRandomBytes|GenerateRandomBytes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04010084&lt;br /&gt;
| 0x04010084&lt;br /&gt;
| [[8.1.0-0_New3DS]]&lt;br /&gt;
| GenerateAmiiboHMAC. [[New_3DS]]-only. cmd[1] = insize, cmd[2] = outsize, cmd[3] = (insize&amp;lt;&amp;lt;8) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0x4, cmd[4] = inbufptr, cmd[5] = (outsize&amp;lt;&amp;lt;8) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0x14, and cmd[6] = outbufptr.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04020082&lt;br /&gt;
| 0x04020082&lt;br /&gt;
| [[8.1.0-0_New3DS]]&lt;br /&gt;
| GenerateAmiiboKeyData. [[New_3DS]]-only. cmd[1] = insize, cmd[2] = u8 flag, cmd[3] = (insize&amp;lt;&amp;lt;8) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0x4, cmd[4] = inbufptr.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04030044&lt;br /&gt;
| 0x04030044&lt;br /&gt;
| [[8.1.0-0_New3DS]]&lt;br /&gt;
| AmiiboEncryptDecrypt. [[New_3DS]]-only.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04040044&lt;br /&gt;
| 0x04040044&lt;br /&gt;
| [[8.1.0-0_New3DS]]&lt;br /&gt;
| AmiiboEncryptDecryptDev. [[New_3DS]]-only.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These RSA commands are an interface for using the [[RSA]] engine. The system will hang when it attempts to use a &amp;gt;RSA-2048 RSA bit-size with the RSA engine, since the [[RSA]] engine does not support &amp;gt;RSA-2048. These RSA commands have an input field specifying what RSA bit-size to use, but the RSA padding code is hard-coded to use RSA-2048.&lt;br /&gt;
&lt;br /&gt;
The New3DS 0x040X commands(used for [[Amiibo]] crypto) were removed with [[9.3.0-21]], the code for that was moved into [[NFC_Services|NFC]]-module.&lt;br /&gt;
&lt;br /&gt;
=Command 0x04010084=&lt;br /&gt;
The input buffer size must be &amp;lt;=0x1E0-bytes, and the out buffer size must be &amp;gt;0 and &amp;lt;=0x20-bytes. This calculates a SHA256-HMAC over the input buffer using the current already-generated [[Amiibo]] HMAC key(generated_amiibodata+0x20), the output hash is then written to the out buffer.&lt;br /&gt;
&lt;br /&gt;
=Command 0x04020082=&lt;br /&gt;
This is used for [[Amiibo]] key generation. 0x30-bytes are generated. The input buffer size must be 0x40-bytes.&lt;br /&gt;
&lt;br /&gt;
The input u8 must be either zero or non-zero, the used value varies depending on what crypto(AES/HMAC) operation is done after the crypto init.&lt;br /&gt;
&lt;br /&gt;
Structure of the input buffer:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2&lt;br /&gt;
| This is the raw [[Amiibo]]-write counter u16 from page[4] byte1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xE&lt;br /&gt;
| All-zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x8&lt;br /&gt;
| This is the first 8-bytes of the NFC tag serial-number(page0-1).&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x8&lt;br /&gt;
| Same 8-bytes as above.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x20&lt;br /&gt;
| This is the plaintext hash from NFC tag page[0x18], which is the hash listed under the page 0x15 section [[Amiibo|here]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Command 0x04030044=&lt;br /&gt;
This is used for the actual [[Amiibo]] AES crypto, max input buffer size is same as command 0x04010084. AES-CTR is used here. Normal-key = generated_amiibodata+0x0, CTR = generated_amiibodata+0x10(see command 0x04010084 regarding generated_amiibodata).&lt;br /&gt;
&lt;br /&gt;
=Command 0x04040044=&lt;br /&gt;
Similar to 0x04030044, except this is devunit-only with dev-only keys.&lt;br /&gt;
&lt;br /&gt;
=RSA Context=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x100&lt;br /&gt;
| Modulo&lt;br /&gt;
|-&lt;br /&gt;
| 0x100&lt;br /&gt;
| 0x100&lt;br /&gt;
| Exponent&lt;br /&gt;
|-&lt;br /&gt;
| 0x200&lt;br /&gt;
| 0x4&lt;br /&gt;
| RSA bit-size.&lt;br /&gt;
|-&lt;br /&gt;
| 0x204&lt;br /&gt;
| 0x1&lt;br /&gt;
| Exponent Type. 0 = Short Exponent, 1 = Long Exponent. See notes below.&lt;br /&gt;
|-&lt;br /&gt;
| 0x205&lt;br /&gt;
| 0x3&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This context structure is fixed to 0x208-bytes.&lt;br /&gt;
&lt;br /&gt;
Notes on exponents:&lt;br /&gt;
* When the type is a short exponent, the exponent field is used as an u32 field with little endianness.&lt;br /&gt;
** An example use of this type is to load the common public exponent, 0x10001.&lt;br /&gt;
* When a long exponent is set, the exponent field is a buffer of a big endian number instead.&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Application_Manager_Services_PXI&amp;diff=21848</id>
		<title>Application Manager Services PXI</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Application_Manager_Services_PXI&amp;diff=21848"/>
		<updated>2022-04-15T09:58:47Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Update links and names to new command information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Application Manager Services PXI &amp;quot;pxi:am9&amp;quot;=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTitleCount|GetTitleCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTitleList|GetTitleList]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030084&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTitleInfo|GetTitleInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000400C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:DeleteTitle|DeleteTitle]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000500C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTitleProductCode|GetTitleProductCode]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000600C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTitleExtDataId|GetTitleExtDataId]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:DeletePendingTitles|DeletePendingTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallFIRM|InstallFIRM]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTikBegin|InstallTikBegin]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTikWrite|InstallTikWrite]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTikAbort|InstallTikAbort]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTikFinish|InstallTikFinish]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:DeleteTicket|DeleteTicket]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTicketCount|GetTicketCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTicketList|GetTicketList]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100100&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTitleBegin|InstallTitleBegin]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTitleStop|InstallTitleStop]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTitleResume|InstallTitleResume]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTmdBegin|InstallTmdBegin]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTmdWrite|InstallTmdWrite]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTmdAbort|InstallTmdAbort]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00160040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTmdFinish|InstallTmdFinish]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentBegin|InstallContentBegin]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentWrite|InstallContentWrite]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentStop|InstallContentStop]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentAbort|InstallContentAbort]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentResume|InstallContentResume]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentFinish|InstallContentFinish]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetPendingTitleCount|GetPendingTitleCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetPendingTitleList|GetPendingTitleList]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0084&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetPendingTitleInfo|GetPendingTitleInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002000C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:DeletePendingTitle|DeletePendingTitle]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002100C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetNumImportContentContexts|GetNumImportContentContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220102&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetImportContentContextList|GetImportContentContextList]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00230104&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetImportContentContexts|GetImportContentContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240102&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:DeleteImportContentContexts|DeleteImportContentContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| [[1.0.0-0]] &lt;br /&gt;
| [[AMPXI:GetNumCurrentImportContentContexts|GetNumCurrentImportContentContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetCurrentImportContentContextList|GetCurrentImportContentContextList]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270044&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetCurrentImportContentContexts|GetCurrentImportContentContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTitleAbort|InstallTitleAbort]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTitleFinish|InstallTitleFinish]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTitlesFinish|InstallTitlesFinish]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002B....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x002F....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0030....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0031....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0032....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0033....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0034....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0035....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0036....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0037....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0038....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00390146&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:Sign|Sign]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003A0146&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x003B0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetCTCert|GetCTCert]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetDeviceID|GetDeviceID]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003D0108&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:SetCertificates|SetCertificates]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003E0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:SetCertificate|SetCertificate]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F0040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:IsImportDatabaseInitialized|IsImportDatabaseInitialized]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00400040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:DoCleanup|DoCleanup]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00410000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:DeleteAllTemporaryPrograms|DeleteAllTemporaryPrograms]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420142&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTitlesFinishFIRM|InstallTitlesFinishFIRM]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004301C8&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:VerifyDSiWareFooter|VerifyDSiWareFooter]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004400C4&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| This does basically nothing: after checking the two buffers&#039; mem-ranges successfully(on failure it executes svcBreak like all other Process9 code for that), this just returns 0x0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00450108&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:DecryptDSiWareData|DecryptDSiWareData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00460182&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:WriteTWLSavedata|WriteTWLSavedata]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00470080&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:InitializeTitleDatabase|InitializeTitleDatabase]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00480040&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:ReloadDBS|ReloadDBS]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00490080&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:GetNumTicketIds|GetNumTicketIds]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004A0102&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:GetTicketIdList|GetTicketIdList]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004B0100&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:DeleteTicketId|DeleteTicketId]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004C0042&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:GetPersonalizedTicketInfoList|GetPersonalizedTicketInfoList]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004D0144&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:ExportDSiWare|ExportDSiWare]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004E00C0&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| InstallTitleBeginDSi (?) (unknown_u64, u8_optype) The optype must be 5 or 11, but it&#039;s not used after validating it. Disabling using this in AM-sysmodule breaks DSiWare-importing. This is used right before [[AMPXI:InstallTmdBegin|InstallTmdBegin]] in AM-sysmodule.&lt;br /&gt;
|-&lt;br /&gt;
| 0x004F00C0&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:GetDSiWareExportSize|GetDSiWareExportSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00500044&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:GetTwlProgramListForReboot|GetTwlProgramListForReboot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00510000&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:DeleteAllTwlUserPrograms|DeleteAllTwlUserPrograms]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00520040&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:DeleteAllExpiredUserPrograms|DeleteAllExpiredUserPrograms]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00530084&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:ValidateDSiWareMovableSedHash|ValidateDSiWareMovableSedHash]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00540000&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:GetTWLPartitionInfo|GetTWLPartitionInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005500C4&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:ValidateDSiWareSectionMAC|ValidateDSiWareSectionMAC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005600C0&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:CheckContentRights|CheckContentRights]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00570042&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:InstallTitleSetContentIndices|InstallTitleSetContentIndices]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005800C0&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:GetNumContentInfos|GetNumContentInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00590104&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:FindContentInfos|FindContentInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005A0142&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:ListContentInfos|ListContentInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005B0000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:GetNumCurrentContentInfos|GetNumCurrentContentInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005C0044&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x005D0082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:ListCurrentContentInfos|ListCurrentContentInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005E0102&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:DeleteContents|DeleteContents]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005F0080&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00600102&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:ListDataTitleTicketInfos|ListDataTitleTicketInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00610142&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:ExportLicenseTicket|ExportLicenseTicket]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00620044&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:GetTicketLimitInfos|GetTicketLimitInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00630042&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:UpdateImportContentContexts|UpdateImportContentContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x006400C0&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:GetInternalTitleLocationInfo|GetInternalTitleLocationInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x006500C0&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:MigrateAGBtoSAV|MigrateAGBtoSAV]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0066....&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| Stubbed starting with [[4.0.0-7]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00670082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:DeleteProgramsAtomically|DeleteProgramsAtomically]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x006801C2&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:GetItemRights|GetItemRights]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x006900C0&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:IsDataTitleInUse|IsDataTitleInUse]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x006A00C0&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:GetNumExistingContentInfos|GetNumExistingContentInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x006B0142&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x006C00C0&lt;br /&gt;
| [[5.0.0-11]]&lt;br /&gt;
| (u8 [[Mediatypes|Mediatype]], u64 programID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x006D0184&lt;br /&gt;
| [[11.8.0-41]]&lt;br /&gt;
| [[AMPXI:ExportTicketWrapped|ExportTicketWrapped]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Errors=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Error-code&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8A0802B&lt;br /&gt;
| This indicates the the [[Title_Database|dbs]] image(.db) does not exist, or opening the .db file failed.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8E083FC&lt;br /&gt;
| This error indicates that the title is already installed, with the same title-version as the title being installed?&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08027&lt;br /&gt;
| Invalid title-version, or the title-version of the title being installed is older than the currently installed title-version.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A08004&lt;br /&gt;
| Wrong installation state.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08020&lt;br /&gt;
| CIA file is empty.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08025&lt;br /&gt;
| Invalid NCCH. returned from InstallContentFinish&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A08029&lt;br /&gt;
| Error-type 1&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065&lt;br /&gt;
| Error-type -1&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+1 / 0xD8E08066&lt;br /&gt;
| Error-type -2&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+2 / 0xD8E08067&lt;br /&gt;
| Error-type -3. Returned when a CIA header is invalid.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+3 / 0xD8E08068&lt;br /&gt;
| Error-type -4&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+4 / 0xD8E08069&lt;br /&gt;
| Error-type -5&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+5 / 0xD8E0806A&lt;br /&gt;
| Error-type -6. Returned when a function returns error -2011: signature or hash check for cert(TMD/TIK/cert-chain, ...) failed.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+6 / 0xD8E0806B&lt;br /&gt;
| Error-type -7&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+7 / 0xD8E0806C&lt;br /&gt;
| Error-type -8&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+8 / 0xD8E0806D&lt;br /&gt;
| Error-type -9&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+9 / 0xD8E0806E&lt;br /&gt;
| Error-type -10&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+10 / 0xD8E0806F&lt;br /&gt;
| Error-type -11&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+11 / 0xD8E08070&lt;br /&gt;
| Error-type -12&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+12 / 0xD8E08071&lt;br /&gt;
| Error-type -13&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+13 / 0xD8E08072&lt;br /&gt;
| Error-type -14&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A083FA&lt;br /&gt;
| Invalid titleID(?) / the specified title(s) don&#039;t exist.&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E0802C&lt;br /&gt;
| AM module returns this error when the system-title bit is set for the input CTR/TWL titleID-high, for [[AM:DeleteApplicationTitle]].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=AMPXI:InstallTitleStop&amp;diff=21847</id>
		<title>AMPXI:InstallTitleStop</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=AMPXI:InstallTitleStop&amp;diff=21847"/>
		<updated>2022-04-15T09:56:27Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Small typographical error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00110000]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00110040]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Stops active title import initialized by [[AMPXI:InstallTitleBegin|AMPXI:InstallTitleBegin]] or resumed by [[AMPXI:InstallTitleResume|AMPXI:InstallTitleResume]].&lt;br /&gt;
&lt;br /&gt;
The import is not cancelled and can later be resumed with [[AMPXI:InstallTitleResume|AMPXI:InstallTitleResume]].&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=AMPXI:InstallTitleAbort&amp;diff=21846</id>
		<title>AMPXI:InstallTitleAbort</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=AMPXI:InstallTitleAbort&amp;diff=21846"/>
		<updated>2022-04-15T09:52:29Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Add actual title abort ampxi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00280000]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00280040]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Aborts active title import initialized by [[AMPXI:InstallTitleBegin|AMPXI:InstallTitleBegin]] or resumed by [[AMPXI:InstallTitleResume|AMPXI:InstallTitleResume]].&lt;br /&gt;
&lt;br /&gt;
Cannot be resumed with [[AMPXI:InstallTitleResume|AMPXI:InstallTitleResume]] later.&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=AMPXI:InstallTitleStop&amp;diff=21845</id>
		<title>AMPXI:InstallTitleStop</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=AMPXI:InstallTitleStop&amp;diff=21845"/>
		<updated>2022-04-15T09:49:01Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Description given about this command based on AM &amp;amp; PS9 behavior and binary reversal.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00110000]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00110040]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Stops active content import initialized by [[AMPXI:InstallTitleBegin|AMPXI:InstallTitleBegin]] or resumed by [[AMPXI:InstallTitleResume|AMPXI:InstallTitleResume]].&lt;br /&gt;
&lt;br /&gt;
The import is not cancelled and can later be resumed with [[AMPXI:InstallTitleResume|AMPXI:InstallTitleResume]].&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=AMPXI:InstallTitleAbort&amp;diff=21844</id>
		<title>AMPXI:InstallTitleAbort</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=AMPXI:InstallTitleAbort&amp;diff=21844"/>
		<updated>2022-04-15T09:43:42Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Luigoalma moved page AMPXI:InstallTitleAbort to AMPXI:InstallTitleStop: 0x00110000 is not Abort, stops for later resume&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[AMPXI:InstallTitleStop]]&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=AMPXI:InstallTitleStop&amp;diff=21843</id>
		<title>AMPXI:InstallTitleStop</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=AMPXI:InstallTitleStop&amp;diff=21843"/>
		<updated>2022-04-15T09:43:42Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Luigoalma moved page AMPXI:InstallTitleAbort to AMPXI:InstallTitleStop: 0x00110000 is not Abort, stops for later resume&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00110000]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00110040]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Application_Manager_Services_PXI&amp;diff=21842</id>
		<title>Application Manager Services PXI</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Application_Manager_Services_PXI&amp;diff=21842"/>
		<updated>2022-04-15T09:41:04Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Update links to actual and new commands&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Application Manager Services PXI &amp;quot;pxi:am9&amp;quot;=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTitleCount|GetTitleCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTitleList|GetTitleList]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030084&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTitleInfo|GetTitleInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000400C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:DeleteTitle|DeleteTitle]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000500C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTitleProductCode|GetTitleProductCode]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000600C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTitleExtDataId|GetTitleExtDataId]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:DeletePendingTitles|DeletePendingTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallFIRM|InstallFIRM]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTikBegin|InstallTikBegin]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTikWrite|InstallTikWrite]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTikAbort|InstallTikAbort]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTikFinish|InstallTikFinish]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:DeleteTicket|DeleteTicket]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTicketCount|GetTicketCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0082&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetTicketList|GetTicketList]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100100&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTitleBegin|InstallTitleBegin]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTitleAbort|InstallTitleAbort]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTitleResume|InstallTitleResume]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTmdBegin|InstallTmdBegin]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTmdWrite|InstallTmdWrite]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTmdAbort|InstallTmdAbort]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00160040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTmdFinish|InstallTmdFinish]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentBegin|InstallContentBegin]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentWrite|InstallContentWrite]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentStop|InstallContentStop]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentAbort|InstallContentAbort]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B0040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentResume|InstallContentResume]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallContentFinish|InstallContentFinish]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0080&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetPendingTitleCount|GetPendingTitleCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetPendingTitleList|GetPendingTitleList]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0084&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetPendingTitleInfo|GetPendingTitleInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002000C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:DeletePendingTitle|DeletePendingTitle]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002100C0&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetNumImportContentContexts|GetNumImportContentContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220102&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetImportContentContextList|GetImportContentContextList]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00230104&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetImportContentContexts|GetImportContentContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240102&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:DeleteImportContentContexts|DeleteImportContentContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00250000&lt;br /&gt;
| [[1.0.0-0]] &lt;br /&gt;
| [[AMPXI:GetNumCurrentImportContentContexts|GetNumCurrentImportContentContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetCurrentImportContentContextList|GetCurrentImportContentContextList]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270044&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetCurrentImportContentContexts|GetCurrentImportContentContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| InstallTitleAbortDSi (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTitleFinish|InstallTitleFinish]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A00C2&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTitlesFinish|InstallTitlesFinish]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002B....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x002F....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0030....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0031....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0032....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0033....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0034....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0035....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0036....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0037....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0038....&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00390146&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:Sign|Sign]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003A0146&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| Stubbed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x003B0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetCTCert|GetCTCert]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:GetDeviceID|GetDeviceID]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003D0108&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:SetCertificates|SetCertificates]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003E0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:SetCertificate|SetCertificate]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F0040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:IsImportDatabaseInitialized|IsImportDatabaseInitialized]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00400040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:DoCleanup|DoCleanup]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00410000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:DeleteAllTemporaryPrograms|DeleteAllTemporaryPrograms]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420142&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[AMPXI:InstallTitlesFinishFIRM|InstallTitlesFinishFIRM]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004301C8&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:VerifyDSiWareFooter|VerifyDSiWareFooter]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004400C4&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| This does basically nothing: after checking the two buffers&#039; mem-ranges successfully(on failure it executes svcBreak like all other Process9 code for that), this just returns 0x0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00450108&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:DecryptDSiWareData|DecryptDSiWareData]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00460182&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:WriteTWLSavedata|WriteTWLSavedata]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00470080&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:InitializeTitleDatabase|InitializeTitleDatabase]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00480040&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:ReloadDBS|ReloadDBS]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00490080&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:GetNumTicketIds|GetNumTicketIds]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004A0102&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:GetTicketIdList|GetTicketIdList]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004B0100&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:DeleteTicketId|DeleteTicketId]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004C0042&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:GetPersonalizedTicketInfoList|GetPersonalizedTicketInfoList]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004D0144&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:ExportDSiWare|ExportDSiWare]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004E00C0&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| InstallTitleBeginDSi (?) (unknown_u64, u8_optype) The optype must be 5 or 11, but it&#039;s not used after validating it. Disabling using this in AM-sysmodule breaks DSiWare-importing. This is used right before [[AMPXI:InstallTmdBegin|InstallTmdBegin]] in AM-sysmodule.&lt;br /&gt;
|-&lt;br /&gt;
| 0x004F00C0&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:GetDSiWareExportSize|GetDSiWareExportSize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00500044&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:GetTwlProgramListForReboot|GetTwlProgramListForReboot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00510000&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:DeleteAllTwlUserPrograms|DeleteAllTwlUserPrograms]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00520040&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:DeleteAllExpiredUserPrograms|DeleteAllExpiredUserPrograms]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00530084&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:ValidateDSiWareMovableSedHash|ValidateDSiWareMovableSedHash]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00540000&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:GetTWLPartitionInfo|GetTWLPartitionInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005500C4&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:ValidateDSiWareSectionMAC|ValidateDSiWareSectionMAC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005600C0&lt;br /&gt;
| [[2.0.0-2]]&lt;br /&gt;
| [[AMPXI:CheckContentRights|CheckContentRights]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00570042&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:InstallTitleSetContentIndices|InstallTitleSetContentIndices]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005800C0&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:GetNumContentInfos|GetNumContentInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00590104&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:FindContentInfos|FindContentInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005A0142&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:ListContentInfos|ListContentInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005B0000&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:GetNumCurrentContentInfos|GetNumCurrentContentInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005C0044&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x005D0082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:ListCurrentContentInfos|ListCurrentContentInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005E0102&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:DeleteContents|DeleteContents]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x005F0080&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00600102&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:ListDataTitleTicketInfos|ListDataTitleTicketInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00610142&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:ExportLicenseTicket|ExportLicenseTicket]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00620044&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:GetTicketLimitInfos|GetTicketLimitInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00630042&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:UpdateImportContentContexts|UpdateImportContentContexts]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x006400C0&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:GetInternalTitleLocationInfo|GetInternalTitleLocationInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x006500C0&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:MigrateAGBtoSAV|MigrateAGBtoSAV]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0066....&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| Stubbed starting with [[4.0.0-7]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x00670082&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:DeleteProgramsAtomically|DeleteProgramsAtomically]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x006801C2&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:GetItemRights|GetItemRights]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x006900C0&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:IsDataTitleInUse|IsDataTitleInUse]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x006A00C0&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| [[AMPXI:GetNumExistingContentInfos|GetNumExistingContentInfos]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x006B0142&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x006C00C0&lt;br /&gt;
| [[5.0.0-11]]&lt;br /&gt;
| (u8 [[Mediatypes|Mediatype]], u64 programID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x006D0184&lt;br /&gt;
| [[11.8.0-41]]&lt;br /&gt;
| [[AMPXI:ExportTicketWrapped|ExportTicketWrapped]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Errors=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Error-code&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8A0802B&lt;br /&gt;
| This indicates the the [[Title_Database|dbs]] image(.db) does not exist, or opening the .db file failed.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8E083FC&lt;br /&gt;
| This error indicates that the title is already installed, with the same title-version as the title being installed?&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08027&lt;br /&gt;
| Invalid title-version, or the title-version of the title being installed is older than the currently installed title-version.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A08004&lt;br /&gt;
| Wrong installation state.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08020&lt;br /&gt;
| CIA file is empty.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08025&lt;br /&gt;
| Invalid NCCH. returned from InstallContentFinish&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A08029&lt;br /&gt;
| Error-type 1&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065&lt;br /&gt;
| Error-type -1&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+1 / 0xD8E08066&lt;br /&gt;
| Error-type -2&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+2 / 0xD8E08067&lt;br /&gt;
| Error-type -3. Returned when a CIA header is invalid.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+3 / 0xD8E08068&lt;br /&gt;
| Error-type -4&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+4 / 0xD8E08069&lt;br /&gt;
| Error-type -5&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+5 / 0xD8E0806A&lt;br /&gt;
| Error-type -6. Returned when a function returns error -2011: signature or hash check for cert(TMD/TIK/cert-chain, ...) failed.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+6 / 0xD8E0806B&lt;br /&gt;
| Error-type -7&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+7 / 0xD8E0806C&lt;br /&gt;
| Error-type -8&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+8 / 0xD8E0806D&lt;br /&gt;
| Error-type -9&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+9 / 0xD8E0806E&lt;br /&gt;
| Error-type -10&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+10 / 0xD8E0806F&lt;br /&gt;
| Error-type -11&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+11 / 0xD8E08070&lt;br /&gt;
| Error-type -12&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+12 / 0xD8E08071&lt;br /&gt;
| Error-type -13&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8E08065+13 / 0xD8E08072&lt;br /&gt;
| Error-type -14&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8A083FA&lt;br /&gt;
| Invalid titleID(?) / the specified title(s) don&#039;t exist.&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0E0802C&lt;br /&gt;
| AM module returns this error when the system-title bit is set for the input CTR/TWL titleID-high, for [[AM:DeleteApplicationTitle]].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=AMPXI:InstallContentAbort&amp;diff=21841</id>
		<title>AMPXI:InstallContentAbort</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=AMPXI:InstallContentAbort&amp;diff=21841"/>
		<updated>2022-04-15T09:39:21Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Add actual content abort command&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x001A0000]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x001A0040]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Aborts active content import initialized by [[AMPXI:InstallContentBegin|AMPXI:InstallContentBegin]] or resumed by [[AMPXI:InstallContentResume|AMPXI:InstallContentResume]].&lt;br /&gt;
&lt;br /&gt;
Cannot be resumed with [[AMPXI:InstallContentResume|AMPXI:InstallContentResume]] later.&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=AMPXI:InstallContentStop&amp;diff=21840</id>
		<title>AMPXI:InstallContentStop</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=AMPXI:InstallContentStop&amp;diff=21840"/>
		<updated>2022-04-15T09:35:16Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Description given about this command based on AM &amp;amp; PS9 behavior and binary reversal.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00190000]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00190040]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Stops active content import initialized by [[AMPXI:InstallContentBegin|AMPXI:InstallContentBegin]] or resumed by [[AMPXI:InstallContentResume|AMPXI:InstallContentResume]].&lt;br /&gt;
&lt;br /&gt;
The import is not cancelled and can later be resumed with [[AMPXI:InstallContentResume|AMPXI:InstallContentResume]].&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=AMPXI:InstallContentAbort&amp;diff=21839</id>
		<title>AMPXI:InstallContentAbort</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=AMPXI:InstallContentAbort&amp;diff=21839"/>
		<updated>2022-04-15T09:22:54Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Luigoalma moved page AMPXI:InstallContentAbort to AMPXI:InstallContentStop: 0x00190000 is not abort, its stopping content import for later resume&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[AMPXI:InstallContentStop]]&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=AMPXI:InstallContentStop&amp;diff=21838</id>
		<title>AMPXI:InstallContentStop</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=AMPXI:InstallContentStop&amp;diff=21838"/>
		<updated>2022-04-15T09:22:54Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Luigoalma moved page AMPXI:InstallContentAbort to AMPXI:InstallContentStop: 0x00190000 is not abort, its stopping content import for later resume&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00190000]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x00190040]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Process_Services_PXI&amp;diff=21807</id>
		<title>Process Services PXI</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Process_Services_PXI&amp;diff=21807"/>
		<updated>2022-02-01T01:02:53Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Found information from reversing all PS versions and some P9 binaries and given named based on what used for&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Process Services PXI &amp;quot;pxi:ps9&amp;quot;=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Command Header (Pre 2.0)&lt;br /&gt;
!  Command Header (Post 2.0)&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| 0x000100C6&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| This crypts a raw message with RSA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020284&lt;br /&gt;
| 0x00020284&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SignRsaSha256&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030284&lt;br /&gt;
| 0x00030284&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| VerifyRsaSha256&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040140&lt;br /&gt;
| Removed&lt;br /&gt;
| [[1.0.0-0]], removed with [[2.0.0-2]]&lt;br /&gt;
| SetAesKey&lt;br /&gt;
|-&lt;br /&gt;
| 0x000501C4&lt;br /&gt;
| 0x000401C4&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:EncryptDecryptAes|EncryptDecryptAes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060284&lt;br /&gt;
| 0x00050284&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:EncryptSignDecryptVerifyAesCcm|EncryptSignDecryptVerifyAesCcm]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetRomId. This reads 0x40-bytes from [[Gamecards|gamecard]] command 0xC6 (gamecard-uniqueID), and returns the first 0x10-bytes from that since the rest of the command reply is all 0xFF-bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetRomId2. The first u8 this returns is from GetRomMakerCode, the following 0x10-bytes are from [[AES|encrypting]] the 0x10-bytes which GetRomId also returns. This is encrypted with AES-CBC, the regular normal-key and IV set by [[FIRM|Process9]] for this are loaded from the Process9 .rodata section.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:GetCTRCardAutoStartupBit|GetCTRCardAutoStartupBit]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetRomMakerCode&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:GetLocalFriendCodeSeed|GetLocalFriendCodeSeed]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:GetDeviceId|GetDeviceId]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0042&lt;br /&gt;
| 0x000C0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SeedRNG&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0042&lt;br /&gt;
| 0x000D0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:GenerateRandomBytes|GenerateRandomBytes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04010084&lt;br /&gt;
| 0x04010084&lt;br /&gt;
| [[8.1.0-0_New3DS]]&lt;br /&gt;
| GenerateAmiiboHMAC. [[New_3DS]]-only. cmd[1] = insize, cmd[2] = outsize, cmd[3] = (insize&amp;lt;&amp;lt;8) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0x4, cmd[4] = inbufptr, cmd[5] = (outsize&amp;lt;&amp;lt;8) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0x14, and cmd[6] = outbufptr.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04020082&lt;br /&gt;
| 0x04020082&lt;br /&gt;
| [[8.1.0-0_New3DS]]&lt;br /&gt;
| GenerateAmiiboKeyData. [[New_3DS]]-only. cmd[1] = insize, cmd[2] = u8 flag, cmd[3] = (insize&amp;lt;&amp;lt;8) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0x4, cmd[4] = inbufptr.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04030044&lt;br /&gt;
| 0x04030044&lt;br /&gt;
| [[8.1.0-0_New3DS]]&lt;br /&gt;
| AmiiboEncryptDecrypt. [[New_3DS]]-only.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04040044&lt;br /&gt;
| 0x04040044&lt;br /&gt;
| [[8.1.0-0_New3DS]]&lt;br /&gt;
| AmiiboEncryptDecryptDev. [[New_3DS]]-only.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These RSA commands are an interface for using the [[RSA]] engine. The system will hang when it attempts to use a &amp;gt;RSA-2048 RSA bit-size with the RSA engine, since the [[RSA]] engine does not support &amp;gt;RSA-2048. These RSA commands have an input field specifying what RSA bit-size to use, but the RSA padding code is hard-coded to use RSA-2048.&lt;br /&gt;
&lt;br /&gt;
The New3DS 0x040X commands(used for [[Amiibo]] crypto) were removed with [[9.3.0-21]], the code for that was moved into [[NFC_Services|NFC]]-module.&lt;br /&gt;
&lt;br /&gt;
=Command 0x04010084=&lt;br /&gt;
The input buffer size must be &amp;lt;=0x1E0-bytes, and the out buffer size must be &amp;gt;0 and &amp;lt;=0x20-bytes. This calculates a SHA256-HMAC over the input buffer using the current already-generated [[Amiibo]] HMAC key(generated_amiibodata+0x20), the output hash is then written to the out buffer.&lt;br /&gt;
&lt;br /&gt;
=Command 0x04020082=&lt;br /&gt;
This is used for [[Amiibo]] key generation. 0x30-bytes are generated. The input buffer size must be 0x40-bytes.&lt;br /&gt;
&lt;br /&gt;
The input u8 must be either zero or non-zero, the used value varies depending on what crypto(AES/HMAC) operation is done after the crypto init.&lt;br /&gt;
&lt;br /&gt;
Structure of the input buffer:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2&lt;br /&gt;
| This is the raw [[Amiibo]]-write counter u16 from page[4] byte1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xE&lt;br /&gt;
| All-zero.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x8&lt;br /&gt;
| This is the first 8-bytes of the NFC tag serial-number(page0-1).&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x8&lt;br /&gt;
| Same 8-bytes as above.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x20&lt;br /&gt;
| This is the plaintext hash from NFC tag page[0x18], which is the hash listed under the page 0x15 section [[Amiibo|here]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Command 0x04030044=&lt;br /&gt;
This is used for the actual [[Amiibo]] AES crypto, max input buffer size is same as command 0x04010084. AES-CTR is used here. Normal-key = generated_amiibodata+0x0, CTR = generated_amiibodata+0x10(see command 0x04010084 regarding generated_amiibodata).&lt;br /&gt;
&lt;br /&gt;
=Command 0x04040044=&lt;br /&gt;
Similar to 0x04030044, except this is devunit-only with dev-only keys.&lt;br /&gt;
&lt;br /&gt;
=RSA Context=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x100&lt;br /&gt;
| Modulo&lt;br /&gt;
|-&lt;br /&gt;
| 0x100&lt;br /&gt;
| 0x100&lt;br /&gt;
| Exponent&lt;br /&gt;
|-&lt;br /&gt;
| 0x200&lt;br /&gt;
| 0x4&lt;br /&gt;
| RSA bit-size.&lt;br /&gt;
|-&lt;br /&gt;
| 0x204&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0 = Public Exponent, 1 = Private Exponent&lt;br /&gt;
|-&lt;br /&gt;
| 0x205&lt;br /&gt;
| 0x3&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This context structure is fixed to 0x208-bytes.&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Homebrew_Exploits&amp;diff=21331</id>
		<title>Homebrew Exploits</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Homebrew_Exploits&amp;diff=21331"/>
		<updated>2020-09-10T00:46:40Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Payload==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Works on latest fw&lt;br /&gt;
!  Name&lt;br /&gt;
!  Description&lt;br /&gt;
!  Supported firmwares&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://smealum.github.io/3ds/ *hax payload]&lt;br /&gt;
| Booted by all of the below non-sysmodule exploits. &#039;&#039;&#039;No longer needed as of [https://github.com/AuroraWright/Luma3DS/releases/tag/v8.0 Luma 8.0]&#039;&#039;&#039;&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-7&#039;&#039;&#039; up to &#039;&#039;&#039;11.9.0-42&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the rest of this page, &amp;quot;Supported firmwares&amp;quot; refers to the exploit &#039;&#039;itself&#039;&#039;, not whether *hax payload supports it.&lt;br /&gt;
&lt;br /&gt;
==Standalone Homebrew Launcher Exploits==&lt;br /&gt;
The following homebrew exploits can be executed on a previously un-exploited system. &#039;&#039;Please&#039;&#039; see the above Payload section regarding what &amp;quot;Supported firmwares&amp;quot; indicates &#039;&#039;exactly&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Works on latest fw&lt;br /&gt;
!  Name&lt;br /&gt;
!  Supported firmwares&lt;br /&gt;
!  Requirements&lt;br /&gt;
!  Author&lt;br /&gt;
!  Install&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [[ninjhax|Ninjhax 1.1b]]&lt;br /&gt;
| From &#039;&#039;&#039;4.0.0-7&#039;&#039;&#039; up to and including &#039;&#039;&#039;9.2.0-20&#039;&#039;&#039;.&lt;br /&gt;
| A cartridge or eShop version (JPN-only) of &amp;quot;Cubic Ninja&amp;quot;.&lt;br /&gt;
| smea&lt;br /&gt;
| [http://smealum.net/ninjhax/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [[ninjhax|Ninjhax 2.x]]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-7&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.9.X&#039;&#039;&#039;.&lt;br /&gt;
|  A cartridge or eShop version (JPN-only, not available anymore for purchase) of &amp;quot;Cubic Ninja&amp;quot;.&lt;br /&gt;
| smea&lt;br /&gt;
| [https://smealum.github.io/ninjhax2/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [http://plutooo.github.io/freakyhax/ freakyhax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-7&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.9.X&#039;&#039;&#039;.&lt;br /&gt;
|  A cartridge or eShop version (USA/EUR/JPN, not available anymore for purchase) of &amp;quot;Freakyform Deluxe&amp;quot;.&lt;br /&gt;
| plutoo&lt;br /&gt;
| [http://plutooo.github.io/freakyhax/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [http://plutooo.github.io/smilehax/ smilehax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-7&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.0.0-33&#039;&#039;&#039;&lt;br /&gt;
| SmileBASIC (JPN all versions up to 3.32 excluded, USA 3.31 only)&lt;br /&gt;
| plutoo&lt;br /&gt;
| [http://plutooo.github.io/smilehax/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/zoogie/smilehax-IIe smilehax IIe]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-7&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.13.0-45&#039;&#039;&#039;&lt;br /&gt;
| SmileBASIC (JPN version 3.3.2 via app downgrade, USA/EUR 3.6.0, aka latest app version)&lt;br /&gt;
| zoogie&lt;br /&gt;
| [https://github.com/zoogie/smilehax-IIe/releases/latest Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [http://mrnbayoh.github.io/basicsploit/ BASICSploit]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-7&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.0.0-33&#039;&#039;&#039;&lt;br /&gt;
| SmileBASIC (USA all versions)&lt;br /&gt;
| MrNbaYoh&lt;br /&gt;
| [http://mrnbayoh.github.io/basicsploit/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [[smashbroshax|smashbroshax]] (beaconhax)&lt;br /&gt;
| (New 3DS only) From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.9.0-37&#039;&#039;&#039;.&lt;br /&gt;
| Super Smash Bros 3DS (full-game) and a way to broadcast raw wifi beacons. The demo (prior to the updated November 2015 [https://github.com/yellows8/3ds_smashbroshax version]) isn&#039;t usable with the *hax payloads. Game-version v1.1.3 fixed the vuln used with this, see the repo for a workaround for that.&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
| [https://github.com/yellows8/3ds_smashbroshax Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [[browserhax]]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-2&#039;&#039;&#039; to &#039;&#039;&#039;11.0.0-33&#039;&#039;&#039;&lt;br /&gt;
Note that the browser-version-check bypass is only usable prior to [[10.7.0-32]].&lt;br /&gt;
| A USA, EUR, JPN, or KOR system.&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
| [http://yls8.mtheall.com/3dsbrowserhax.php Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [https://github.com/svanheulen/genhax genhax]&lt;br /&gt;
| (New 3DS only) From &#039;&#039;&#039;9.9.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.2.0-X&#039;&#039;&#039;.&lt;br /&gt;
| A gamecard or eShop-install of Monster Hunter X (JPN only), and the DLC encryption key (see installer instructions). &#039;&#039;&#039;Note: the secondary exploit still works, see bellow&#039;&#039;&#039;&lt;br /&gt;
| svanheulen&lt;br /&gt;
| [https://github.com/svanheulen/genhax_installer Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [https://github.com/nedwill/soundhax soundhax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-13&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.3.0-36&#039;&#039;&#039;.&lt;br /&gt;
| A USA, EUR, JPN or KOR system.&lt;br /&gt;
| nedwill&lt;br /&gt;
| [http://soundhax.com Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/MrNbaYoh/doodlebomb doodlebomb]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039;(?) up to and including &#039;&#039;&#039;11.6.0-X&#039;&#039;&#039;.&lt;br /&gt;
| An eShop-install of Swapdoodle (version 1.1.1 or lower). As of 2017-4-26, version 1.1.2 was released, blocking outdated app version from sending or receiving messages.&lt;br /&gt;
| MrNbaYoh&lt;br /&gt;
| [https://mrnbayoh.github.io/doodlebomb/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/MrNbaYoh/rpwng2 RPwnG 2]&lt;br /&gt;
| From &#039;&#039;&#039;1.1.7-X&#039;&#039;&#039;(?) up to and including &#039;&#039;&#039;11.9.0-X&#039;&#039;&#039;.&lt;br /&gt;
| A digital copy of RPG Maker Player (free) ver. 1.1.4 on EUR, ver. 1.1.2 on USA. A 3DS on firmware 11.7. &lt;br /&gt;
| MrNbaYoh&lt;br /&gt;
| [https://mrnbayoh.github.io/rpwng2/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: darkorange&amp;quot; | Only if installed before August 28, 2017&lt;br /&gt;
| [https://twitter.com/MrNbaYoh/status/899394739543437313 RPwnG]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039;(?) up to and including &#039;&#039;&#039;11.9.0-X&#039;&#039;&#039;.&lt;br /&gt;
| An  digital copy of RPG Maker Player (free) ver. 1.1.4 on EUR, ver. 1.1.2 on USA/JPN is required. As of August 28, 2017 the code is instantly removed after publishing.&lt;br /&gt;
| MrNbaYoh&lt;br /&gt;
| [https://mrnbayoh.github.io/rpwng/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [https://github.com/MrNbaYoh/notehax notehax]&lt;br /&gt;
|  From &#039;&#039;&#039;9.9.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.5.0-X&#039;&#039;&#039;.&lt;br /&gt;
| A digital copy of Flipnote Studio 3D on ver 1.3.1 (JPN) and ver 1.0.0 for EUR/USA (not the latest)&lt;br /&gt;
| MrNbaYoh&lt;br /&gt;
| [https://mrnbayoh.github.io/notehax/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: darkorange&amp;quot; | Only if you already purchased Blockfactory before it was removed from the eShop&lt;br /&gt;
| [https://github.com/Stary2001/haxfactory haxfactory]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039;(?) up to and including &#039;&#039;&#039;11.9.0-X&#039;&#039;&#039;.&lt;br /&gt;
| A digital copy of &amp;quot;Blockfactory&amp;quot; (USA/EUR)&lt;br /&gt;
| Stary2001&lt;br /&gt;
| [https://github.com/Stary2001/haxfactory Install]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Exploits==&lt;br /&gt;
Installation of these exploits requires a previously exploited system to install. After installation, they can be used on their own. &#039;&#039;Please&#039;&#039; see the above Payload section regarding what &amp;quot;Supported firmwares&amp;quot; indicates &#039;&#039;exactly&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Works on latest fw&lt;br /&gt;
!  Name&lt;br /&gt;
!  Supported firmwares&lt;br /&gt;
!  Requirements&lt;br /&gt;
!  Author&lt;br /&gt;
!  Install&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [[ironhax]]&lt;br /&gt;
| From &#039;&#039;&#039;9.5.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;10.3.0-X&#039;&#039;&#039;, for &#039;&#039;&#039;X&#039;&#039;&#039; up to and including 28.&lt;br /&gt;
| A copy of &amp;quot;Ironfall: Invasion&amp;quot; downloaded from eShop before August 11th, 2015. Note the updated version that was released on October 13th, 2015 is not supported.&lt;br /&gt;
| smea&lt;br /&gt;
| [http://smealum.github.io/3ds/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [http://vegaroxas.github.io/ steelhax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.9.0-X&#039;&#039;&#039;&lt;br /&gt;
| A copy of Steel Diver: Sub Wars&lt;br /&gt;
| Vegaroxas&lt;br /&gt;
| [https://github.com/VegaRoXas/vegaroxas.github.io/raw/master/files/steelhax-installer.zip Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/yellows8/oot3dhax oot3dhax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.9.0-X&#039;&#039;&#039;, for &#039;&#039;&#039;X&#039;&#039;&#039; up to and including 39.&lt;br /&gt;
| A gamecard or eShop-install of Legend of Zelda: Ocarina of Time 3D. Besides using the installer app, writing raw saveimages with a save dongle for example is another option. Before compression was introduced in the 2016-7-18 release, the size of the *hax payload meant the exploit can&#039;t co-exist with regular saves on a physical version of the game.&lt;br /&gt;
| Yellows8 / smea et al.&lt;br /&gt;
| See [https://smealum.github.io/3ds/ here].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [[menuhax]]&lt;br /&gt;
| JPN/USA/EUR: From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.2.0-X&#039;&#039;&#039;.&lt;br /&gt;
KOR: From &#039;&#039;&#039;9.6.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.2.0-X&#039;&#039;&#039;.&lt;br /&gt;
| JPN/USA/EUR: Having created [[Home_Menu#Home_Menu_Theme_SD_ExtData|theme extdata]] through opening the official theme selector at least once.&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
| [https://github.com/yellows8/3ds_homemenuhax/releases Download]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/shinyquagsire23/supermysterychunkhax supermysterychunkhax]&lt;br /&gt;
| From &#039;&#039;&#039;9.9.0-X&#039;&#039;&#039; (USA/JPN) / &#039;&#039;&#039;10.2.0-X&#039;&#039;&#039; (EUR) up to &#039;&#039;&#039;11.9.0-X&#039;&#039;&#039;.&lt;br /&gt;
| A gamecard or eShop-install of Pokémon Super Mystery Dungeon.&lt;br /&gt;
| Shiny Quagsire / SALT team&lt;br /&gt;
| [https://smd.salthax.org/ Install].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [https://github.com/shinyquagsire23/v_hax (v*)hax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.0.0-X&#039;&#039;&#039;, for &#039;&#039;&#039;X&#039;&#039;&#039; up to and including 33.&lt;br /&gt;
Note that &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; is only required for the Homebrew Launcher - the game itself only requires &#039;&#039;&#039;2.1.0-X&#039;&#039;&#039; for primitive userland code execution.&lt;br /&gt;
| A copy of VVVVVV downloaded after March 2012 (v1). v1.1 patches out the overflow vulnerability used by (v*)hax.&lt;br /&gt;
| Shiny Quagsire / SALT team&lt;br /&gt;
| [https://vvvvvv.salthax.org/ Install].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/Dazzozo/humblehax humblehax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; (USA/EUR) up to and including &#039;&#039;&#039;11.9.0-X&#039;&#039;&#039;.&lt;br /&gt;
| An eShop-install of Citizens of Earth (either v1 or v2), featured in the Humble &amp;quot;Friends of Nintendo&amp;quot; Bundle.&lt;br /&gt;
| Dazzozo / SALT team&lt;br /&gt;
| [https://citizens.salthax.org/ Install].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [http://mrnbayoh.github.io/basehaxx/ basehaxx]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.9.0-X&#039;&#039;&#039;.&lt;br /&gt;
| A gamecard or eShop-install of Pokémon Omega Ruby / Alpha Sapphire.&lt;br /&gt;
| MrNbaYoh&lt;br /&gt;
| [http://mrnbayoh.github.io/basehaxx/ install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/yellows8/stickerhax stickerhax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.6.0-X&#039;&#039;&#039;.&lt;br /&gt;
| A gamecard or eShop-install of Paper Mario: Sticker Star.&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
| [https://github.com/yellows8/stickerhax Here]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/svanheulen/genhax genhax]&lt;br /&gt;
| (New 3DS only) From &#039;&#039;&#039;9.9.0-X&#039;&#039;&#039;(JPN) or &#039;&#039;&#039;10.3.0-X&#039;&#039;&#039;(EUR/USA) up to and including &#039;&#039;&#039;11.3.0-X&#039;&#039;&#039;.&lt;br /&gt;
| A gamecard or eShop-install of Monster Hunter Generations or Monster Hunter X (without the game updates installed), and an internet connection during installation.&lt;br /&gt;
| svanheulen&lt;br /&gt;
| [https://github.com/svanheulen/genhax_installer Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/MrNbaYoh/painthax painthax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.6.0-X&#039;&#039;&#039;.&lt;br /&gt;
| An eShop-install of Pixel Paint.&lt;br /&gt;
| MrNbaYoh&lt;br /&gt;
| [https://github.com/MrNbaYoh/painthax/releases/latest install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [https://github.com/yellows8/ctpkpwn ctpkpwn_tfh]&lt;br /&gt;
| From &#039;&#039;&#039;9.9.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.3.0-X&#039;&#039;&#039;.&lt;br /&gt;
| A gamecard or eShop-install of &amp;quot;The Legend of Zelda: Tri Force Heroes&amp;quot;, and an Internet connection during installation. Unless you have &amp;quot;CFW&amp;quot;, ctr-httpwn &amp;gt;=v1.2 with the included bosshaxx on a compatible system-version is also required. If installing via ctr-httpwn, you can&#039;t do so on &amp;gt;=v11.4. Note that the exploit itself was not fixed.&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
| [https://github.com/yellows8/ctpkpwn/releases Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [https://github.com/MrNbaYoh/doodlebomb doodlebomb]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039;(?) up to and including &#039;&#039;&#039;11.4.0-X&#039;&#039;&#039;.&lt;br /&gt;
| An eShop-install of Swapdoodle.&lt;br /&gt;
| MrNbaYoh&lt;br /&gt;
| [https://mrnbayoh.github.io/doodlebomb/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: darkorange&amp;quot; | Only if installed before August 28, 2017&lt;br /&gt;
| [https://github.com/ChampionLeake/RPwnG3 RPwnG3]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039;(?) up to and including &#039;&#039;&#039;11.12.0-X&#039;&#039;&#039;.&lt;br /&gt;
| A Digital/Physical copy of &amp;quot;RPGMaker Fes Player/RPGMaker Fes&amp;quot; (USA/JPN 1.1.2 or lower ; EUR 1.1.4 or lower).&lt;br /&gt;
| [[User:ChampionLeake|ChampionLeake]]&lt;br /&gt;
| [https://github.com/ChampionLeake/RPwnG3/releases Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/luigoalma/nitpic3d nitpic3d]&lt;br /&gt;
| From &#039;&#039;&#039;9.6.0-X&#039;&#039;&#039;(?) up to and including &#039;&#039;&#039;11.13.0-X&#039;&#039;&#039;.&lt;br /&gt;
| A digital or physical of Picross 3D: Round 2&lt;br /&gt;
| Luigoalma and Kartik&lt;br /&gt;
| [https://github.com/luigoalma/nitpic3d Install]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Exploits without Homebrew Launcher==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;&amp;lt;/u&amp;gt; The following exploits can run code, but are missing a 3DSX launcher. They cannot launch any homebrew in the 3DSX format, but could still prove useful by chaining to exploits with higher privileges.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Works on latest fw&lt;br /&gt;
!  Name&lt;br /&gt;
!  Supported firmwares&lt;br /&gt;
!  Requirements&lt;br /&gt;
!  Author&lt;br /&gt;
!  Install&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lime&amp;quot; | Yes&lt;br /&gt;
| [[bannerbomb3]] (System Settings)&lt;br /&gt;
| (Old3DS (2DS) (XL) / New3DS (XL)) &#039;&#039;&#039;11.5.0&#039;&#039;&#039; to &#039;&#039;&#039;11.13.0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
(New2DS XL) &#039;&#039;&#039;(11.4.0)&#039;&#039;&#039; &#039;&#039;&#039;11.5.0&#039;&#039;&#039; to &#039;&#039;&#039;11.13.0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An exploit that uses a buffer overflow in a TWL export banner&#039;s title strings to gain rop execution.&lt;br /&gt;
|A USA, EUR, KOR, or JPN system with its movable.sed keyY extracted.&lt;br /&gt;
|[[User:zoogie|zoogie]]&lt;br /&gt;
|[[bannerbomb3|Install]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [[browserhax]] (Without the loader in the 3ds_browserhax_common repo)&lt;br /&gt;
| (Old3DS) From &#039;&#039;&#039;5.0.0-2&#039;&#039;&#039; to &#039;&#039;&#039;11.0.0-33&#039;&#039;&#039; (Pre-v5.0 is supported for some versions if you manually modify the source)&lt;br /&gt;
&lt;br /&gt;
(New3DS) From &#039;&#039;&#039;9.0.0-20&#039;&#039;&#039; to &#039;&#039;&#039;11.0.0-33&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note that the browser-version-check bypass is only usable prior to [[10.7.0-32]].&lt;br /&gt;
| An USA, EUR, or JPN system.&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
| [[browserhax|Install]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| Ninjhax (with specialized payloads)&lt;br /&gt;
| Up to &#039;&#039;&#039;9.2.0-20&#039;&#039;&#039;?&lt;br /&gt;
| &lt;br /&gt;
| smea + independent developers&lt;br /&gt;
| N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Previous Exploits==&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;&amp;lt;/u&amp;gt; These exploits &#039;&#039;&#039;do not work&#039;&#039;&#039;. They are exploits which no longer function at all, regardless of software or firmware revision.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Works on latest fw&lt;br /&gt;
! Name&lt;br /&gt;
! Supported firmwares&lt;br /&gt;
! Requirements&lt;br /&gt;
! Author&lt;br /&gt;
! Install&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [[tubehax|Tubehax]]&lt;br /&gt;
| None. &#039;&#039;&#039;Was&#039;&#039;&#039;: From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;10.1.0-X&#039;&#039;&#039;, for &#039;&#039;&#039;X&#039;&#039;&#039; up to and including 27.&lt;br /&gt;
| The YouTube application and an Internet connection. As of October 15, 2015, this is no longer usable due to an update being released which fixes the vuln used by tubehax + app update being forced (see [[YouTube|here]]).&lt;br /&gt;
| smea&lt;br /&gt;
| [http://smealum.github.io/3ds/ Install]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other Homebrew Loaders==&lt;br /&gt;
The [https://github.com/yellows8/hblauncher_loader hblauncher_loader] title can be used when running under modded-FIRM which allows running unsigned titles, to boot the *hax payloads.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/AuroraWright/Luma3DS Luma3DS], apart from providing signature patches for the installation and use of custom titles, includes the &amp;quot;Rosalina&amp;quot; system module, which among its features allows cleanly loading 3dsx applications as a native process with full ARM11 system permissions, by replacing an installed title&#039;s ExeFS and ExHeader during load time. It is currently the only option for running 3dsx applications on 11.4+ O3DSes; additionally, the *hax 2.x payload is incompatible with Rosalina and therefore so are homebrew applications requiring its target title system.&lt;br /&gt;
&lt;br /&gt;
==Sysmodule Exploits==&lt;br /&gt;
This section is for system-module exploits, which can be run from the *hax payloads.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Works on latest fw&lt;br /&gt;
! Name&lt;br /&gt;
! Supported firmwares&lt;br /&gt;
! Requirements&lt;br /&gt;
! Author&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No, still usable pre-v11.4.&lt;br /&gt;
| [https://github.com/yellows8/ctr-httpwn/releases ctr-httpwn]&lt;br /&gt;
| From &#039;&#039;&#039;9.6.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.3.0-X&#039;&#039;&#039;. This includes bosshaxx.&lt;br /&gt;
| None&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==WebKit vuln testing==&lt;br /&gt;
See [https://github.com/yellows8/3ds_browserhax_common/issues/28 here].&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=3DS_Userland_Flaws&amp;diff=21330</id>
		<title>3DS Userland Flaws</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=3DS_Userland_Flaws&amp;diff=21330"/>
		<updated>2020-09-10T00:31:11Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists vulnerabilities / exploits for 3DS applications and applets. Exploiting these initially results in ROP, from that ROP one can then for example try exploiting [[3DS_System_Flaws|system]] flaw(s).&lt;br /&gt;
&lt;br /&gt;
=Non-system applications=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Application name&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in app/system version&lt;br /&gt;
!  Last app/system version this flaw was checked for&lt;br /&gt;
!  Timeframe info related to this was added to wiki&lt;br /&gt;
!  Timeframe this vuln was discovered&lt;br /&gt;
!  Vuln discovered by&lt;br /&gt;
|-&lt;br /&gt;
| Cubic Ninja&lt;br /&gt;
| Map-data stack smash&lt;br /&gt;
| See [[Ninjhax|here]] regarding Ninjhax.&lt;br /&gt;
| None&lt;br /&gt;
| App: Initial version. System: [[10.4.0-29]].&lt;br /&gt;
| Ninjhax release&lt;br /&gt;
| July 2014&lt;br /&gt;
| [[User:smea|smea]]&lt;br /&gt;
|-&lt;br /&gt;
| The Legend of Zelda: Ocarina of Time 3D&lt;br /&gt;
| UTF-16 name string buffer overflow via unchecked u8 length field&lt;br /&gt;
| The u8 at offset 0x2C in the savefile is the character-length of the UTF-16 string at offset 0x1C. When copying this string, it&#039;s essentially a memory-copy with lenval*2, not a string-copy. This can be used to trigger buffer overflows at various locations depending on the string length.&lt;br /&gt;
* When value is &amp;gt;=0x6E it crashes when saving the saveslot, this causes a stack-smash however it normally crashes before it returns from the function which had the stack-frame overwritten.&lt;br /&gt;
* With value &amp;gt;=0x9A, it crashes via stack-smash in-game once any dialogs are opened(touching buttons on the touch-screen can trigger it too).&lt;br /&gt;
* Length value&amp;gt;=0xCD causes a crash while loading the saveslot, via a heap buffer overflow. This buf-overflow overwrites a heap memchunk following the allocated buffer. When the first 16-bits overwriting that heap memchunk is not the memchunk magic-number(0x7373), the mem-alloc code will just return a NULL ptr which later results in a crash. When the magic-number is valid, the mem-alloc code will continue to attempt to parse the memchunk, which may crash depending on the data which overwrote the memchunk. This heap code is separate from the CTRSDK heap code. Exploiting this doesn&#039;t seem to be possible: since the heap code actually verifies that the magic-number for the next/prev memchunk ptrs are correct(unlike CTRSDK), it&#039;s not possible to change those ptrs to useful arbitrary addresses outside of savedata(like with triggering a write to a c++ object ptr which later is used with a vtable func-call, this is what one would do with CTRSDK heap here).&lt;br /&gt;
&lt;br /&gt;
On March 11, 2015, an exploit using this vuln was released, that one was intended for warez/etc. The following exploit wasn&#039;t released before then mainly because doing so would (presumably) result in the vuln being fixed. The following old exploit was released on March 14, 2015: [https://github.com/yellows8/oot3dhax].&lt;br /&gt;
| None&lt;br /&gt;
| App: Initial version. System: [[10.6.0-31]].&lt;br /&gt;
| March 11, 2015&lt;br /&gt;
| Around October 22, 2012&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Super Smash Bros 3DS&lt;br /&gt;
| Buffer overflow in local-multiplayer beacon handling.&lt;br /&gt;
| See [[smashbroshax|here]].&lt;br /&gt;
| App: v1.1.3&lt;br /&gt;
| See [[smashbroshax|here]]. System: [[10.3.0-28]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| See [[smashbroshax|here]].&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Super Mystery Dungeon&lt;br /&gt;
| Heap overflow within linear memory via unchecked save file length&lt;br /&gt;
| Pokemon Super Mystery Dungeon uses zlib compression for most of its save files, possibly due to the save files being larger than its predecessor, Gates to Infinity. When a save file is being prepared to be loaded and read from, only a 0x32000 large buffer is allocated for file reading, and a 0x3e800-large buffer for decompression is also allocated before the file is read. However, the game does not limit the size of the file read to this allocation bound, allowing for the file to overflow into the linear memory heap and into the next allocation. Since Pokemon Super Mystery Dungeon stores allocation memchunks directly before the allocation, overwriting the next memchunk with a corrupted one allows for arbitrary writes of linear heap pointers when the next buffer is allocated or arbitrary writes of any pointer within writable memory when the corrupted buffer is freed.&lt;br /&gt;
| None&lt;br /&gt;
| O3DS: [[11.3.0-36]]. N3DS: [[11.4.0-37]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| April 14, 2016&lt;br /&gt;
| [[User:Shinyquagsire23|Shiny Quagsire]]&lt;br /&gt;
|-&lt;br /&gt;
| VVVVVV&lt;br /&gt;
| Buffer overflow in XML save file array parsing&lt;br /&gt;
| VVVVVV utilizes several XML files (renamed with a .vvv extension) to store level save data, stats and settings. Within these XML files are several tags containing an array of data which, when parsed, is not properly checked to be of proper length for the tag being parsed from. This allows for an overflow of 16-bit array values from the location where the array is parsed. With unlock.vvv, XML data is parsed to the stack, and with level saves the heap. This allows for the pointer where the level save worldmap tag array should be parsed into to be overwritten with a stack address, allowing for ROP from within the XML array parsing function on the next level load.&lt;br /&gt;
| App: v1.1&lt;br /&gt;
| [[10.7.0-32]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| April 25, 2016&lt;br /&gt;
| [[User:Shinyquagsire23|Shiny Quagsire]]&lt;br /&gt;
|-&lt;br /&gt;
| Citizens of Earth&lt;br /&gt;
| Save file read stack smash&lt;br /&gt;
| Citizens of Earth also uses &amp;quot;XML&amp;quot; files for saves, which are actually entirely binary data (not XML at all) with no checksums. These files are read from the filesystem on to a fixed size stack buffer which leads to an incredibly trivial stack smash. When using the autosave slot for this, the save is parsed when the user selects &amp;quot;continue&amp;quot;. When using one of the dedicated save slots (1-3), the save is parsed shortly after the company splash screens fade. Note that the save is read quite high (descending) on the stack - when exploiting this, one would likely need to move SP due to almost instantly overflowing the physical stack.&lt;br /&gt;
| None&lt;br /&gt;
| [[10.7.0-32]].&lt;br /&gt;
| Time of exploit release.&lt;br /&gt;
| May 5, 2016&lt;br /&gt;
| [[User:Dazzozo|Dazzozo]]&lt;br /&gt;
|-&lt;br /&gt;
| SmileBASIC 3.x&lt;br /&gt;
| Poor parameter validation on &amp;quot;BGSCREEN&amp;quot; command&lt;br /&gt;
| The SmileBASIC &amp;quot;BGSCREEN&amp;quot; command&#039;s second parameter is not properly validated as being within range.  As a result, one can set the screen size to an absurdly large value.  This means that the &amp;quot;BGGET&amp;quot; and &amp;quot;BGPUT&amp;quot; commands can then be used on out-of-range values to read and write a significant chunk of the interpreter&#039;s address space.&lt;br /&gt;
With a series of carefully-designed BGPUT commands, one can build a ROP chain and cause it to be executed.&lt;br /&gt;
| App: 3.3.2.&lt;br /&gt;
| System: [[11.0.0-33]].&lt;br /&gt;
| July 20, 2016&lt;br /&gt;
| Around June 26, 2016&lt;br /&gt;
| slackerSnail, 12Me12, incvoid&lt;br /&gt;
Exploited by MrNbaYoh and [[User:Plutooo|plutoo]].&lt;br /&gt;
|-&lt;br /&gt;
| SmileBASIC 3.x&lt;br /&gt;
| Subscripted TIME$/DATE$ allow write access to DATA/BSS&lt;br /&gt;
| Utf-16 characters can be assigned to subscripted TIME$/DATE$ interpreter sysvars which results in write-only access to all of DATA and some BSS in userland.&lt;br /&gt;
TIME$[0]/DATE$[0] actually point to somewhere in rodata, and an overly large subscript can be used to write well past it and into the aforementioned areas. Demo [https://github.com/zoogie/smilehax-IIe here.]&lt;br /&gt;
| App: 3.6.2 (3.6.0 latest for US/EU, JP appvers. can be downgraded)&lt;br /&gt;
| System: [[11.13.0-45]].&lt;br /&gt;
| April 2020&lt;br /&gt;
| February 2020&lt;br /&gt;
| bug publicly documented [https://translate.google.com/translate?sl=auto&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fsmilebasic.com%2Fdebug%2Farchive%2F here.]&lt;br /&gt;
Exploited by Zoogie&lt;br /&gt;
|-&lt;br /&gt;
| The Legend of Zelda: Tri Force Heroes&lt;br /&gt;
| [[3DS_System_Flaws#General.2FCTRSDK|CTRSDK]] CTPK buffer overflow combined with game&#039;s usage of SpotPass&lt;br /&gt;
| During the very first screen displayed by the game during boot(&amp;quot;Loading...&amp;quot;), just seconds after title launch, the game loads CTPK from the [[BOSS_Services|stored]] SpotPass content. Hence, this game could be exploited via the vulnerable CTRSDK CTPK code &#039;&#039;if&#039;&#039; one could get custom SpotPass data into extdata somehow(ctr-httpwn &amp;gt;=v1.2 with bosshaxx allows this).&lt;br /&gt;
&lt;br /&gt;
The code for this runs from a thread separate from the main-thread, with the stack in linearmem heap. This SpotPass handling triggers before the game ever opens the regular savedata archive. The extdata is opened at some point before this: it opens a file for checking if it exists, then immediately closes it.&lt;br /&gt;
&lt;br /&gt;
The two SpotPass URLs for this have always(?) returned HTTP 404 as of November 2016. It appears these were intended for use as textures for additional costumes(and never got used publicly), but this wasn&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
This is used by [https://github.com/yellows8/ctpkpwn ctpkpwn_tfh].&lt;br /&gt;
| None&lt;br /&gt;
| App: v2.1.0&lt;br /&gt;
| November 18, 2016&lt;br /&gt;
| November 14, 2016&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Pixel Paint&lt;br /&gt;
| Buffer overflow via unchecked extdata file length&lt;br /&gt;
| Pixel Paint loads pictures saved by the user from extdatas. The file is read to a fixed size buffer but the file length remains unchecked, so with a large enough file, one can overwrite pointers in memory and gain control of the execution flow.&lt;br /&gt;
| None&lt;br /&gt;
| App: Initial version. System: [[11.2.0-35]].&lt;br /&gt;
| December 27, 2016&lt;br /&gt;
| November 5, 2016&lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]]&lt;br /&gt;
|-&lt;br /&gt;
| Steel Diver : Sub Wars&lt;br /&gt;
| Heap overflow / arbitrary memcpy&lt;br /&gt;
| Savefile datas are stored as key/value pairs, a large enough string key makes the game overwrite a memcpy source/destination addresses and size arguments. So one can actually memcpy a rop on the stack and gain control of the execution flow.&lt;br /&gt;
| None&lt;br /&gt;
| System: [[11.2.0-35]].&lt;br /&gt;
| December 27, 2016&lt;br /&gt;
| Around July 15, 2016&lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]], Vegaroxas&lt;br /&gt;
|-&lt;br /&gt;
| 1001 Spikes&lt;br /&gt;
| Buffer overflow via unchecked array-indexes in XML savefile parsing&lt;br /&gt;
| The savefiles are stored as renamed .xml files, which contain several tags with attributes like &#039;array-index=&amp;quot;array-value&amp;quot;&#039;, where both of these are converted from ASCII strings to integers as signed-int32, and the array-value given blindly written to an array inside a structure using the (unchecked) index given. With several of these attributes, one can overwrite the stack starting from the stored lr of the function that does this parsing, and write a ROP chain there. Testing used the &amp;quot;LevelAttempts&amp;quot; tag which is the last such tag parsed in that function.&lt;br /&gt;
| None&lt;br /&gt;
| App: v1.2.0 (TMD v2096)&lt;br /&gt;
| December 27, 2016&lt;br /&gt;
| Around November 2, 2016&lt;br /&gt;
| [[User:Riley|Riley]]&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Omega Ruby/Alpha Sapphire&lt;br /&gt;
| Secret base team name heap overflow&lt;br /&gt;
| When the player wants to edit the team name, it is copied over the heap, however its length is not verified. So with a large enough team name one can overwrite some pointers and get two arbitrary jumps and then get control of the execution flow.&lt;br /&gt;
| None&lt;br /&gt;
| App: 1.4. System: [[11.2.0-35]].&lt;br /&gt;
| December 30, 2016&lt;br /&gt;
| June, 2016&lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]]&lt;br /&gt;
|-&lt;br /&gt;
| Swapdoodle&lt;br /&gt;
| Heap buffer overflow via unchecked size&lt;br /&gt;
| The letter file format used by doodlebomb is composed of multiple chunks. Each chunks is described in the header of the file where the name, size and CRC of each chunk are stored. Some chunks are meant to be headers, every header&#039;s size should be 0x80, however the length of the STAHED1 chunk remains unchecked and the game memcpy the chunk to a 0x80 byte buffer with the length provided in the file. This way one is able to overwrite some pointers and get control of the execution flow.&lt;br /&gt;
| App: &amp;gt; v1.1.1&lt;br /&gt;
| App: v1.1.1&lt;br /&gt;
| April 24, 2017&lt;br /&gt;
| February, 2017&lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]]&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Picross&lt;br /&gt;
| Arbitrary memcpy via unchecked size&lt;br /&gt;
| When reading the savefile, the game handles some lists of buffers that are copied to memory. These buffers should always be 0x14-bytes long but the game uses the size provided in the savefile to copy them. These buffers are copied in some structs and thus with a big enough length value, one can overwrite the next struct which contains a size and a destination address for a memcpy.&lt;br /&gt;
| None?&lt;br /&gt;
| App: ?&lt;br /&gt;
| May 29, 2017&lt;br /&gt;
| June, 2016&lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]]&lt;br /&gt;
|-&lt;br /&gt;
| RPG Maker Fes/Player&lt;br /&gt;
| Buffer overflow on .bss section&lt;br /&gt;
| When loading a project, the game copies multiple chunks over the BSS section. However the number of chunks to copy is not checked, thus a large amount of chunk result in a buffer overflow. There&#039;s multiple way to exploit this flaw to gain an arbitrary memcpy or an arbitrary jump.&lt;br /&gt;
| None?&lt;br /&gt;
| App: ?&lt;br /&gt;
| August 28, 2017&lt;br /&gt;
| August, 2017&lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]]&lt;br /&gt;
|-&lt;br /&gt;
| RPG Maker Fes/Player&lt;br /&gt;
| Buffer overflow via unchecked file size&lt;br /&gt;
| When loading a project, the game loads the file to a 0x200000 bytes long buffer. However the size remains unchecked, so with a big enough file one can overflow the buffer and overwrite a thread stack and then achieve ROP.&lt;br /&gt;
| None?&lt;br /&gt;
| App: ?&lt;br /&gt;
| August 29, 2017&lt;br /&gt;
| August, 2017&lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]], [[User: ChampionLeake|ChampionLeake]]&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Omega Ruby/Alpha Sapphire&lt;br /&gt;
| PSS data heap/stack overflow&lt;br /&gt;
| When launching the game, multiple chunks from the save file are parsed and copied to a large heap buffer. When parsing PSS data (acquaintances, passerby) the game copies each entry to the heap buffer, the number of entries to copy is read from the end of the multiple pss data chunks and is not checked, leading to an overflow. The &amp;quot;PSS data - friends&amp;quot; chunk is vulnerable too, but the overflow occurs on the stack and unfortunately this isn&#039;t exploitable because of a 4 bytes uncontrolled value (in each entry) that gets written on sensitive data.&lt;br /&gt;
| None&lt;br /&gt;
| App: 1.4. System: [[11.6.0]].&lt;br /&gt;
| October 1, 2017&lt;br /&gt;
| June, 2016&lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]]&lt;br /&gt;
|-&lt;br /&gt;
| RPG Maker Fes/Player&lt;br /&gt;
| OOB write&lt;br /&gt;
| When handling events in a map, the indices of &amp;quot;buttons&amp;quot; are not checked. This results in an out of bound bit write, one can thus write a rop directly on the stack (bit by bit).&lt;br /&gt;
| None?&lt;br /&gt;
| App: ?&lt;br /&gt;
| August 5, 2018&lt;br /&gt;
| &lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]]&lt;br /&gt;
|-&lt;br /&gt;
| Unholy Heights&lt;br /&gt;
| Buffer overflow via unchecked string size&lt;br /&gt;
| The game stores some utf-16 messages in the savefile. Right before the message is the length(u32) for the string, the game uses this size to memcpy the message from the savefile to the stack without checking the length. This allows one to overwrite some function addresses on the stack and form a rop chain.&lt;br /&gt;
| None&lt;br /&gt;
| App: Initial Version&lt;br /&gt;
| September 13, 2018&lt;br /&gt;
| August, 2018&lt;br /&gt;
| Kartik&lt;br /&gt;
|-&lt;br /&gt;
| Mononoke Forest&lt;br /&gt;
| String Buffer Overflow via unchecked string length&lt;br /&gt;
| The game stores plaintext profile names in the savefile. The profile names are strcpy/memcpy to different areas of the game&#039;s functions in the stack. Using a large extensive profile name, a user can overwrite some stack-registers and point to stack buffer addresses to eventually gain control of the stack to lead and form a rop-chain. &lt;br /&gt;
| None&lt;br /&gt;
| App: v1.0.0&lt;br /&gt;
| August 14, 2019&lt;br /&gt;
| February 8, 2019&lt;br /&gt;
| [[User: ChampionLeake|ChampionLeake]] and [[User: Kartik|Kartik]]&lt;br /&gt;
|-&lt;br /&gt;
| Picross 3D: Round 2&lt;br /&gt;
| Out of bounds array access allowing to point to fabricated objects and vtable&lt;br /&gt;
| Game only checks save header. With the last interacted save slot index at +0xb270 in the save data unchecked we can achieve a predictable out of bounds access, as well inserting ROP data without detecting save corruption. Game references an object from an array of 3 elements and passes it to a function that will read object pointers and hit a vtable call. With a copy save data left in memory and a properly calculated index, we can point to a fake object position in the save, vtable jump to a stack pivot and start the ROP chain.&lt;br /&gt;
| None&lt;br /&gt;
| App: Initial version&lt;br /&gt;
| September 10, 2020&lt;br /&gt;
| August 24, 2020&lt;br /&gt;
| [[User: Luigoalma|Luigoalma]] and [[User: Kartik|Kartik]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Flipnote Studio 3D==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in app/system version&lt;br /&gt;
!  Timeframe info related to this was added to wiki&lt;br /&gt;
!  Flaw discovered by&lt;br /&gt;
|-&lt;br /&gt;
| KFH frame count overflow&lt;br /&gt;
| The KFH frame count field should not be &amp;gt;= 0x3E8, but it wasn&#039;t checked and so uncontrolled data were written over pointers, causing an unexploitable crash.&lt;br /&gt;
| System: 11.6&lt;br /&gt;
| September 20, 2017&lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]]&lt;br /&gt;
|-&lt;br /&gt;
| KMI paper color overflow&lt;br /&gt;
| Paper color field (and similar color fields) in KMI chunks was not checked, a too high value caused a jump to an uncontrolled location.&lt;br /&gt;
| System: 11.6&lt;br /&gt;
| September 20, 2017&lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]]&lt;br /&gt;
|-&lt;br /&gt;
| KSN BGM data size overflow&lt;br /&gt;
| The size of the BGM data in the KSN chunk was not checked, it was used in a memcpy so with a big enough size one could overwrite a thread stack on linear mem and achieve ROP (notehax v1).&lt;br /&gt;
| System: 11.6&lt;br /&gt;
| September 20, 2017&lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]]&lt;br /&gt;
|-&lt;br /&gt;
| KMC chunk unchecked&lt;br /&gt;
| The KMC chunk was not verified at all, the CRC32 and the size were not checked. A big enough size caused an integer overflow and made the game read the file backward.&lt;br /&gt;
| System: 11.6&lt;br /&gt;
| September 20, 2017&lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]]&lt;br /&gt;
|-&lt;br /&gt;
| KMI layer size unchecked&lt;br /&gt;
| The 3 layer size fields in KMI chunks were not checked, leading to some crashes in the editor.&lt;br /&gt;
| System: 11.6&lt;br /&gt;
| September 20, 2017&lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]]&lt;br /&gt;
|-&lt;br /&gt;
| Bad &amp;quot;queue&amp;quot; implementation&lt;br /&gt;
| When a KWZ was parsed, frames were copied in a kind of queue, bounds were not checked obviously, so with the KMI layer size flaw one was able to fill completely the queue, then write past the buffer and overwrite a heap chunk header (notehax v2). This is not possible anymore, the queue cannot be filled because layer sizes are checked. Moreover each time an element is removed from the queue, the whole content is memmoved *facepalm*.&lt;br /&gt;
| System: 11.6&lt;br /&gt;
| September 20, 2017&lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Useless crashes / applications which were fuzzed==&lt;br /&gt;
* Pushmo (3DSWare), QR codes: level name is properly limited to 16 characters, game doesn&#039;t crash with a longer name. The only possible crashes are triggered by out-of-bounds array index values, these crashes are not exploitable due to the index value being 8bit.&lt;br /&gt;
&lt;br /&gt;
* [[Pyramids (3DSWare)]], QR codes: no strings. Only crashes are from out-of-bounds values (like background ID) and are not exploitable.&lt;br /&gt;
&lt;br /&gt;
* [[Pyramids 2 (3DSWare)]], QR codes: no strings. Only crashes are from out-of-bounds values (like background ID) and are not exploitable.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/yellows8/mm3d_re The Legend of Zelda: Majora&#039;s Mask 3D]&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;The Legend of Zelda: A Link Between Worlds&amp;quot; and &amp;quot;The Legend of Zelda: Tri Force Heroes&amp;quot;: these games don&#039;t crash at all when the entire save-file(minus constant header data) is overwritten with /dev/random output / 0xFF-bytes. All of the CRC32s were updated for this of course.  Note that this refers to the regular save file: Tri Force Heroes can be exploited via BOSS extdata - see above.&lt;br /&gt;
&lt;br /&gt;
* Pokemon Mystery Dungeon: Gates to Infinity has the same unchecked file bounds as Pokemon Super Mystery Dungeon, however since save compression was introduced in Pokemon Super Mystery Dungeon, it only allocates one buffer within the application heap instead of several within the linear heap, resulting in nothing to corrupt or overwrite even if the file&#039;s length is extended past its allocation.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Kid Icarus: Uprising&amp;quot;: Overwriting the entire savedata results in various crashes, nothing useful.&lt;br /&gt;
&lt;br /&gt;
* Savedata/extdata for &amp;quot;Super Smash Bros 3DS&amp;quot;: Overwriting the various files stored under savedata/extdata results in useless crashes.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;StarFox 64 3D&amp;quot;: Doesn&#039;t crash at all with the entire savedata overwritten.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Frogger 3D&amp;quot;: Overwriting a savefile with random-data results in *nothing* crashing.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Mutant Mudds&amp;quot;: Overwriting the savefile with random data results in a crash&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Worcle Worlds&amp;quot;: Overwriting the savefile with 0xFF results in a crash due to an out of bound read&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Animal Crossing: New Leaf&amp;quot;: Creating a QR code from random data results in a valid QR code and a random design. In some very rare cases(which aren&#039;t always reproducible?) a crash/etc may occur, but this isn&#039;t known to be useful.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Angry Birds Star Wars&amp;quot;: Strings in the savefile are preceded by their lengths. These strings are never stored on the stack and are memcpy&#039;d into heap memory. If the size is invalid the alloc will fail and thus the memcpy will operate on a nullptr resulting in a useless data abort.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Gem Smashers&amp;quot;: Overwriting the savefile with random bytes results in useless crashes.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Luxor:&amp;quot; Strings/plaintext in the savefile are present and these&#039;s no checks. Overwriting the whole save (excluding the header), with /dev/random cause a useless crash.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Luv Me Buddies Wonderland:&amp;quot; Doesn&#039;t crash at all with the entire savedata overwritten. Overwriting some areas, points to useless nulls&lt;br /&gt;
&lt;br /&gt;
==Crashes needing investigation==&lt;br /&gt;
* Disney Infinity crashes when all savedata overwritten with /dev/urandom. No checksums. 0xFF bytes don&#039;t cause a crash.&lt;br /&gt;
&lt;br /&gt;
* Football Up Online / Soccer Up Online and Football Up 3D / Soccer Up 3D crash when teamname(UTF-16) length = 0x48 AND 0x20 null bytes are removed after just the name or if teamname length is way longer than 0x48.&lt;br /&gt;
&lt;br /&gt;
=System applications=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in version&lt;br /&gt;
!  Last version this flaw was checked for&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
| 3DS [[System Settings]] DS profile string stack-smash&lt;br /&gt;
| Too long or corrupted strings (01Ah  2   Nickname length in characters     050h  2   Message length in characters) in the NVRAM DS user settings (System Settings-&amp;gt;Other Settings-&amp;gt;Profile-&amp;gt;Nintendo DS Profile) cause it to crash in 3DS-mode due to a stack-smash. The DSi is not vulnerable to this, DSi launcher(menu) and DSi System Settings will reset the NVRAM user-settings if the length field values are too long(same result as when the CRCs are invalid). TWL_FIRM also resets the NVRAM user-settings when the string-length(s) are too long.&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| 2012&lt;br /&gt;
| [[User:Ichfly|Ichfly]]&lt;br /&gt;
|-&lt;br /&gt;
| 3DS [[System Settings]] stack smash via title strings in [[DSiWare_Exports]]&lt;br /&gt;
| DSiWare export banners contain 16 consecutive 0x100 byte, utf-16 game title strings for different languages. Nintendo correctly limits the string&#039;s max length by placing a NULL at str[127] before it&#039;s copied to the stack. However, they didn&#039;t allocate enough space for all 128 wchars (char/wchar type confusion?), so an attacker can craft a valid full-length string that will crash the stack at about str+0xEC. ROP execution can then be obtained from this crash in DSiWare Data Management as demonstrated [https://github.com/zoogie/Bannerbomb3 here].&lt;br /&gt;
&lt;br /&gt;
Interesting note: A line feed wchar (00 0A) at any point in the string before the crash offset will prevent the crash from occurring.&lt;br /&gt;
| None&lt;br /&gt;
| [[11.13.0-45]]&lt;br /&gt;
| Dec. 2018&lt;br /&gt;
| Zoogie&lt;br /&gt;
|-&lt;br /&gt;
| 3DS SAFE_MODE [https://www.3dbrew.org/wiki/System_Settings#System_Updater System Updater] stack smash from proxy-url string&lt;br /&gt;
| During [[Recovery Mode]] and after all 3 wifi slots fail to find an access point for sysupdate, a user is permitted to access the wifi settings mode to make changes. Here, if the proxy-url field string&#039;s NULL terminator had been altered beforehand, a stack smash can occur when the user selects Proxy Settings -&amp;gt; Detailed Setup and the corrupted url string is displayed.&lt;br /&gt;
&lt;br /&gt;
This is a difficult crash to control because the url string is converted from ascii to utf-16 between the slot and stack, effectively reducing the available gadgets to 0.4% of the normal amount. It&#039;s possible to improvise an &amp;quot;escape&amp;quot; using an eoreq pc w/shift gadget to combine registers and form a jump that can access 1/2 of all available gadgets.&lt;br /&gt;
&lt;br /&gt;
Because this exploit runs *under* SAFE_MODE, it&#039;s possible to run safehax with one&#039;s choice of k11 and arm9 hax. Prerequisite: a userland exploit with cfg:s/i access to modify the wifi slot. A demonstration can be viewed [https://github.com/zoogie/unSAFE_MODE here].&lt;br /&gt;
| None&lt;br /&gt;
| [[11.13.0-45]]&lt;br /&gt;
| Jan. 2020&lt;br /&gt;
| Zoogie&lt;br /&gt;
|-&lt;br /&gt;
| [[Nintendo 3DS Sound]]&lt;br /&gt;
| When a .m4a is loaded, the song name is copied to a 256 byte buffer. When the song name begins with a Unicode BOM marker, it memcpy&#039;s the tag using the user-provided length. This gives an arbitrary write which can be used to achieve ROP.&lt;br /&gt;
| [[11.4.0-37]]&lt;br /&gt;
| [[11.4.0-37]]&lt;br /&gt;
| June/July 2016&lt;br /&gt;
| [[User:nedwill|nedwill]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=System applets=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in version&lt;br /&gt;
!  Last version this flaw was checked for&lt;br /&gt;
!  Introduced with version&lt;br /&gt;
!  Timeframe info related to this was added to wiki&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
| Webkit/web-browser bugs&lt;br /&gt;
| spider has had at least three different code-execution exploits. Majority of them are use-after-free issues. See also [[browserhax|here]].&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 2013?&lt;br /&gt;
|&lt;br /&gt;
| A lot of people.&lt;br /&gt;
|-&lt;br /&gt;
| Old3DS/New3DS [[Internet_Browser|Browser-version-check]] bypass&lt;br /&gt;
| When the browser-version-check code runs where the savedata for it was never initialized(such as when the user used the &amp;quot;Initialize savedata&amp;quot; option), it will use base_timestamp=0 instead of the timestamp loaded from savedata. This is then used with &amp;quot;if(cur_timestamp - base_timestamp &amp;gt;= &amp;lt;24h timestamp&amp;gt;){Run browser-version-check HTTPS request code}&amp;quot;.&lt;br /&gt;
Hence, if the savedata was just initialized, and if the system datetime is set to before January 2, 2000, the browser-version-check will be skipped. This includes January 1, 2000, 00:00, because that&#039;s the epoch(timestamp value 0x0) used with this timestamp.&lt;br /&gt;
&lt;br /&gt;
See [http://yls8.mtheall.com/3dsbrowserhax.php here] for bypass usage instructions.&lt;br /&gt;
&lt;br /&gt;
This was fixed with [[10.7.0-32|10.7.0-32]], see [[Internet_Browser|here]] for details.&lt;br /&gt;
| [[10.7.0-32|10.7.0-32]]&lt;br /&gt;
| &lt;br /&gt;
| [[9.9.0-26|9.9.0-26]]&lt;br /&gt;
| February 25, 2016&lt;br /&gt;
| November 2, 2015 (Exactly one week after the browser version pages were initially updated server-side)&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Skater - Bookmark OOB write&lt;br /&gt;
| Each bookmark has an id that should not exceed 0x63 (99), however ids are not checked, this results in an OOB write on the stack, but only the value 0x01 can be written.&lt;br /&gt;
| &lt;br /&gt;
| [[11.6.0-39|11.6.0-39]]&lt;br /&gt;
| &lt;br /&gt;
| May 21, 2018&lt;br /&gt;
| May 20, 2018&lt;br /&gt;
| [[User:Nba_Yoh|MrNbaYoh]]&lt;br /&gt;
|-&lt;br /&gt;
| MicroSD Management - malformed security blob causes stack buffer overflow (mhax) &lt;br /&gt;
| The MicroSD Management application&#039;s parsing of Windows NTLM security blobs in the SMB/CIFS protocol doesn&#039;t verify that the client&#039;s specified NT domain name is less than 32 UTF-16 characters.  When it&#039;s longer, a stack buffer overrun occurs, leading to a ROP chain and complete control of the mcopy application.&lt;br /&gt;
&lt;br /&gt;
The malformed security blob can be sent by an attacker within the SMB_COM_SESSION_SETUP_ANDX (0x73) packet.&lt;br /&gt;
| [[11.8.0-41|11.8.0-41]]&lt;br /&gt;
| [[11.8.0-41|11.8.0-41]]&lt;br /&gt;
| [[9.0.0-20|9.0.0-20]]&lt;br /&gt;
| August 12, 2018&lt;br /&gt;
| 2018&lt;br /&gt;
| smea&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Home Menu==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Summary&lt;br /&gt;
!  Description&lt;br /&gt;
!  Fixed in version&lt;br /&gt;
!  Last version this flaw was checked for&lt;br /&gt;
!  Introduced with version&lt;br /&gt;
!  Timeframe info related to this was added to wiki&lt;br /&gt;
!  Timeframe this was discovered&lt;br /&gt;
!  Discovered by&lt;br /&gt;
|-&lt;br /&gt;
| bossbannerhax&lt;br /&gt;
| After successfully loading [[Extended_Banner|extended-banner]] data(done when selecting an icon), Home Menu attempts to load &amp;quot;[[CBMD]]&amp;quot; data into a 0x100000-byte heap buffer from the [[BOSS_Services|stored]] SpotPass content. When successful and the magic-number is CBMD, Home Menu then decompresses the exbanner sections into another fixed-size heap buffer, without checking the outsize at all. The main CBMD CGFX code with ExeFS checks the size, but this code doesn&#039;t(however this is exbanner &amp;quot;CBMD&amp;quot;, not a &amp;quot;normal&amp;quot; CBMD).&lt;br /&gt;
&lt;br /&gt;
Used with menuhax as of v3.2.&lt;br /&gt;
| [[11.3.0-36|11.3.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| [[1.0.0-0|1.0.0-0]]&lt;br /&gt;
| November 18, 2016&lt;br /&gt;
| December 23, 2014&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| sdiconhax&lt;br /&gt;
| This is basically the same as nandiconhax, the vulnerable SD/NAND functions are &#039;&#039;identical&#039;&#039; minus the file-buffer offsets. Exploitation is different due to different heap-buffer location though. Unlike nandiconhax, the icon buffer for SD is located in linearmem(with recent Home Menu versions at least). This is used by [[menuhax]].&lt;br /&gt;
| [[11.1.0-34|11.1.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| [[4.0.0-7|4.0.0-X]]&lt;br /&gt;
| July 27, 2016&lt;br /&gt;
| October 23, 2015&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| [[System_SaveData|NAND-savedata]] Launcher.dat icons (nandiconhax)&lt;br /&gt;
| The homemenu code processing the titleid list @ launcherdat+8 copies those titleIDs to another buffer, where the offset relative to that buffer is calculated using the corresponding s8/s16 entries. Those two values are not range checked at all. Hence, one can use this to write u64(s) with arbitrary values to before/after this allocated output buffer. See [[Home_Menu|here]] regarding Launcher.dat structure.&lt;br /&gt;
&lt;br /&gt;
This can be exploited(with Launcher.dat loading at startup at least) by using a s16 for the icon entry with value 0xFFEC(-20)(and perhaps more icons with similar s16 values to write multiple u64s). The result is that the u64 value is written to outbuf-0xA0, which overwrites object+0(vtable) and object+4(doesn&#039;t matter here) for an object that gets used a bit after the vulnerable function triggers. The low 32bits of the u64 can then be set to the address of controlled memory(either outbuf in regular heap or the entire launcherdat buffer in linearmem), for use as a fake vtable in order to get control of PC. From there one can begin ROP via vtable funcptrs to do a stack-pivot(r4=objectaddr at the time the above object gets used).&lt;br /&gt;
&lt;br /&gt;
Originally this vuln could only be triggered via Launcher.dat at Home Menu startup, right after Launcher.dat gets loaded + memory gets allocated, once the file-format version code is finished running. Starting with v9.6 this can be triggered when loading layouts from SD extdata as well. The vuln itself triggers before the layout data is written to Launcher.dat, but it doesn&#039;t seem to be possible to overwrite anything which actually gets used before the function which writes Launcher.dat into the layout gets called.&lt;br /&gt;
&lt;br /&gt;
Home Menu has some sort of fail-safe system(or at least on v9.7) when Home Menu crashes due to Launcher.dat(this also applies for other things with Home Menu): after crashing once, Home Menu resets Launcher.dat to a state where it no longer crashes anymore. However, note that any exploits using this which hang/etc without crashing will still brick the system. &#039;&#039;&#039;Hence, attempting anything with this on physnand without hw-nand-access isn&#039;t really recommended.&#039;&#039;&#039;&lt;br /&gt;
| [[11.1.0-34|11.1.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| [[4.0.0-7|4.0.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| May 14, 2015&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Theme-data decompression buffer overflow ([[menuhax|themehax]])&lt;br /&gt;
| The only func-call size parameter used by the theme decompression function is one for the compressed size, none for the decompressed size. The decompressed-size value from the LZ header is used by this function to check when to stop decompressing, but this function itself has nothing to verify the decompressed_size with. The code calling this function does not check or even use the decompressed size from the header either.&lt;br /&gt;
&lt;br /&gt;
This function is separate from the rest of the Home Menu code: the function used for decompressing themes is *only* used for decompressing themes, nothing else. There&#039;s a separate decompression function in Home Menu used for decompressing everything else.&lt;br /&gt;
&lt;br /&gt;
That other decompression function in Home Menu handles decompression size properly(decompressed size check for max buffer size is done by code calling the other function, not in the function itself). Unlike the other function, the theme function supports multiple LZ algorithms, but the one which actually gets used in official themes is the same one supported by the other function anyway.&lt;br /&gt;
&lt;br /&gt;
See also [[menuhax|here]].&lt;br /&gt;
&lt;br /&gt;
With [[10.2.0-28|10.2.0-X]] Home Menu, the only code change was that the following was added right after theme-load and before actual decompression: &amp;quot;if(&amp;lt;get_lzheader_decompressed_size&amp;gt;(compressed_buf) &amp;gt; 0x150000)&amp;lt;exit&amp;gt;;&amp;quot;. This fixed the vuln.&lt;br /&gt;
| [[10.2.0-28|10.2.0-X]]&lt;br /&gt;
| [[10.2.0-28|10.2.0-X]]&lt;br /&gt;
| &amp;lt;Old3DS/New3DS version which added initial theme support&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| December 22, 2014&lt;br /&gt;
| [[User:Yellows8|Yellows8]], [[User:Myria|Myria]] independently (~spring 2015)&lt;br /&gt;
|-&lt;br /&gt;
| Shuffle body-data buffer overflow ([[menuhax|shufflehax]])&lt;br /&gt;
| See [[menuhax|here]].&lt;br /&gt;
| [[10.6.0-31|10.6.0-X]]&lt;br /&gt;
| [[10.6.0-31|10.6.0-X]]&lt;br /&gt;
| [[9.3.0-21|9.3.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| January 3, 2015&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|-&lt;br /&gt;
| Extdata file-data loading buffer overflow&lt;br /&gt;
| The extdata file-reading code allocates a fixed-size heap buffer for the expected filesize, then reads the filedata into this buffer using the actual FS filesize. Before v5.0 the filesize used here wasn&#039;t validated, hence if the filesize is larger than alloc_size a buffer overflow would occur. &#039;&#039;After&#039;&#039; doing the file-read it does validate that the actual_readsize matches the alloc_size, but at this point the buffer overflow has already occurred.&lt;br /&gt;
&lt;br /&gt;
This affected at least the following: SaveData.dat and Cache.dat.&lt;br /&gt;
&lt;br /&gt;
This can be triggered with SaveData.dat by installing a &amp;lt;v4.0 Home Menu version, with Home Menu extdata from &amp;gt;=v4.0 still on SD. When this is done with v2.0 Home Menu, a kernelpanic occurs when processing an AM command(it appears a buffer ptr which is then passed to a command was overwritten with 0x0 - of course other SaveData.dat filesizes may result in different behaviour).&lt;br /&gt;
| [[5.0.0-11|5.0.0-X]]&lt;br /&gt;
| &lt;br /&gt;
| [[2.0.0-2|2.0.0-X]]&lt;br /&gt;
| June 9, 2016&lt;br /&gt;
| June 9, 2016&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The icon data arrays used with {sd/nand}iconhax were added to SaveData.dat/Launcher.dat with [[4.0.0-7|4.0.0-X]], hence the vulnerable functions were added with that same version.&lt;br /&gt;
&lt;br /&gt;
With &amp;lt;=v4.0 the SaveData.dat buffer is located in the regular heap. It&#039;s unknown when exactly it was moved to linearmem, which is where it&#039;s located with recent versions. It&#039;s located in linearmem for KOR &amp;gt;=v9.6 for example.&lt;br /&gt;
&lt;br /&gt;
The SaveData.dat/Launcher.dat icon vulns were fixed by doing various unsigned &amp;gt;=60/&amp;gt;=360 checks on the loaded values. When these checks fail, it just skips over handling this icon entry. Hence, the original value can&#039;t be negative / out-of-bounds any more.&lt;br /&gt;
&lt;br /&gt;
==Useless crashes==&lt;br /&gt;
Old3DS system web-browser:&lt;br /&gt;
* 2^32 characters long string(&#039;&#039;finally&#039;&#039; fixed with v10.6): this is similar to the vulnerability fixed [http://git.chromium.org/gitweb/?p=external/Webkit.git;a=commitdiff;h=ec471f16fbd1f879cb631f9b022fd16acd75f4d4 here], concat-large-strings-crash2.html triggers a crash which is about the same as the one triggered by a 2^32 string. Most of the time this vulnerability will cause a memory page permissions fault, since the WebKit code attempts to copy the string text data to the output buffer located in read-only [[CRO0|CRO]] heap memory. The only difference between a crash triggered by a 2^32 string and the concat-large-strings-crash2.html crash is at the former copies the string data using the original string length(like 1 text character for &amp;quot;x&amp;quot;, 4 for &amp;quot;xxxx&amp;quot;) while the latter attempts to copy &amp;gt;12MB. In some &#039;&#039;very&#039;&#039; rare cases a thread separate from the string data-copy thread will crash, this might be exploitable. However, this is mostly useless since it rarely crashes this way.&lt;br /&gt;
&lt;br /&gt;
* Trying to directly load a page via the browser &amp;quot;URL&amp;quot; option with [https://github.com/yellows8/3ds_browserhax_common webkitdebug] setup, causes a crash to trigger in oss.cro due to an use-after-free being caught with webkitdebug. This is presumably some sort of realloc() issue in the libcurl version used by the &amp;lt;={v10.2-v10.3} browser. This happens with *every* *single* *page* one tries to load via the &amp;quot;URL&amp;quot; option, but not when loading links on the current page, hence this is probably useless. A different use-after-free with realloc triggers with loading any page at all regardless of method too(libcurl probably).&lt;br /&gt;
&lt;br /&gt;
* This WebKit build has &#039;&#039;a lot&#039;&#039; of crash-trigger bugs that only happen with [https://github.com/yellows8/3ds_browserhax_common webkitdebug] completely setup(addr accesses near 0x0), with &#039;&#039;just&#039;&#039; trying to load any page at all.&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Certificates&amp;diff=21325</id>
		<title>Certificates</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Certificates&amp;diff=21325"/>
		<updated>2020-08-06T16:34:47Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Unknown parameter has use on CTCert Certificates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
Certificates contain cryptography information for verifying Signatures. These certificates are also signed. The parent/child relationship between certificates, makes all the certificates effectively signed by &#039;Root&#039;, the public key for which is stored in NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Signature Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| X&lt;br /&gt;
| Signature with Padding (aligning next data to 0x40 bytes) &lt;br /&gt;
|-&lt;br /&gt;
| 0x4 + X&lt;br /&gt;
| 0x40&lt;br /&gt;
| Issuer&lt;br /&gt;
|-&lt;br /&gt;
| 0x44 + X&lt;br /&gt;
| 0x4&lt;br /&gt;
| Key Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 + X&lt;br /&gt;
| 0x40&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| 0x88 + X&lt;br /&gt;
| 0x4&lt;br /&gt;
| Expiration time as UNIX Timestamp, used at least for [[CTCert]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C + X&lt;br /&gt;
| *&lt;br /&gt;
| Public Key&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signature ==&lt;br /&gt;
&lt;br /&gt;
The signature method used to sign the certificate can be determined by checking the Signature Type:&lt;br /&gt;
{{Signature Types}}&lt;br /&gt;
&lt;br /&gt;
The hash for the signature is calculated over the actual certificate data(from the start of the &amp;quot;Issuer&amp;quot;, to the end of the &amp;quot;Public Key&amp;quot;, aligned to 0x40 bytes).&lt;br /&gt;
&lt;br /&gt;
== Public Key ==&lt;br /&gt;
&lt;br /&gt;
Determining the type of public key stored, is done by checking the key type:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Key Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| RSA_4096&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| RSA_2048&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 &lt;br /&gt;
| Elliptic Curve&lt;br /&gt;
|}&lt;br /&gt;
=== RSA ===&lt;br /&gt;
This contains the Public Key(i.e. Modulus &amp;amp; Public Exponent)&lt;br /&gt;
&lt;br /&gt;
==== 4096 Bit ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x200&lt;br /&gt;
| Modulus&lt;br /&gt;
|-&lt;br /&gt;
| 0x200&lt;br /&gt;
| 0x4&lt;br /&gt;
| Public Exponent&lt;br /&gt;
|-&lt;br /&gt;
| 0x204&lt;br /&gt;
| 0x34&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 2048 Bit ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x100&lt;br /&gt;
| Modulus&lt;br /&gt;
|-&lt;br /&gt;
| 0x100&lt;br /&gt;
| 0x4&lt;br /&gt;
| Public Exponent&lt;br /&gt;
|-&lt;br /&gt;
| 0x104&lt;br /&gt;
| 0x34&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ECC ===&lt;br /&gt;
This contains the ECC public key, and is as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x3C&lt;br /&gt;
| Public Key&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x3C&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CTCert&amp;diff=21324</id>
		<title>CTCert</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CTCert&amp;diff=21324"/>
		<updated>2020-08-06T16:33:48Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Found while digging the Process9 binary executable, function generating a CTCert can be found using OTP registers.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary=&lt;br /&gt;
The console-unique CTCert is used for signing [[Title Data Structure|CTX]] files, the DeviceCert used by [[eShop]], and for [[DSiWare_Exports|DSiWare]] exports. This ECDSA signature, the ECDSA private key for this cert, and the IssuerID is loaded from memory initialized by bootrom instead of NAND. This is the 3DS equivalent of the DSi TWCert.&lt;br /&gt;
&lt;br /&gt;
The CTCert is signed with ECDSA by Nintendo. CTCerts can be verified via a DER stored in NATIVE_FIRM, separate DERs are used for retail and dev/debug.&lt;br /&gt;
&lt;br /&gt;
=Structure=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x04&lt;br /&gt;
| [[Certificates|Signature]] Type, 0x010005.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 0x3C&lt;br /&gt;
| ECDSA Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x40&lt;br /&gt;
| Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x40&lt;br /&gt;
| Cert Issuer ID, for retail this is &amp;quot;Nintendo CA - G3_NintendoCTR2prod&amp;quot;, for dev &amp;quot;Nintendo CA - G3_NintendoCTR2dev&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x04&lt;br /&gt;
| Key Type&lt;br /&gt;
|-&lt;br /&gt;
| 0xC4&lt;br /&gt;
| 0x40&lt;br /&gt;
| Key ID: &amp;quot;CT&amp;lt;DeviceId&amp;gt;-&amp;lt;ConsoleType&amp;gt;&amp;quot;, where DeviceId is the hex [[PSPXI:GetDeviceId|DeviceId]], and ConsoleType is 00 for retail, 01 for dev&lt;br /&gt;
|-&lt;br /&gt;
| 0x104&lt;br /&gt;
| 0x04&lt;br /&gt;
| Expiration time as UNIX Timestamp in big endian.&lt;br /&gt;
|-&lt;br /&gt;
| 0x108&lt;br /&gt;
| 0x3C&lt;br /&gt;
| ECDSA Public Key. This is two consecutive u8 arrays (each one of length 0x1E), where the first one corresponds to the ECDSA R coordinate, and the second to ECDSA S coordinate. These are in &#039;&#039;&#039;big&#039;&#039;&#039; endian.&lt;br /&gt;
|-&lt;br /&gt;
| 0x144&lt;br /&gt;
| 0x3C&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ECDSA public key for this cert is converted from the ECDSA private key initialized by bootrom.&lt;br /&gt;
The curve used for ECDSA is sect233r1.&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=AMNet:Sign&amp;diff=21320</id>
		<title>AMNet:Sign</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=AMNet:Sign&amp;diff=21320"/>
		<updated>2020-08-04T15:14:13Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Added information about the IPC, based on the behavior found in the NIM&amp;#039;s binary executable.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Request=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code [0x08160146]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|0x3C (Signature output size)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|0x180 (Certificate output size)&lt;br /&gt;
|-&lt;br /&gt;
| 3-4&lt;br /&gt;
| u64, Title id&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|Data input size&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| (Input size &amp;lt;&amp;lt; 4) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xA&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
|Data input pointer&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| (0x3C &amp;lt;&amp;lt; 4) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xC&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
|Signature output pointer&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| (0x180 &amp;lt;&amp;lt; 4) &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xC&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
|Certificate output pointer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Response=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Index Word&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Header code&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Result code&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|AM internal error value (? Treated like an error value by NIM)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
Signs given data with ECC, returning generated signature and [[Certificates|certificate]].&lt;br /&gt;
&lt;br /&gt;
Certificate is signed with ECDSA with SHA256 and holds an ECC public key.&lt;br /&gt;
Signed with the [[AMNet:GetDeviceCert|device certificate]].&lt;br /&gt;
ECC public key on certificate appears to be randomly generated on call(?).&lt;br /&gt;
&lt;br /&gt;
Used by NIM to sign a message that&#039;s not sent over SOAP, however the device certificate, output signature and output certificate of the message are.&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=21177</id>
		<title>Config Savegame</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Config_Savegame&amp;diff=21177"/>
		<updated>2020-04-27T13:09:07Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the format of the [[Config_Services|Cfg]] [[System_SaveData|NAND]] savegame. These blocks can be accessed with the Cfg service commands.&lt;br /&gt;
&lt;br /&gt;
==Structure of save-file &amp;quot;/config&amp;quot;==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2&lt;br /&gt;
| Total entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x2&lt;br /&gt;
| Data entries offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4558&lt;br /&gt;
| Block entries&lt;br /&gt;
|-&lt;br /&gt;
| 0x455C&lt;br /&gt;
| &lt;br /&gt;
| Data for the entries&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The filesize for this /config file is 0x8000-bytes.&lt;br /&gt;
&lt;br /&gt;
==Configuration block entry ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| BlkID&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to the data for this block when size is &amp;gt;4, otherwise this word is the data for this block&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x2&lt;br /&gt;
| Size&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| 0x2&lt;br /&gt;
| Flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Configuration blocks==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  BlkID&lt;br /&gt;
!  Size&lt;br /&gt;
!  Flags&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00000000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| Config savegame version?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#RTC|RTC compensation value]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| 0x134&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#CDC|Codec]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| Leap Year Counter (read By PTM)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| User time offset (read by CECD)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#Touch|Touch calibration]] (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040001&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xC&lt;br /&gt;
| Analog Stick Calibration Param?(read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040002&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#Gyro|Gyroscope]] (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040003&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#Accel|Accelerometer]] (read by HID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040004&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#CStick|CStick calibration data]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#Screen_flicker|Screen flicker]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050001&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| Backlight controls (u8 ABL_powersave_enable, u8 brightness_level) (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050002&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#BLPWM|Backlight PWM]] (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050003&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#ABL|Power saving mode (ABL) calibration]] (read by GSP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050004&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#ABL|Power saving mode (ABL) calibration]] &lt;br /&gt;
|-&lt;br /&gt;
| 0x00050005&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xE&lt;br /&gt;
| Stereo display settings (HWCAL block 0x470)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050006&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#ULCD_delay|3D switching delay]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050007&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050008&lt;br /&gt;
| 0x10C&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#ABL_extra|Power saving mode (ABL) extra config]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050009&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| new3DS only(?) backlight control (5th byte: auto-brightness enable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060000&lt;br /&gt;
| 0x96&lt;br /&gt;
| 0xC&lt;br /&gt;
| ??? (HWCAL block 0x500)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| 0x214&lt;br /&gt;
| 0xE&lt;br /&gt;
| [[Hardware_calibration#3D_filters|3D filters]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070001&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| Sound output mode (mono=0, stereo=1, surround=2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070002&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| [[Hardware_calibration#Microphone_echo_cancel|Microphone echo cancellation params]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080001&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080002&lt;br /&gt;
| 0xC00&lt;br /&gt;
| 0xC&lt;br /&gt;
| WiFi configuration slot 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| This contains a u64 ID, used by processes using [[NWMUDS:InitializeWithVersion]]. The first word is the same as [[CfgS:GetLocalFriendCodeSeed|LocalFriendCodeSeed]], while the latter is a separate word.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xE&lt;br /&gt;
| Same content as 0x0009000? This console-unique u64 is used by [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]]. It is generated by &amp;lt;code&amp;gt;((0x3FFFFFFFF) &amp;amp; LocalFriendCodeSeed) | (random16 &amp;lt;&amp;lt; 48))&amp;lt;/code&amp;gt;, where random16 is generated by [[PSPXI:GenerateRandomBytes|GenerateRandomBytes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090002&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| The first two bytes are the same random16 used in 0x00090001. The second two bytes are zeros.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0xE&lt;br /&gt;
| Username in UTF16&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0001&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xE&lt;br /&gt;
| Birthday (u8 month, u8 day)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0002&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| Language&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| CountryInfo&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0001&lt;br /&gt;
| 0x800&lt;br /&gt;
| 0xE&lt;br /&gt;
| Country name in UTF-16, every 0x80-bytes is an entry for each language, in the order of the Language table below (not all entries are set)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0002&lt;br /&gt;
| 0x800&lt;br /&gt;
| 0xE&lt;br /&gt;
| State name in UTF-16, every 0x80-bytes is an entry for each language&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0003&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| Coordinates. A pair of s16 represents latitude and longitude, respectively. One need to multiply both value by 180/32768 to get coordinates in degrees&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0xE&lt;br /&gt;
| Restricted photo exchange data, and other info (includes a mirror of Parental Restrictions PIN/Secret Answer)&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0001&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0xE&lt;br /&gt;
| COPPACS restriction data&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0002&lt;br /&gt;
| 0x200&lt;br /&gt;
| 0xE&lt;br /&gt;
| ? Contains the email address set during Parental Restriction setup.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| u16 at offset 0x0: [[SMDH#EULA_Version|EULA Version]] which was agreed to.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xE&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0000&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| Debug configuration, read by [[NS]] on dev-units: on startup, NS does &amp;lt;code&amp;gt;svcKernelSetState(6, 1, (u64)debug_flags &amp;amp; 1); &lt;br /&gt;
svcKernelSetState(6, 2, (u64)debug_flags &amp;amp; 2);&amp;lt;/code&amp;gt; (see [[SVC#KernelSetState|here]]) where &amp;lt;code&amp;gt;debug_flags&amp;lt;/code&amp;gt; is the u32 located at offset 0xC in this struct. Then it compares the u32 from +8 in this config-block with the [[Configuration_Memory#APPMEMTYPE|APPMEMTYPE]]. When those don&#039;t match NS starts a FIRM-launch (with the same FIRM titleID as the currently running one) to boot into a FIRM with the APPMEMTYPE value from this config-block. The byte at offset 0x0 is related to the memtype as well.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0003&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0004&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| The first u8 is the System-Model [[Cfg:GetSystemModel|value]], the last 3-bytes are unknown&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0005&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| The first u8 indicates whether network updates are enabled (however, NIM only checks this flag with developer [[Configuration_Memory#ENVINFO|ENVINFO]]).&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0006&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0xC&lt;br /&gt;
| In NIM, taken as a (hopefully null terminated) string used for the &amp;quot;X-Device-Token&amp;quot; http header field for NPNS url.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100001&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0xC&lt;br /&gt;
| Stores Parental Restrictions PIN/Secret Answer and other info&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100002&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100003&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| The low u16 indicates whether the system setup is required, such as when the system is booted for the first time or after doing a [[System Settings|System Format]]: 0 = setup required, non-zero = no setup required&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| TitleID of the menu to launch, used by [[NS]] on dev units (this block can be edited on dev units with [[3DS Development Unit Software#Config|Config]])&lt;br /&gt;
|-&lt;br /&gt;
| 0x00120000&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| Volume Slider Bounds (Read by HID and PTM)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| If response is 0x100 then debug mode is enabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150001&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150002&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| In NIM, taken as an u32, using the low u16, casted to a char, and turned lower case for the making of the url for NPNS.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00160000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| Unknown, first byte is used by config service-cmd [[Config_Services|0x00070040]]. (Unknown whether the last 3-bytes are used)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xE&lt;br /&gt;
| Miiverse (OLV) access key&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180000&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0xC&lt;br /&gt;
| QTM Infrared LED related, can be 0 or 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180001&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0xC&lt;br /&gt;
| [[Hardware_calibration#QTM|QTM calibration data]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190000&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC&lt;br /&gt;
| Unknown. NFC-module checks for value1/non-value1.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The developer unit TID block only exists on developer units.&lt;br /&gt;
&lt;br /&gt;
===Stereo Display Settings===&lt;br /&gt;
All values are hard-coded in cfg module.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| 62.0f&lt;br /&gt;
|assumed pupillary distance in mm?&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| 289.0f&lt;br /&gt;
|assumed distance in mm between player&#039;s eyes and upper screen?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| 76.80f&lt;br /&gt;
|width in mm of (old) 3DS upper screen (doesn&#039;t vary for different models?)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| 46.08f&lt;br /&gt;
|height in mm of (old) 3DS upper screen (doesn&#039;t vary for different models?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| 10.0f&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| 5.0f&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| 55.58f&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 4&lt;br /&gt;
| 21.57f&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Languages===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| JP&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| EN&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| FR&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| DE&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| IT&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| ES&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| ZH&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| KO&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| NL&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| PT&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| RU&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| TW&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CountryInfo===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Byte&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| State/Province code.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Country code, same as DSi/Wii country codes. Value 0xFF is invalid.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===0x000A0000 Block===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Byte&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0-0x13&lt;br /&gt;
| UTF-16 username, with no NULL-terminator.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14-17&lt;br /&gt;
| Usually zero?&lt;br /&gt;
|-&lt;br /&gt;
| 0x18-0x1B&lt;br /&gt;
| u32 NGWord version the username was last checked with. If this value is less than the u32 stored in the NGWord CFA &amp;quot;romfs:/version.dat&amp;quot;, the system then checks the username string with the bad-word list CFA again, then updates this field with the value from the CFA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===WiFi Slot Structure===&lt;br /&gt;
&lt;br /&gt;
====Network structure====&lt;br /&gt;
This is used twice in the actual WiFi slot structure.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x1&lt;br /&gt;
| Whether the network was set or not?&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x1&lt;br /&gt;
| Whether to use this network strucutre to connect?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x1&lt;br /&gt;
| Whether this structure is the first (0) or the second (1) in the larger WiFi slot structure?&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x1&lt;br /&gt;
| Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x20&lt;br /&gt;
| SSID of the network, without a trailing nullbyte.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x1&lt;br /&gt;
| Length of the SSID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x25&lt;br /&gt;
| 0x1&lt;br /&gt;
| [[Nintendo_Zone#Beacon_payload_format|AP crypto key type]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x26&lt;br /&gt;
| 0x2&lt;br /&gt;
| Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x40&lt;br /&gt;
| Plaintext of the passphrase of the network, without a trailing nullbyte.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x20&lt;br /&gt;
| PBKDF2 of the passphrase and SSID (http://jorisvr.nl/wpapsk.html).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Actual structure====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x2&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 0x2&lt;br /&gt;
| [https://github.com/lammertb/libcrc/blob/v2.0/src/crc16.c#L43-L76 CRC-16 checksum] of the next 0x410 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x88&lt;br /&gt;
| First network structure. Only set if the network was set &amp;quot;normally&amp;quot;, or was the last to be set using WPS during the session.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x20&lt;br /&gt;
| Padding.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0x88&lt;br /&gt;
| Second network structure. Only set if the network was set using WPS, otherwise 0-filled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x134&lt;br /&gt;
| 0x20C&lt;br /&gt;
| Padding.&lt;br /&gt;
|-&lt;br /&gt;
| 0x340&lt;br /&gt;
| 0x1&lt;br /&gt;
| Whether to automatically get the IP address (use DHCP) or not, defaults to 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x341&lt;br /&gt;
| 0x1&lt;br /&gt;
| Whether to automatically get the DNS or not, defaults to 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x342&lt;br /&gt;
| 0x2&lt;br /&gt;
| Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x344&lt;br /&gt;
| 0x4&lt;br /&gt;
| IP address, to use if 0x340 is false.&lt;br /&gt;
|-&lt;br /&gt;
| 0x348&lt;br /&gt;
| 0x4&lt;br /&gt;
| IP address of the gateway, to use if 0x340 is false.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Subnetwork mask, to use if 0x340 is false.&lt;br /&gt;
|-&lt;br /&gt;
| 0x350&lt;br /&gt;
| 0x4&lt;br /&gt;
| IP address of the primary DNS , to use if 0x341 is false.&lt;br /&gt;
|-&lt;br /&gt;
| 0x354&lt;br /&gt;
| 0x4&lt;br /&gt;
| IP address of the secondary DNS, to use if 0x341 is false.&lt;br /&gt;
|-&lt;br /&gt;
| 0x358&lt;br /&gt;
| 0x4&lt;br /&gt;
| Always 0x01050000 ? Only set if the network was the last to be set during the session.&lt;br /&gt;
|-&lt;br /&gt;
| 0x35C&lt;br /&gt;
| 0x4&lt;br /&gt;
| IP address to use. Only set if the network was the last to be set during the session.&lt;br /&gt;
|-&lt;br /&gt;
| 0x360&lt;br /&gt;
| 0x6&lt;br /&gt;
| MAC address of the AP. Only set if the network was the last to be set during the session.&lt;br /&gt;
|-&lt;br /&gt;
| 0x366&lt;br /&gt;
| 0x1&lt;br /&gt;
| Channel. Only set if the network was the last to be set during the session.&lt;br /&gt;
|-&lt;br /&gt;
| 0x367&lt;br /&gt;
| 0x1&lt;br /&gt;
| Padding ? Only set if the network was the last to be set during the session.&lt;br /&gt;
|-&lt;br /&gt;
| 0x368&lt;br /&gt;
| 0x1&lt;br /&gt;
| Whether to use a proxy or not, defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x369&lt;br /&gt;
| 0x1&lt;br /&gt;
| Whether to use a basic authentication for the proxy, defaults to 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x36A&lt;br /&gt;
| 0x2&lt;br /&gt;
| Port to use for the proxy, defaults to 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x36C&lt;br /&gt;
| 0x30&lt;br /&gt;
| URL/address of the proxy, including a trailing nullbyte.&lt;br /&gt;
|-&lt;br /&gt;
| 0x39C&lt;br /&gt;
| 0x34&lt;br /&gt;
| Padding.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3D0&lt;br /&gt;
| 0x20&lt;br /&gt;
| Username to use for basic authentication, including a trailing nullbyte.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3F0&lt;br /&gt;
| 0x20&lt;br /&gt;
| Password to use for basic authentication, including a trailing nullbyte.&lt;br /&gt;
|-&lt;br /&gt;
| 0x410&lt;br /&gt;
| 0x2&lt;br /&gt;
| Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x412&lt;br /&gt;
| 0x2&lt;br /&gt;
| MTU value, defaults to 1400 and ranges between 576 and 1500, inclusive.&lt;br /&gt;
|-&lt;br /&gt;
| 0x414&lt;br /&gt;
| 0x7EC&lt;br /&gt;
| Padding.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===LCD display config===&lt;br /&gt;
There seems to be some sort of LCD display configuration stored in this cfg. When using the cfg-save from an Old3DS on a New3DS without formatting the cfg first, the bottom-screen display is somewhat off(which is fixed by formatting the cfg-save).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parental control Block 0x00100001===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Byte&lt;br /&gt;
!  Size in bytes&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0xD&lt;br /&gt;
| Unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| 0x4&lt;br /&gt;
| PIN&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| 0x20&lt;br /&gt;
| Secret answer in UTF-16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Parental Control setting block 0xC0000===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x04&lt;br /&gt;
| [[#Parental Control restriction bitmask|Parental Control restriction bitmask]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 0x04&lt;br /&gt;
| Parental Controls PIN code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Parental Control restriction bitmask====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit&lt;br /&gt;
! Restriction name&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Global Parental Controls enable&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Sharing Images/Audio/Video/Long Text Data&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Internet Browser&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| StreetPass&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Friend Registration&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| eShop&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Miiverse (view)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Miiverse (post)&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| &amp;quot;Child Online Privacy Protection&amp;quot; (see [[Cfg:GetRegionCanadaUSA|CFG:IsCoppacsSupported]])&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Ticket&amp;diff=21072</id>
		<title>Ticket</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Ticket&amp;diff=21072"/>
		<updated>2019-10-13T22:42:49Z</updated>

		<summary type="html">&lt;p&gt;Luigoalma: Content Index doesn&amp;#039;t have a fixed size.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:File formats]]&lt;br /&gt;
Tickets are a format used to store an encrypted titlekey (using 128-Bit AES-CBC). With 3DS, the Ticket format was updated (now v1) from Wii/DSi format (v0).&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
All of the data in the file is represented in Big Endian.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Offset&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0x000||Y||Signature Data&lt;br /&gt;
|-&lt;br /&gt;
| Y||0x210||Ticket Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Y denotes the total size of the &amp;quot;Signature Data&amp;quot; section and depends on the signature type.&lt;br /&gt;
&lt;br /&gt;
=== Signature Data ===&lt;br /&gt;
The signature is of the ticket header.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Offset&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0x0||0x4||Signature Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 ||X||Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 + X|| ||Padding to align the signature data to 0x40 bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Signature Type ====&lt;br /&gt;
{{Signature Types}}&lt;br /&gt;
&lt;br /&gt;
The hash for the signature is calculated over the Ticket Data.&lt;br /&gt;
&lt;br /&gt;
=== Ticket Data ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Offset&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0x0||0x40||Issuer&lt;br /&gt;
|-&lt;br /&gt;
| 0x40||0x3C||ECC PublicKey&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C||0x1||Version (For 3DS this is always 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7D||0x1||CaCrlVersion&lt;br /&gt;
|-&lt;br /&gt;
| 0x7E||0x1||SignerCrlVersion&lt;br /&gt;
|-&lt;br /&gt;
| 0x7F||0x10||TitleKey (normal-key encrypted using one of the common keyYs; see below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8F||0x1||Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x90||0x8||TicketID&lt;br /&gt;
|-&lt;br /&gt;
| 0x98||0x4||ConsoleID&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C||0x8||TitleID&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4||0x2||Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0xA6||0x2||Ticket title version&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8||0x8||Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0||0x1||License Type&lt;br /&gt;
|-&lt;br /&gt;
| 0xB1||0x1||Index to the common [[AES|keyY]] used for this ticket, usually 0x1 for retail system titles; see below.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB2||0x2A||Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0xDC||0x4||eShop Account ID?&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0||0x1||Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0xE1||0x1||Audit&lt;br /&gt;
|-&lt;br /&gt;
| 0xE2||0x42||Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x124||0x40||Limits&lt;br /&gt;
|-&lt;br /&gt;
| 0x164||X||Content Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* For v0 of the format, see [[Talk:Ticket#Ticket_Format_0|here]]&lt;br /&gt;
&lt;br /&gt;
* The Ticket Title Version is generally the same as the title version stored in the [[TMD|Title Metadata]]. Although it doesn&#039;t have to match the TMD version to be valid.&lt;br /&gt;
&lt;br /&gt;
* The titlekey is decrypted by using the [[AES]] engine with the ticket common-key keyslot. The keyY is selected through an index (ticket offset 0xB1) into a plaintext array of 6 keys (&amp;quot;common keyYs&amp;quot;) stored in the data section of Process9. AES-CBC mode is used where the IV is the big-endian titleID. Note that on a retail unit index0 is a retail keyY, while on a dev-unit index0 is the dev common-key which is a normal-key. (On retail for these keyYs, the hardware key-scrambler is used)&lt;br /&gt;
&lt;br /&gt;
* The titlekey is used to decrypt content downloaded from the CDN using 128-bit AES-CBC with the content index (as big endian u16, padded with trailing zeroes) as the IV. &lt;br /&gt;
&lt;br /&gt;
* In demos, the first u32 in the &amp;quot;Limits&amp;quot; section is 0x4, then the second u32 is the max-playcount.&lt;br /&gt;
&lt;br /&gt;
* The Content Index of a ticket has its own size defined within itself, with seemingly a minimal of 20 bytes, the second u32 in big endian defines the full value of X. &lt;br /&gt;
&lt;br /&gt;
== Certificate Chain ==&lt;br /&gt;
Tickets retrieved from CDN/SOAP have a [[Certificates|certificate]] chain appended at the end of the file. There are two certificates in this chain:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  CERTIFICATE&lt;br /&gt;
!  SIGNATURE TYPE&lt;br /&gt;
!  RETAIL CERT NAME&lt;br /&gt;
!  DEBUG CERT NAME&lt;br /&gt;
!  DESCRIPTION&lt;br /&gt;
|-&lt;br /&gt;
|  Ticket&lt;br /&gt;
|  RSA-2048&lt;br /&gt;
|  XS0000000c&lt;br /&gt;
|  XS00000009&lt;br /&gt;
|  Used to verify the Ticket signature&lt;br /&gt;
|-&lt;br /&gt;
|  CA&lt;br /&gt;
|  RSA-4096&lt;br /&gt;
|  CA00000003&lt;br /&gt;
|  CA00000004&lt;br /&gt;
|  Used to verify the Ticket Certificate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The CA certificate is issued by &#039;Root&#039;, the public key for which is stored in NATIVE_FIRM.&lt;br /&gt;
&lt;br /&gt;
== Some facts==&lt;br /&gt;
* &#039;&#039;&#039;CommonETicket&#039;&#039;&#039; (for short, &#039;&#039;&#039;cetk&#039;&#039;&#039;) is the name given to tickets for titles which are not available on the [[EShop|eShop]], like [[Title list#CTR System Titles|system titles]]. As the name suggests, they are not unique tickets, the same ticket is common to each 3ds which has installed that title. This is in contrast to tickets for eShop content, which are generated prior to initial download, and are unique to 3ds it was generated for.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CETK&#039;&#039;&#039; can be fetched through HTTP using the link to default update server, using the title&#039;s [[TMD]] URL where &amp;quot;cetk&amp;quot; is used instead of &amp;quot;tmd&amp;quot; for the URL. The 3DS NIM module retrieves system tickets via SOAP request &#039;&#039;GetSystemCommonETicket&#039;&#039; instead of directly downloading the cetks with HTTPS. The cetks are also accessible via HTTP (even though the 3DS never accesses them like that).&lt;/div&gt;</summary>
		<author><name>Luigoalma</name></author>
	</entry>
</feed>