<?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=Infinicore</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=Infinicore"/>
	<link rel="alternate" type="text/html" href="https://www.3dbrew.org/wiki/Special:Contributions/Infinicore"/>
	<updated>2026-04-24T21:45:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Services_API&amp;diff=19107</id>
		<title>Services API</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Services_API&amp;diff=19107"/>
		<updated>2016-12-31T13:25:32Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: Try guessing the naming of some ports. Sometimes 3dbrew already knew on the individual pages.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nintendo provides application developers with an API, which communicate with certain services. Services, in this sense, are [[Title_list#00040130_-_System_Modules|system processes running in the background]] which wait for incoming requests. When a process wants to communicate with a service, it first needs to get a handle to the named service, and then it can communicate with the service via interprocess communication. Each service has a name up to 8 characters, for example &amp;quot;nim:u&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Handles for services are retrieved from the [[Services|service manager port]], &amp;quot;srv:&amp;quot;. Services are an abstraction of ports, they operate the same way except regular ports can have their handles retrieved directly from a SVC.&lt;br /&gt;
&lt;br /&gt;
For a description of how commands and arguments are passed to services, see [[IPC Command Structure]].&lt;br /&gt;
&lt;br /&gt;
List of services (grouped by the process which provides them):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Old3ds&lt;br /&gt;
!  Services&lt;br /&gt;
!  Service names&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;200&amp;quot; |  Notes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[Filesystem services‎]]&lt;br /&gt;
| fs:USER, fs:LDR, fs:REG&lt;br /&gt;
| USER: normal applications and system modules, LDR: loader, REG: ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[Process Services‎]]&lt;br /&gt;
| ps:ps&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[PXI Services‎]]&lt;br /&gt;
| PxiFS0, PxiFS1, PxiFSB, PxiFSR, PxiPM, pxi:am9, pxi:dev, pxi:mc, pxi:ps9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[Application Manager Services]]&lt;br /&gt;
| am:app, am:net, am:u, am:sys, am:pipe&lt;br /&gt;
| app: am for applications, net: network installation ([[NIM_Services|nim]]), u: local installation, sys: am for system titles, pipe: not an actual port (internally used to represent the [[Application_Manager_Services#File_service|FSFile-like interface]])&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[Process Manager Services]]&lt;br /&gt;
| pm:app, pm:dbg&lt;br /&gt;
| app: launching titles, dbg: launching titles with debugging enabled&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[NIM Services]]&lt;br /&gt;
| nim:aoc, nim:ndm, nim:s, nim:u&lt;br /&gt;
| aoc: DLC, ndm: for [[NDM Services|ndm]], s: for eShop, u: for updater&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[Config Services]]&lt;br /&gt;
| cfg:u, cfg:s, cfg:i, cfg:nor&lt;br /&gt;
| u: for user, s: for system, i: for initialization/formatting, nor: accesses wifi SPI flash&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[NS|NS and APT Services]]&lt;br /&gt;
| ns:s, ns:p, ns:c, APT:A, APT:S, APT:U&lt;br /&gt;
| ns:s: for system, ns:p: power (shutdown/reboot), ns:c: ?, APT:A: application, APT:S: system, APT:U: user&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[RO Services]]&lt;br /&gt;
| ldr:ro&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[NDM Services]]&lt;br /&gt;
| ndm:u&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[CSND Services]]&lt;br /&gt;
| csnd:SND&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[Camera Services]]&lt;br /&gt;
| cam:u, y2r:u, cam:s, cam:c, cam:q (New3DS only)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[Codec Services]]&lt;br /&gt;
| cdc:HID, cdc:MIC, cdc:CSN, cdc:DSP, cdc:LGY, cdc:CHK&lt;br /&gt;
| HID: human interface device, MIC: microphone, CSN: for [[CSND_Services|csnd]]?, DSP: for [[DSP_Services|dsp]]?, LGY: legacy (some kind of backwards compat?), CHK: ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[DLP Services]]&lt;br /&gt;
| dlp:CLNT, dlp:FKCL, dlp:SRVR&lt;br /&gt;
| CLNT: client, FKCL: fake client, SRVR: server&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[DSP Services]]&lt;br /&gt;
| dsp::DSP&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[GSP Services]]&lt;br /&gt;
| gsp::Lcd, gsp::Gpu&lt;br /&gt;
| Lcd: LCD control, Gpu: GPU control&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[BOSS Services]]&lt;br /&gt;
| boss:U, boss:P, boss:M&lt;br /&gt;
| U: user, P: privileged, M: for [[NDM Services|ndm]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[CECD Services]]&lt;br /&gt;
| cecd:u, cecd:s, cecd:ndm&lt;br /&gt;
| u: user, s: system, ndm: for [[NDM Services|ndm]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[IR Services]]&lt;br /&gt;
| ir:u, ir:USER, ir:rst&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[I2C Services]]&lt;br /&gt;
| i2c::MCU, i2c::CAM, i2c::LCD, i2c::DEB, i2c::HID, i2c::IR, i2c::EEP, i2c::NFC, i2c::QTM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[GPIO Services]]&lt;br /&gt;
| gpio:CDC, gpio:MCU, gpio:HID, gpio:NWM, gpio:IR, gpio:NFC, gpio:QTM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[HID Services]]&lt;br /&gt;
| hid:NFC, hid:QTM, hid:SPVR, hid:USER &lt;br /&gt;
| NFC: near-field communication (amiibo), QTM: head tracking device (related to [[QTM_Services|QTM Services]])?, SPVR: system privileged?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[PTM Services]]&lt;br /&gt;
| ptm:gets, ptm:play, ptm:s, ptm:sets, ptm:sysm, ptm:u&lt;br /&gt;
| gets: get system time, play: play history, s: system, sets: set system time, sysm: system menu (homemenu/testmenu), u: user&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[NWM Services]]&lt;br /&gt;
| nwm::CEC, nwm::EXT, nwm::INF, nwm::SAP, nwm::SOC, nwm::TST, nwm::UDS&lt;br /&gt;
| CEC: streetpass, EXT: ?, INF: infrastructure, SAP: ?, SOC: socket, UDS: local WLAN, TST: ?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[HTTP Services]]&lt;br /&gt;
| http:C&lt;br /&gt;
| C: connection&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[SSL Services]]&lt;br /&gt;
| ssl:C&lt;br /&gt;
| C: connection&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[Socket Services]]&lt;br /&gt;
| soc:P, soc:U&lt;br /&gt;
| P: privileged, U: user&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[AC Services]]&lt;br /&gt;
| ac:i, ac:u&lt;br /&gt;
| i: internal, u: user&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[Friend Services]]&lt;br /&gt;
| frd:a, frd:n, frd:u&lt;br /&gt;
| a: admin, n: for [[NDM Services|ndm]], u: user&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[News Services]]&lt;br /&gt;
| news:s, news:u&lt;br /&gt;
| s: system, u:user&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[PDN Services]]&lt;br /&gt;
| pdn:s, pdn:d, pdn:i, pdn:g, pdn:c&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[SPI Services]]&lt;br /&gt;
| SPI::NOR, SPI::CD2, SPI::CS2, SPI::CS3, SPI::DEF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[Loader Services]]&lt;br /&gt;
| Loader&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[MCU Services]]&lt;br /&gt;
| mcu::CAM, mcu::GPU, mcu::HID, mcu::RTC, mcu::SND, mcu::NWM, mcu::HWC, mcu::PLS, mcu::CDC&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[MIC Services]]&lt;br /&gt;
| mic:u&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[ACT Services]]&lt;br /&gt;
| act:a, act:u&lt;br /&gt;
| a: admin, u: user&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: green&amp;quot; | Yes&lt;br /&gt;
| [[NFC Services]]&lt;br /&gt;
| nfc:dev, nfc:m, nfc:p, nfc:r, nfc:s, nfc:u&lt;br /&gt;
| dev: developer, m: ? p: passthrough?, r: raw?, s: system, u: user&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[MVD Services]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: red&amp;quot; | No&lt;br /&gt;
| [[QTM Services]]&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
List of PXI services:&lt;br /&gt;
* [[Filesystem services PXI]]&lt;br /&gt;
* [[Process Services PXI]]&lt;br /&gt;
* [[Application Manager Services PXI]]&lt;br /&gt;
* [[Process Manager Services PXI]]&lt;br /&gt;
* [[Development Services PXI]]&lt;br /&gt;
* [[Gamecard Services PXI]]&lt;br /&gt;
* [[Legacy FIRM PXI]] (TWL_FIRM/AGB_FIRM)&lt;br /&gt;
&lt;br /&gt;
List of ports:&lt;br /&gt;
* [[ErrDisp]]&lt;br /&gt;
* [[Services]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[Error codes]].&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Bootloader&amp;diff=18029</id>
		<title>Bootloader</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Bootloader&amp;diff=18029"/>
		<updated>2016-09-05T12:38:14Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: NTR cart read&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The bootloader is the binary code stored in the ARM9 and ARM11 boot ROMs and hence is ran when the 3DS is powered on. It&#039;s purpose is initializing hardware and loading the [[FIRM|system firmware]] from the internal [[Flash_Filesystem|NAND memory]].&lt;br /&gt;
&lt;br /&gt;
Besides NATIVE_FIRM, the bootloader is also capable of booting other firmwares (such as TWL_FIRM and AGB_FIRM). However, this will result either in a japanese error-screen or a system shutdown, directly after FIRM-Launching.&lt;br /&gt;
&lt;br /&gt;
== Boot ROM ==&lt;br /&gt;
Upon boot, parts of the ARM9 and ARM11 boot ROMs are protected by writing to [[CONFIG#CFG_SYSPROT9|CFG_SYSPROT9]] and [[CONFIG#CFG_SYSPROT11|CFG_SYSPROT11]], respectively. The non-protected areas of the ARM9 and ARM11 boot ROMs are identical for launch-day regular Old3DS, 2DS, and regular New3DS.&lt;br /&gt;
&lt;br /&gt;
== Boot Procedure ==&lt;br /&gt;
&lt;br /&gt;
* 0 seconds - unit is powered on. The ARM9 and ARM11 [[Memory_layout|bootroms]] begin execution.&lt;br /&gt;
&lt;br /&gt;
* 2 seconds - ARM9 bootrom attempts to initialize the NAND.&lt;br /&gt;
**If the NAND is successfully initialized:&lt;br /&gt;
***the ARM9 bootrom loads the [[FIRM|firmware]] stored in the NAND [[FIRM]] partition which handles booting the rest of the system (if verification for NAND firm0 fails, the ARM9 bootrom will attempt to use firm1 instead). If the NCSD header is missing, an attempt to read a certain NTR cartridge is made.&lt;br /&gt;
***The ARM11 kernel loaded from FIRM then launches the [[NCCH#CXI|CXI]] ARM11 system modules loaded from FIRM (i.e. sm, fs, pm, loader, and pxi). (Note that the ARM11 kernel does not handle any encryption/RSA verification, this is handled by the [[FIRM|ARM9]].)&lt;br /&gt;
**If the NAND cannot be initialized (i.e. the NAND chip is not connected/damaged/etc), a [[Bootloader#Error_Codes|blue error screen]] appears.&lt;br /&gt;
&lt;br /&gt;
* 3 seconds - all essential hardware is active.&lt;br /&gt;
**The [[Process_Manager_Services|PM]] module launches [[NS]]&lt;br /&gt;
**If [[Home_Menu#Auto-Boot_Function|auto-booting]] is needed, NS will [[NS#Auto-boot|auto-boot]] titles.&lt;br /&gt;
**Otherwise, NS will instead launch [[ErrDisp]] and the [[Configuration Memory#ACTIVEMENUTID|current active menu]] via the PM module. For retail units, this menu is usually the [[Home Menu]]. Note that the PM module first launches the module dependencies when launching a process, prior to actually launching the process.&lt;br /&gt;
**The further Home Menu startup process is described [[Home_Menu#Home_Menu_startup|here]].&lt;br /&gt;
&lt;br /&gt;
* 4 seconds - the LCD screens are initialized.&lt;br /&gt;
&lt;br /&gt;
* 7 seconds - [[Home Menu]] is fully initialized/loaded.&lt;br /&gt;
&lt;br /&gt;
== NAND Reads during Boot ==&lt;br /&gt;
During a successful boot on 6.x, the bootloader (and firm) reads the following sectors from NAND (in this order):&lt;br /&gt;
 00000000 (NCSD Partition Table)&lt;br /&gt;
 &lt;br /&gt;
 Only verify &#039;FIRM&#039; magic? (A second Header-read will be attempted even if everything except the magic is 0xFF...)&lt;br /&gt;
 0B130000 (FIRM Partition)&lt;br /&gt;
 0B530000 (Secondary FIRM Partition)&lt;br /&gt;
 &lt;br /&gt;
 Verify RSA signature and parse Header:&lt;br /&gt;
 0B130000 (FIRM: Header)&lt;br /&gt;
 0B130200 (FIRM: Section 1)&lt;br /&gt;
 0B163E00 (FIRM: Section 2)&lt;br /&gt;
 0B193E00 (FIRM: Section 3)&lt;br /&gt;
 &lt;br /&gt;
 00013000 .. Below is probably NATIVE_FIRM booting ..&lt;br /&gt;
 00014000&lt;br /&gt;
 00015000&lt;br /&gt;
 00016000&lt;br /&gt;
 00017000&lt;br /&gt;
 &lt;br /&gt;
 09011A00&lt;br /&gt;
 09011C00&lt;br /&gt;
 09012000&lt;br /&gt;
 09012400&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
== Error Codes ==&lt;br /&gt;
When the 3DS does not find the NAND chip, the following error is displayed:&lt;br /&gt;
&lt;br /&gt;
[[Image:CTR_Bootrom_Error.jpg|240px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Error&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;00F800FE 00000000 00000000 00000200 00000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Error when having SD-card reader connected to NAND during boot.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;00F800FE 00000000 00000000 00000400 00000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| NAND not found error (?)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;00F800FE FFFFFFFF FFFFFFFF 00000080 00800000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| NAND error when DAT1 was used as DAT0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;00F800FE FFFFFFFF FFFFFFFF 00000005 00800000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| NAND error when DAT2 was used as DAT0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;00F800FE FFFFFFFF FFFFFFFF 00000005 00000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| NAND error when DAT3 was used as DAT0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;00F800FF F8F8FFFF FFFFFFFF 00000000 00000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Both the firm0 and firm1 partitions are corrupt (failed signature checks).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;00F800EE FFFFFFFF FFFFFFFF 00000000 00000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| [[NCSD]] header in sector 0 is corrupt (failed signature check).&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Bootroms&amp;diff=18028</id>
		<title>Bootroms</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Bootroms&amp;diff=18028"/>
		<updated>2016-09-05T12:36:15Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: Redirected page to Bootloader&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Bootloader]]&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Bootrom&amp;diff=18027</id>
		<title>Bootrom</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Bootrom&amp;diff=18027"/>
		<updated>2016-09-05T12:36:00Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: Redirected page to Bootloader&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Bootloader]]&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Hardware&amp;diff=17817</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Hardware&amp;diff=17817"/>
		<updated>2016-07-26T15:08:52Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: &amp;#039;&amp;#039;Dazzozo confirmed.&amp;#039;&amp;#039; Undo revision 17816 by Neobrain (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists and describes the hardware found inside the Nintendo 3DS. Many of these parts are custom made and are expanded upon here or in other pages.&lt;br /&gt;
&lt;br /&gt;
== Common hardware ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ARM11 Processor Core || Old3DS: [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0360f/index.html ARM11 2x MPCore &amp;amp; 2x VFPv2 Co-Processor] 268MHz(~268123480 Hz).&lt;br /&gt;
&lt;br /&gt;
New3DS: 4x MPCore, 4x VFPv2, able to run up to 804MHz (see below). It also has an optional 2MB L2 cache.&lt;br /&gt;
|-&lt;br /&gt;
| ARM9 Processor Core || [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0201d/index.html ARM946] 134MHz(~134058675 Hz),&lt;br /&gt;
|-&lt;br /&gt;
| GPU || [http://en.wikipedia.org/wiki/PICA200 DMP PICA] 268MHz,&lt;br /&gt;
|-&lt;br /&gt;
| VRAM || 6 MB within SoC.&lt;br /&gt;
|-&lt;br /&gt;
| Top screen || 800x240, with only 400 usable pixels per eye per line.&lt;br /&gt;
|-&lt;br /&gt;
| Bottom screen || 320x240, with resistive touch overlay.&lt;br /&gt;
|-&lt;br /&gt;
| DSP || [https://twitter.com/CEVADSP/status/177172880918986752 CEVA TeakLite]. 134Mhz. 24ch 32728Hz sampling rates.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above clock-rates were calculated by calling svcGetSystemTick in sets of 5(call it, execute svcSleepThread for 1s, then call it again), then the average of those were calculated. The clock-rate listed above applies for *all* 4 New3DS MPCores. This is referring to the &amp;quot;~268123480 Hz&amp;quot; clock-rate.&lt;br /&gt;
&lt;br /&gt;
New3DS exclusives are able to clock the CPU at 804MHz, but this appears to be limited to the currently running application/app cores. Timed by running svcGetSystemTick on either side of a long idle loop to stay in the current process context. svcSleepThread + svcGetSystemTick implies a tick counter running at 268MHz in this mode.&lt;br /&gt;
&lt;br /&gt;
On New3DS: when Home Menu is active, the system runs at 804MHz. For everything else, it&#039;s 268MHz, except when the app(let) has the required flag set. See [[NCCH/Extended_Header|here]] and [[PDN_Registers|here]] for details, regarding clock-rate and cache.&lt;br /&gt;
&lt;br /&gt;
For New3DS-only there are multiple clock-rate multiplier values available in [[PDN_Registers|hardware]], but since the relevant code is only implemented in the New3DS ARM11-kernel, the only non-normal clock-rate available with official kernel code is 3x.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! 3DS !! 3DSXL !! 2DS !! N3DS !! N3DSXL&lt;br /&gt;
|-&lt;br /&gt;
| SoC || CPU CTR (1048 0H)&lt;br /&gt;
CPU CTR (1214 32)&lt;br /&gt;
|| CPU CTR A (1226 60)&lt;br /&gt;
CPU CTR (1037 21)&lt;br /&gt;
|| CPU CTR B (??) || CPU LGR A (1444 86) || CPU LGR A (1446 17)&lt;br /&gt;
|-&lt;br /&gt;
| FCRAM || [http://www.fujitsu.com/downloads/MICRO/fma/pdf/MB81EDS516545_e511463.pdf 2x64MB Fujitsu MB82M8080-07L] || Fujitsu MB82DBS16641 || Fujitsu MB82DBS1664 || ?? || Fujitsu MB82MK9A9A&lt;br /&gt;
|-&lt;br /&gt;
| Top Screen ||  3.53 in, 3D || 4.88 in, 3D || 3.53 in(?) cropped from a single panel ||  3.88 in, 3D || 4.88 in, 3D&lt;br /&gt;
|-&lt;br /&gt;
| Bottom Screen ||  3.00 in || 4.18 in || 3.00 in(?) cropped from a single panel || 3.33 in || 4.18 in&lt;br /&gt;
|-&lt;br /&gt;
| Storage ||colspan=&amp;quot;3&amp;quot;| Toshiba THGBM2G3P1FBAI8 1GB ||colspan=&amp;quot;2&amp;quot;| Samsung KLM4G1YEQC 4GB (in 1.3GiB SLC mode)&lt;br /&gt;
Toshiba THGBMBG4P1KBAIT 2GB (MLC, approx. 1.8GiB usable)&lt;br /&gt;
|-&lt;br /&gt;
| Audio Codec || TI PAIC3010B 0AA37DW || ?? || ?? || TI AIC3010B 39C4ETW  || TI AIC3010D 48C01JW&lt;br /&gt;
|-&lt;br /&gt;
| Gyroscope || [http://dl-web.dropbox.com/u/20520664/references/PS-ITG-3200-00-01.4.pdf Invensense ITG-3270 MEMS Gyroscope] || ?? || ?? || ?? || ??&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || ST Micro 2048 33DH X1MAQ Accelerometer Model LIS331DH || ?? || ?? || ?? || ??&lt;br /&gt;
|-&lt;br /&gt;
| Wifi || Atheros AR6014 || ?? || ?? || ?? || Atheros AR6014G-AL1C&lt;br /&gt;
|-&lt;br /&gt;
| Infrared IC || NXP S750 0803 TSD031C || ?? || ?? || ?? || NXP S750 1603 TSD438C&lt;br /&gt;
|-&lt;br /&gt;
| Custom Microcontroller || Renesas UC CTR || ?? || Renesas UC CTR 324KM47 KG10  || Renesas UC KTR || Renesas UC KTR 442KM13 TK14&lt;br /&gt;
|-&lt;br /&gt;
| PMIC? || TI 93045A4 OAAH86W || ?? || ?? || TI 93045A4 38A6TYW G2 || TI 93045A4 49AF3NW G2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* [11] Official Documentation&lt;br /&gt;
&lt;br /&gt;
* [5],[10] According to iFixit.com ([http://www.ifixit.com/Teardown/Nintendo-3DS-Teardown/5029/1#s22696 source]):&lt;br /&gt;
&lt;br /&gt;
* Datasheet for memory is for a chip in the same series, it has less memory than the one inside the 3DS (128mbits vs 512mbits).&lt;br /&gt;
&lt;br /&gt;
* There is a trove of data on the FCC website at [https://fjallfoss.fcc.gov/oetcf/eas/reports/ViewExhibitReport.cfm?mode=Exhibits&amp;amp;RequestTimeout=500&amp;amp;calledFromFrame=N&amp;amp;application_id=462292&amp;amp;fcc_id=%27EW4DWMW028%27].&lt;br /&gt;
&lt;br /&gt;
* [12] This IC is somewhat similar to [http://www.alldatasheet.net/datasheet-pdf/pdf/347838/NXP/SC16IS750IBS.html this].&lt;br /&gt;
&lt;br /&gt;
== FCRAM ==&lt;br /&gt;
&lt;br /&gt;
There is one FCRAM (Fast Cycle RAM) IC in the 3DS, produced by Fujitsu and branded as MB82M8080-07L. The Fujitsu MB82M8080-07L chip internally contains 2 dies, where each die is branded MB81EDS516545 and MB82DBS08645.&lt;br /&gt;
&lt;br /&gt;
The MB81EDS516545 die is a CMOS Fast Cycle Random Access Memory (FCRAM) with Low Power Double Data Rate (LPDDR) SDRAM Interface containing 512MBit storage accessible in a 64-bit format. The MB81EDS516545 is suited for consumer applications requiring high data bandwidth with low power consumption.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SoC ==&lt;br /&gt;
&lt;br /&gt;
The 3DS has much of it&#039;s internals housed in a SoC (System on Chip) just like it&#039;s predecessors. This is done to reduce build costs, cut down on power consumption, as well as make the PCB layout less complex and make the system harder to tamper with. The SoC, branded as the Nintendo 1048 0H, contains the CPU, GPU, DSP and VRAM.&lt;br /&gt;
&lt;br /&gt;
According to official documents, the CPU used is a dual-core ARM11 CPU, clocked at 268MHz. One core is dedicated to system software, while the other is used for application programming, each known as the syscore and appcore, respectively.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GPU ==&lt;br /&gt;
&lt;br /&gt;
Designed by Digital Media Professionals Inc. (DMP) and codenamed PICA200, 268Mhz.&lt;br /&gt;
&lt;br /&gt;
Block diagram of an ULTRAY2000 based architecture PICA200:&lt;br /&gt;
&lt;br /&gt;
[[File:Pica200BlockDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
PICA200 is compatible with OpenGL ES 1.1. It furthermore provides unique functionality for:&lt;br /&gt;
* Per-fragment lighting (&amp;quot;Lighting Maestro&amp;quot;)&lt;br /&gt;
* Hard- and soft-shadowing (&amp;quot;Shadow Maestro&amp;quot;)&lt;br /&gt;
* Polygon subdivision (&amp;quot;Figure Maestro&amp;quot;)&lt;br /&gt;
* Bump mapping and procedural textures (&amp;quot;Mapping Maestro&amp;quot;)&lt;br /&gt;
* Rendering of gaseous objects (&amp;quot;Particle Maestro&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Some parts of the extended functionality are provided in hardware by an extended geometry pipeline. Most importantly, PICA200 has three programmable vertex processors. There is furthermore a unit called [[GPU/Primitive_Engine|Primitive Engine]], which is a geometry shader unit (using the same instruction set as vertex shaders) with support for variable-size primitives. The Primitive Engine functionality may be disabled, and the geometry shader unit then acts as a fourth vertex processor. See [[Shader_Instruction_Set]] for more information on the shader instruction set.&lt;br /&gt;
&lt;br /&gt;
[[GPU/Fragment Lighting|Fragment lighting]] is implemented as an optional pipeline step during pixel processing. It&#039;s implemented by having the vertex shader output an additional attribute describing the transformation (represented by a quaternion) to surface-local space. This per-vertex quaternion can then be interpolated across screen space to calculate dot products relevant for lighting (e.g. light vector dot normal vector). To provide support for advanced lighting models, these dot products are used as indices into programmable lookup tables. With this setup, PICA200 in particular supports the shading models Blinn-Phong, Cook-Terrance, Ward, and microfacet-based BRDF-models.&lt;br /&gt;
&lt;br /&gt;
PICA200 supports four texture units, the fourth of which is used exclusively for [[GPU/Procedural Texture Generation|procedural texture generation]].&lt;br /&gt;
&lt;br /&gt;
== SDIO controller ==&lt;br /&gt;
&lt;br /&gt;
Nintendo recommends SD cards up to 32 GB however the internal SDIO controller seems to support SD cards up to 2.19 Terabyte (32-bit sector number). It&#039;s unknown if it really can handle that much. 128 GB was tested and works fine however it causes a major slowdown of the system especially at boot.&lt;br /&gt;
&lt;br /&gt;
== MCU ==&lt;br /&gt;
&lt;br /&gt;
The MCU uses the RL78 ISA.&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
=== Front ===&lt;br /&gt;
&lt;br /&gt;
[[Image:CTR_Front.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
[http://guide-images.ifixit.net/igi/ishJaSCOwLkvbLYK High Resolution]&lt;br /&gt;
&lt;br /&gt;
=== Back ===&lt;br /&gt;
&lt;br /&gt;
[[Image:CTR_Back.jpg]]&lt;br /&gt;
&lt;br /&gt;
[http://guide-images.ifixit.net/igi/n1CKAdbPrHyNPNuW High Resolution]&lt;br /&gt;
&lt;br /&gt;
=== NAND pinout ===&lt;br /&gt;
&lt;br /&gt;
NAND dumping has been successful, but the image is encrypted.&lt;br /&gt;
&lt;br /&gt;
==== Normal model ====&lt;br /&gt;
&lt;br /&gt;
[[Image:CTR_NAND_pinout.png]]&lt;br /&gt;
&lt;br /&gt;
==== XL model ====&lt;br /&gt;
&lt;br /&gt;
[[Image:CTR_NAND_pinout_XL.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
==== 2DS ====&lt;br /&gt;
&lt;br /&gt;
[[Image:2DSeMMC.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
==== New 3DS ====&lt;br /&gt;
&lt;br /&gt;
[[Image:N3DSeMMC.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== New 3DS XL ====&lt;br /&gt;
&lt;br /&gt;
[[Image:N3DSXLeMMC.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== WiFi dongle pinout ===&lt;br /&gt;
[[Image:CTR_WiFiDongle_pinout.png|600px]]&lt;br /&gt;
&lt;br /&gt;
SDIO interface is colored red: &lt;br /&gt;
* CLK&lt;br /&gt;
* CMD&lt;br /&gt;
* D0, D1, D2, D3&lt;br /&gt;
&lt;br /&gt;
This is the interface for the &#039;NEW&#039; WiFi module (based on Atheros AR6002) first included in DSi.&lt;br /&gt;
&lt;br /&gt;
The proprietary and by now ancient DS-mode WiFi is colored yellow, pins are unknown.&lt;br /&gt;
&lt;br /&gt;
I2C eeprom is colored blue:&lt;br /&gt;
* SCL&lt;br /&gt;
* SDA&lt;br /&gt;
&lt;br /&gt;
SPI Flash is colored purple:&lt;br /&gt;
* CLK&lt;br /&gt;
* CS#&lt;br /&gt;
* SI&lt;br /&gt;
* SO&lt;br /&gt;
* WP#&lt;br /&gt;
* NC&lt;br /&gt;
&lt;br /&gt;
=== Auxiliary Microcontroller ===&lt;br /&gt;
[[Image:CTR_UC.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Monitors HOME button, WiFi switch, 3D slider, volume control slider.&lt;br /&gt;
Controls LEDs, various power supplies.&lt;br /&gt;
&lt;br /&gt;
Devices attached to I2C bus:&lt;br /&gt;
* UC (master?)&lt;br /&gt;
* Accelerometer (slave address 0x18)&lt;br /&gt;
* SoC (master? slave?)&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Hardware&amp;diff=17815</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Hardware&amp;diff=17815"/>
		<updated>2016-07-26T15:00:41Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: Add MCU ISA.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists and describes the hardware found inside the Nintendo 3DS. Many of these parts are custom made and are expanded upon here or in other pages.&lt;br /&gt;
&lt;br /&gt;
== Common hardware ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ARM11 Processor Core || Old3DS: [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0360f/index.html ARM11 2x MPCore &amp;amp; 2x VFPv2 Co-Processor] 268MHz(~268123480 Hz).&lt;br /&gt;
&lt;br /&gt;
New3DS: 4x MPCore, 4x VFPv2, able to run up to 804MHz (see below). It also has an optional 2MB L2 cache.&lt;br /&gt;
|-&lt;br /&gt;
| ARM9 Processor Core || [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0201d/index.html ARM946] 134MHz(~134058675 Hz),&lt;br /&gt;
|-&lt;br /&gt;
| GPU || [http://en.wikipedia.org/wiki/PICA200 DMP PICA] 268MHz,&lt;br /&gt;
|-&lt;br /&gt;
| VRAM || 6 MB within SoC.&lt;br /&gt;
|-&lt;br /&gt;
| Top screen || 800x240, with only 400 usable pixels per eye per line.&lt;br /&gt;
|-&lt;br /&gt;
| Bottom screen || 320x240, with resistive touch overlay.&lt;br /&gt;
|-&lt;br /&gt;
| DSP || [https://twitter.com/CEVADSP/status/177172880918986752 CEVA TeakLite]. 134Mhz. 24ch 32728Hz sampling rates.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above clock-rates were calculated by calling svcGetSystemTick in sets of 5(call it, execute svcSleepThread for 1s, then call it again), then the average of those were calculated. The clock-rate listed above applies for *all* 4 New3DS MPCores. This is referring to the &amp;quot;~268123480 Hz&amp;quot; clock-rate.&lt;br /&gt;
&lt;br /&gt;
New3DS exclusives are able to clock the CPU at 804MHz, but this appears to be limited to the currently running application/app cores. Timed by running svcGetSystemTick on either side of a long idle loop to stay in the current process context. svcSleepThread + svcGetSystemTick implies a tick counter running at 268MHz in this mode.&lt;br /&gt;
&lt;br /&gt;
On New3DS: when Home Menu is active, the system runs at 804MHz. For everything else, it&#039;s 268MHz, except when the app(let) has the required flag set. See [[NCCH/Extended_Header|here]] and [[PDN_Registers|here]] for details, regarding clock-rate and cache.&lt;br /&gt;
&lt;br /&gt;
For New3DS-only there are multiple clock-rate multiplier values available in [[PDN_Registers|hardware]], but since the relevant code is only implemented in the New3DS ARM11-kernel, the only non-normal clock-rate available with official kernel code is 3x.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! 3DS !! 3DSXL !! 2DS !! N3DS !! N3DSXL&lt;br /&gt;
|-&lt;br /&gt;
| SoC || CPU CTR (1048 0H)&lt;br /&gt;
CPU CTR (1214 32)&lt;br /&gt;
|| CPU CTR A (1226 60)&lt;br /&gt;
CPU CTR (1037 21)&lt;br /&gt;
|| CPU CTR B (??) || CPU LGR A (1444 86) || CPU LGR A (1446 17)&lt;br /&gt;
|-&lt;br /&gt;
| FCRAM || [http://www.fujitsu.com/downloads/MICRO/fma/pdf/MB81EDS516545_e511463.pdf 2x64MB Fujitsu MB82M8080-07L] || Fujitsu MB82DBS16641 || Fujitsu MB82DBS1664 || ?? || Fujitsu MB82MK9A9A&lt;br /&gt;
|-&lt;br /&gt;
| Top Screen ||  3.53 in, 3D || 4.88 in, 3D || 3.53 in(?) cropped from a single panel ||  3.88 in, 3D || 4.88 in, 3D&lt;br /&gt;
|-&lt;br /&gt;
| Bottom Screen ||  3.00 in || 4.18 in || 3.00 in(?) cropped from a single panel || 3.33 in || 4.18 in&lt;br /&gt;
|-&lt;br /&gt;
| Storage ||colspan=&amp;quot;3&amp;quot;| Toshiba THGBM2G3P1FBAI8 1GB ||colspan=&amp;quot;2&amp;quot;| Samsung KLM4G1YEQC 4GB (in 1.3GiB SLC mode)&lt;br /&gt;
Toshiba THGBMBG4P1KBAIT 2GB (MLC, approx. 1.8GiB usable)&lt;br /&gt;
|-&lt;br /&gt;
| Audio Codec || TI PAIC3010B 0AA37DW || ?? || ?? || TI AIC3010B 39C4ETW  || TI AIC3010D 48C01JW&lt;br /&gt;
|-&lt;br /&gt;
| Gyroscope || [http://dl-web.dropbox.com/u/20520664/references/PS-ITG-3200-00-01.4.pdf Invensense ITG-3270 MEMS Gyroscope] || ?? || ?? || ?? || ??&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || ST Micro 2048 33DH X1MAQ Accelerometer Model LIS331DH || ?? || ?? || ?? || ??&lt;br /&gt;
|-&lt;br /&gt;
| Wifi || Atheros AR6014 || ?? || ?? || ?? || Atheros AR6014G-AL1C&lt;br /&gt;
|-&lt;br /&gt;
| Infrared IC || NXP S750 0803 TSD031C || ?? || ?? || ?? || NXP S750 1603 TSD438C&lt;br /&gt;
|-&lt;br /&gt;
| Custom Microcontroller || Renesas UC CTR || ?? || Renesas UC CTR 324KM47 KG10  || Renesas UC KTR || Renesas UC KTR 442KM13 TK14&lt;br /&gt;
|-&lt;br /&gt;
| PMIC? || TI 93045A4 OAAH86W || ?? || ?? || TI 93045A4 38A6TYW G2 || TI 93045A4 49AF3NW G2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* [11] Official Documentation&lt;br /&gt;
&lt;br /&gt;
* [5],[10] According to iFixit.com ([http://www.ifixit.com/Teardown/Nintendo-3DS-Teardown/5029/1#s22696 source]):&lt;br /&gt;
&lt;br /&gt;
* Datasheet for memory is for a chip in the same series, it has less memory than the one inside the 3DS (128mbits vs 512mbits).&lt;br /&gt;
&lt;br /&gt;
* There is a trove of data on the FCC website at [https://fjallfoss.fcc.gov/oetcf/eas/reports/ViewExhibitReport.cfm?mode=Exhibits&amp;amp;RequestTimeout=500&amp;amp;calledFromFrame=N&amp;amp;application_id=462292&amp;amp;fcc_id=%27EW4DWMW028%27].&lt;br /&gt;
&lt;br /&gt;
* [12] This IC is somewhat similar to [http://www.alldatasheet.net/datasheet-pdf/pdf/347838/NXP/SC16IS750IBS.html this].&lt;br /&gt;
&lt;br /&gt;
== FCRAM ==&lt;br /&gt;
&lt;br /&gt;
There is one FCRAM (Fast Cycle RAM) IC in the 3DS, produced by Fujitsu and branded as MB82M8080-07L. The Fujitsu MB82M8080-07L chip internally contains 2 dies, where each die is branded MB81EDS516545 and MB82DBS08645.&lt;br /&gt;
&lt;br /&gt;
The MB81EDS516545 die is a CMOS Fast Cycle Random Access Memory (FCRAM) with Low Power Double Data Rate (LPDDR) SDRAM Interface containing 512MBit storage accessible in a 64-bit format. The MB81EDS516545 is suited for consumer applications requiring high data bandwidth with low power consumption.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SoC ==&lt;br /&gt;
&lt;br /&gt;
The 3DS has much of it&#039;s internals housed in a SoC (System on Chip) just like it&#039;s predecessors. This is done to reduce build costs, cut down on power consumption, as well as make the PCB layout less complex and make the system harder to tamper with. The SoC, branded as the Nintendo 1048 0H, contains the CPU, GPU, DSP and VRAM.&lt;br /&gt;
&lt;br /&gt;
According to official documents, the CPU used is a dual-core ARM11 CPU, clocked at 268MHz. One core is dedicated to system software, while the other is used for application programming, each known as the syscore and appcore, respectively.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GPU ==&lt;br /&gt;
&lt;br /&gt;
Designed by Digital Media Professionals Inc. (DMP) and codenamed PICA200, 268Mhz.&lt;br /&gt;
&lt;br /&gt;
Block diagram of an ULTRAY2000 based architecture PICA200:&lt;br /&gt;
&lt;br /&gt;
[[File:Pica200BlockDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
PICA200 is compatible with OpenGL ES 1.1. It furthermore provides unique functionality for:&lt;br /&gt;
* Per-fragment lighting (&amp;quot;Lighting Maestro&amp;quot;)&lt;br /&gt;
* Hard- and soft-shadowing (&amp;quot;Shadow Maestro&amp;quot;)&lt;br /&gt;
* Polygon subdivision (&amp;quot;Figure Maestro&amp;quot;)&lt;br /&gt;
* Bump mapping and procedural textures (&amp;quot;Mapping Maestro&amp;quot;)&lt;br /&gt;
* Rendering of gaseous objects (&amp;quot;Particle Maestro&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Some parts of the extended functionality are provided in hardware by an extended geometry pipeline. Most importantly, PICA200 has three programmable vertex processors. There is furthermore a unit called [[GPU/Primitive_Engine|Primitive Engine]], which is a geometry shader unit (using the same instruction set as vertex shaders) with support for variable-size primitives. The Primitive Engine functionality may be disabled, and the geometry shader unit then acts as a fourth vertex processor. See [[Shader_Instruction_Set]] for more information on the shader instruction set.&lt;br /&gt;
&lt;br /&gt;
[[GPU/Fragment Lighting|Fragment lighting]] is implemented as an optional pipeline step during pixel processing. It&#039;s implemented by having the vertex shader output an additional attribute describing the transformation (represented by a quaternion) to surface-local space. This per-vertex quaternion can then be interpolated across screen space to calculate dot products relevant for lighting (e.g. light vector dot normal vector). To provide support for advanced lighting models, these dot products are used as indices into programmable lookup tables. With this setup, PICA200 in particular supports the shading models Blinn-Phong, Cook-Terrance, Ward, and microfacet-based BRDF-models.&lt;br /&gt;
&lt;br /&gt;
PICA200 supports four texture units, the fourth of which is used exclusively for [[GPU/Procedural Texture Generation|procedural texture generation]].&lt;br /&gt;
&lt;br /&gt;
== SDIO controller ==&lt;br /&gt;
&lt;br /&gt;
Nintendo recommends SD cards up to 32 GB however the internal SDIO controller seems to support SD cards up to 2.19 Terabyte (32-bit sector number). It&#039;s unknown if it really can handle that much. 128 GB was tested and works fine however it causes a major slowdown of the system especially at boot.&lt;br /&gt;
&lt;br /&gt;
== MCU ==&lt;br /&gt;
&lt;br /&gt;
The MCU uses the RL78 ISA.&lt;br /&gt;
&lt;br /&gt;
== Images ==&lt;br /&gt;
&lt;br /&gt;
=== Front ===&lt;br /&gt;
&lt;br /&gt;
[[Image:CTR_Front.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
[http://guide-images.ifixit.net/igi/ishJaSCOwLkvbLYK High Resolution]&lt;br /&gt;
&lt;br /&gt;
=== Back ===&lt;br /&gt;
&lt;br /&gt;
[[Image:CTR_Back.jpg]]&lt;br /&gt;
&lt;br /&gt;
[http://guide-images.ifixit.net/igi/n1CKAdbPrHyNPNuW High Resolution]&lt;br /&gt;
&lt;br /&gt;
=== NAND pinout ===&lt;br /&gt;
&lt;br /&gt;
NAND dumping has been successful, but the image is encrypted.&lt;br /&gt;
&lt;br /&gt;
==== Normal model ====&lt;br /&gt;
&lt;br /&gt;
[[Image:CTR_NAND_pinout.png]]&lt;br /&gt;
&lt;br /&gt;
==== XL model ====&lt;br /&gt;
&lt;br /&gt;
[[Image:CTR_NAND_pinout_XL.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
==== 2DS ====&lt;br /&gt;
&lt;br /&gt;
[[Image:2DSeMMC.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
==== New 3DS ====&lt;br /&gt;
&lt;br /&gt;
[[Image:N3DSeMMC.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== New 3DS XL ====&lt;br /&gt;
&lt;br /&gt;
[[Image:N3DSXLeMMC.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== WiFi dongle pinout ===&lt;br /&gt;
[[Image:CTR_WiFiDongle_pinout.png|600px]]&lt;br /&gt;
&lt;br /&gt;
SDIO interface is colored red: &lt;br /&gt;
* CLK&lt;br /&gt;
* CMD&lt;br /&gt;
* D0, D1, D2, D3&lt;br /&gt;
&lt;br /&gt;
This is the interface for the &#039;NEW&#039; WiFi module (based on Atheros AR6002) first included in DSi.&lt;br /&gt;
&lt;br /&gt;
The proprietary and by now ancient DS-mode WiFi is colored yellow, pins are unknown.&lt;br /&gt;
&lt;br /&gt;
I2C eeprom is colored blue:&lt;br /&gt;
* SCL&lt;br /&gt;
* SDA&lt;br /&gt;
&lt;br /&gt;
SPI Flash is colored purple:&lt;br /&gt;
* CLK&lt;br /&gt;
* CS#&lt;br /&gt;
* SI&lt;br /&gt;
* SO&lt;br /&gt;
* WP#&lt;br /&gt;
* NC&lt;br /&gt;
&lt;br /&gt;
=== Auxiliary Microcontroller ===&lt;br /&gt;
[[Image:CTR_UC.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Monitors HOME button, WiFi switch, 3D slider, volume control slider.&lt;br /&gt;
Controls LEDs, various power supplies.&lt;br /&gt;
&lt;br /&gt;
Devices attached to I2C bus:&lt;br /&gt;
* UC (master?)&lt;br /&gt;
* Accelerometer (slave address 0x18)&lt;br /&gt;
* SoC (master? slave?)&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=NS_and_APT_Services&amp;diff=17681</id>
		<title>NS and APT Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=NS_and_APT_Services&amp;diff=17681"/>
		<updated>2016-07-13T12:06:17Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: /* APT Services */ Link to APT:SetScreencapPostPermission&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
The NS (&#039;&#039;&#039;N&#039;&#039;&#039;intendo User Interface &#039;&#039;&#039;S&#039;&#039;&#039;hell) system module is the first module launched from a CTR-NAND title after the [[FIRM]] processes are loaded (also see [[Bootloader]]). This module is launched by the pm process, with the titleID loaded from NS state(hard-coded TID initialized during applet TID-array initialization). NS first launches [[ErrDisp]], then the menu. On retail the menu TID is loaded from NS state, while on dev/debug the menu TID is loaded from [[Config_Savegame|config]]. On dev-units if the menu TID block doesn&#039;t exist in [[Config_Savegame|config]], NS will attempt to launch the alternate menu instead. The TID of the launched menu is then written to [[Configuration Memory|ACTIVEMENUTID]]. NS uses [[PMApp:LaunchTitle|pm:app]] to launch titles.&lt;br /&gt;
&lt;br /&gt;
NS will not trigger the [[ErrDisp|fatal-error]] screen when launching the regular/alternate menu fails.&lt;br /&gt;
&lt;br /&gt;
Like home menu NS is constantly running while the system is in 3DS-mode. When attempting to return to home-menu when the home-menu process isn&#039;t running(like when the process terminated/crashed), NS will trigger a [[ErrDisp|fatal]] error.&lt;br /&gt;
&lt;br /&gt;
= Alternate menu =&lt;br /&gt;
When launching the regular menu fails, NS will then attempt to launch the alternate menu. This title could be used as a recovery process, however it&#039;s normally not used after the factory.&lt;br /&gt;
&lt;br /&gt;
At the factory for all 3DS systems, [[3DS Development Unit GUI#Test Menu|Test Menu]] is installed with this TID. On retail this title is eventually deleted during [[Factory Setup]].&lt;br /&gt;
&lt;br /&gt;
= Auto-boot =&lt;br /&gt;
After [[PMApp:GetFIRMLaunchParams|loading]] [[FIRM]] params and prior to launching [[ErrDisp]]/Home Menu, NS handles auto-booting titles. The same code called by [[APT:Reboot]] is used for launching FIRM here. When the [[Configuration_Memory|UPDATEFLAG]] is set, NS will launch SAFE_MODE_FIRM with the application titleID set to the [[System_Settings#System_Updater|System Updater]] titleID for this region. When the UPDATEFLAG is not set, NS can auto-boot the following titles as well if [[Configuration_Memory|0x1FF80016]] bit0 is set.&lt;br /&gt;
&lt;br /&gt;
When bit1 and bit2 are value zero in [[Configuration_Memory|0x1FF80016]], NS will [[NSS:LaunchFIRM|launch]] the title specified by the [[FIRM]] parameters if the title-info is set. This FIRM launch is done after launching [[ErrDisp]] and Home Menu. Otherwise when [[Configuration_Memory|0x1FF80016]] is value 2 and the output u8 from [[PTM|PTMSYSM]] command 0x08140000 is value 0, NS will boot the title specified from the TWL TLNC block from FIRMparams+0x300. This is the same TLNC block which DSi titles wrote to RAM+0x300 for launching other titles via the launcher title. When handling the TLNC block, NS will boot the 3DS System Settings title when the TLNC titleID is the DSi System Settings titleID(the region field in the TLNC TID is not checked/used). When the TLNC titleID is not System Settings, NS will convert the input DSi titleID-high to the 3DS TWL titleID-high(tidhigh = (TLNCtidhigh &amp;amp; 0x7FFF) | 0x48000), then launch TWL_FIRM to run the title. NS does not support launching from gamecard via TLNC.&lt;br /&gt;
&lt;br /&gt;
= NS Workaround =&lt;br /&gt;
A &amp;quot;ns_workaround&amp;quot; was [[5.1.0-11|added]] in NS to workaround the flaw added with [[5.0.0-11]]. When NS is loading before launching any ARM11 processes and certain [[Configuration Memory]] fields are set, NS will launch [[Application_Manager_Services|AM]] then use command [[AM:InstallNATIVEFIRM]]. NS will then execute the code called by [[APT:StartNewestHomeMenu]], the code related to APT:PrepareToStartNewestHomeMenu is not executed here.&lt;br /&gt;
&lt;br /&gt;
NS will only execute this code-path when [[Configuration Memory|0x1FF80016]] is value zero, when KERNEL_VERSIONMAJOR is value 2, and when KERNEL_VERSIONMINOR is less than 35. Therefore, this code-path is only executed when the running NATIVE_FIRM version is prior to [[5.0.0-11]].&lt;br /&gt;
&lt;br /&gt;
= NS Service &amp;quot;ns: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;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000100C0&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| [[NSS:LaunchFIRM|LaunchFIRM]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000200C0&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| [[NSS:LaunchTitle|LaunchTitle]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030000&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| [[NSS:TerminateApplication|TerminateApplication]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040040&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| [[NSS:TerminateProcess|TerminateProcess]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000500C0&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| [[NSS:LaunchApplicationFIRM|LaunchApplicationFIRM]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060042&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| [[NSS:SetWirelessRebootInfo|SetWirelessRebootInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070042&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| [[NSS:CardUpdateInitialize|CardUpdateInitialize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| [[NSS:CardUpdateShutdown|CardUpdateShutdown]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| Gamecard system update related.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| Gamecard system update related.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| Gamecard system update related.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| Gamecard system update related.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0140&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| [[NSS:SetTWLBannerHMAC|SetTWLBannerHMAC]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0000&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| [[NSS:ShutdownAsync|ShutdownAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0000&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| This calls [[APT:AppletUtility]] with fixed input params.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100180&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| [[NSS:RebootSystem|RebootSystem]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110100&lt;br /&gt;
| [[1.0.0-0]] - [[2.0.0-2]]&lt;br /&gt;
| [[NSS:TerminateTitle|TerminateTitle]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001200C0&lt;br /&gt;
| ?&lt;br /&gt;
| [[NSS:SetApplicationCpuTimeLimit|SetApplicationCpuTimeLimit]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140042&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150140&lt;br /&gt;
| ?&lt;br /&gt;
| [[NSS:LaunchApplication|LaunchApplication]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00160000&lt;br /&gt;
| [[8.0.0-18]]&lt;br /&gt;
| [[NSS:RebootSystemClean|RebootSystemClean]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The maximum sessions that can be used with this service is two, therefore only two processes can use this service at the same time.&lt;br /&gt;
&lt;br /&gt;
=NS Power Service &amp;quot;ns:p&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;
| 0x00010040&lt;br /&gt;
| [[NSP:RebootSystem|RebootSystem]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[NSS:ShutdownAsync|ShutdownAsync]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This was added with [[3.0.0-5]]. The PTM sysmodule connects to this service, and syncs whenever [[PTM|ptm:s GetShellState()]] changes.&lt;br /&gt;
&lt;br /&gt;
=NS Service &amp;quot;ns:c&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;
| 0x00010100&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020100&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This was added with [[5.0.0-11]], it&#039;s unknown what this is used for.&lt;br /&gt;
&lt;br /&gt;
=APT Services=&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;
!  Accessible with APT:U&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00010040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GetLockHandle|GetLockHandle]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020080&lt;br /&gt;
| &lt;br /&gt;
| See [[APT:Initialize|here]].&lt;br /&gt;
| [[APT:Initialize|Initialize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:Enable|Enable]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:Finalize|Finalize]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GetAppletManInfo|GetAppletManInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GetAppletInfo|GetAppletInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070000&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GetLastSignaledAppletId|GetLastSignaledAppletId]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080000&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:CountRegisteredApplet|CountRegisteredApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:IsRegistered|IsRegistered]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GetAttribute|GetAttribute]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:InquireNotification|InquireNotification]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0104&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:SendParameter|SendParameter]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0080&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:ReceiveParameter|ReceiveParameter]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0080&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GlanceParameter|GlanceParameter]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0100&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:CancelParameter|CancelParameter]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001000C2&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:DebugFunc|DebugFunc]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001100C0&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:MapProgramIdForDebug|MapProgramIdForDebug]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00120040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:SetHomeMenuAppletIdForDebug|SetHomeMenuAppletIdForDebug]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00130000&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GetPreparationState|GetPreparationState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00140040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:SetPreparationState|SetPreparationState]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00150140&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| [[APT:PrepareToStartApplication|PrepareToStartApplication]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00160040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:PreloadLibraryApplet|PreloadLibraryApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00170040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:FinishPreloadingLibraryApplet|FinishPreloadingLibraryApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00180040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:PrepareToStartLibraryApplet|PrepareToStartLibraryApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00190040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:PrepareToStartSystemApplet|PrepareToStartSystemApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001A0000&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:PrepareToStartNewestHomeMenu|PrepareToStartNewestHomeMenu]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001B00C4&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:StartApplication|StartApplication]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C0000&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:WakeupApplication|WakeupApplication]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001D0000&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:CancelApplication|CancelApplication]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001E0084&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:StartLibraryApplet|StartLibraryApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x001F0084&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:StartSystemApplet|StartSystemApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00200044&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:StartNewestHomeMenu|StartNewestHomeMenu]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00210000&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| [[APT:OrderToCloseApplication|OrderToCloseApplication]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00220040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:PrepareToCloseApplication|PrepareToCloseApplication]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00230040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:PrepareToJumpToApplication|PrepareToJumpToApplication]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00240044&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:JumpToApplication|JumpToApplication]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002500C0&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:PrepareToCloseLibraryApplet|PrepareToCloseLibraryApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00260000&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:PrepareToCloseSystemApplet|PrepareToCloseSystemApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00270044&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:CloseApplication|CloseApplication]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00280044&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:CloseLibraryApplet|CloseLibraryApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00290044&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:CloseSystemApplet|CloseSystemApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002A0000&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:OrderToCloseSystemApplet|OrderToCloseSystemApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002B0000&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:PrepareToJumpToHomeMenu|PrepareToJumpToHomeMenu]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002C0044&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:JumpToHomeMenu|JumpToHomeMenu]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D0000&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:PrepareToLeaveHomeMenu|PrepareToLeaveHomeMenu]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002E0044&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:LeaveHomeMenu|LeaveHomeMenu]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002F0040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:PrepareToLeaveResidentApplet|PrepareToLeaveResidentApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00300044&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:LeaveResidentApplet|LeaveResidentApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00310100&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:PrepareToDoApplicationJump|PrepareToDoApplicationJump]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00320084&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:DoApplicationJump|DoApplicationJump]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00330000&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GetProgramIdOnApplicationJump|GetProgramIdOnApplicationJump]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00340084&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:SendDeliverArg|SendDeliverArg]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00350080&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:ReceiveDeliverArg|ReceiveDeliverArg]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00360040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:LoadSysMenuArg|LoadSysMenuArg]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00370042&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:StoreSysMenuArg|StoreSysMenuArg]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00380040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:PreloadResidentApplet|PreloadResidentApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00390040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:PrepareToStartResidentApplet|PrepareToStartResidentApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003A0044&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:StartResidentApplet|StartResidentApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003B0040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:CancelLibraryApplet|CancelLibraryApplet]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003C0042&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:SendDspSleep|SendDspSleep]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003D0042&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:SendDspWakeUp|SendDspWakeUp]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003E0080&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:ReplySleepQuery|ReplySleepQuery]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x003F0040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:ReplySleepNotificationComplete|ReplySleepNotificationComplete]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00400042&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:SendCaptureBufferInfo|SendCaptureBufferInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00410040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:ReceiveCaptureBufferInfo|ReceiveCaptureBufferInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420080&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:SleepSystem|SleepSystem]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00430040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:NotifyToWait|NotifyToWait]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00440000&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GetSharedFont|GetSharedFont]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00450040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GetWirelessRebootInfo|GetWirelessRebootInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00460104&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:Wrap|Wrap]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00470104&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:Unwrap|Unwrap]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00480100&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| [[APT:GetProgramInfo|GetProgramInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00490180&lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| [[APT:Reboot|Reboot]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004A0040&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GetCaptureInfo|GetCaptureInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004B00C2&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:AppletUtility|AppletUtility]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004C0000&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:SetFatalErrDispMode|SetFatalErrDispMode]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004D0080&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GetAppletProgramInfo|GetAppletProgramInfo]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004E0000&lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:HardwareResetAsync|HardwareResetAsync]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x004F0080&lt;br /&gt;
| [[2.2.0-X]]&lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:SetApplicationCpuTimeLimit|SetApplicationCpuTimeLimit]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00500040&lt;br /&gt;
| [[2.2.0-X]]&lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GetApplicationCpuTimeLimit|GetApplicationCpuTimeLimit]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00510080&lt;br /&gt;
| [[3.0.0-5]]&lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GetStartupArgument|GetStartupArgument]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00520104&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:Wrap1|Wrap1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00530104&lt;br /&gt;
| [[4.0.0-7]]&lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:Unwrap1|Unwrap1]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00540040&lt;br /&gt;
| [[5.0.0-11]]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00550040&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:SetScreencapPostPermission|SetScreencapPostPermission]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00560000&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GetScreencapPostPermission|GetScreencapPostPermission]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00570044&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| ?&lt;br /&gt;
| [[APT:WakeupApplication2|WakeupApplication2]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00580002&lt;br /&gt;
| [[7.0.0-13]]&lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:GetProgramID|GetProgramID]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01010000&lt;br /&gt;
| [[8.0.0-18]]&lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:CheckNew3DSApp|CheckNew3DSApp]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01020000&lt;br /&gt;
| [[8.0.0-18]]&lt;br /&gt;
| Yes&lt;br /&gt;
| [[APT:CheckNew3DS|CheckNew3DS]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01030000&lt;br /&gt;
| [[8.0.0-18]]&lt;br /&gt;
| Yes&lt;br /&gt;
| This writes an output u8 to cmdreply[2], the value is determined by checking various NS internal state + whether this is a New3DS.&lt;br /&gt;
The normal output seems to be value 0x2. Forcing this value to 0x1 causes New3DS HID usage(via ir:USER) in Smash Bros to be disabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01040000&lt;br /&gt;
| [[8.0.0-18]]&lt;br /&gt;
| ?&lt;br /&gt;
| [[APT:IsStandardMemoryLayout|IsStandardMemoryLayout]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x01050100&lt;br /&gt;
| [[10.4.0-29]]&lt;br /&gt;
| ?&lt;br /&gt;
| [[APT:IsTitleAllowed|IsTitleAllowed]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These &amp;quot;APT:U&amp;quot; and &amp;quot;APT:S&amp;quot; NS services can handle launching titles/&amp;quot;applets&amp;quot;, these services handle signaling for home/power button as well. Only one session for either APT service can be open at a time, normally processes close the service handle immediately once finished using the service. The commands for APT:U and APT:S are exactly the same, however certain commands are only accessible with APT:S(NS module will call [[SVC|svcBreak]] when the command isn&#039;t accessible).&lt;br /&gt;
&lt;br /&gt;
Applets returning to home-menu first use commands APT:PrepareToJumpToHomeMenu and APT:JumpToHomeMenu, followed by these commands to launch home-menu: [[APT:PrepareToStartSystemApplet]] and [[APT:StartSystemApplet]]. [[APT:PrepareToStartSystemApplet]] and [[APT:StartSystemApplet]] are also used for launching the [[Internet Browser]], the camera applet, etc.&lt;br /&gt;
&lt;br /&gt;
Processes launch applications via home-menu, not directly with [[APT:PrepareToStartApplication]] and [[APT:StartApplication]]. Regular applications can&#039;t directly launch applications since [[APT:StartApplication]] launches the process without terminating the currently running application.&lt;br /&gt;
&lt;br /&gt;
APT:PrepareToDoApplicationJump and APT:DoApplicationJump are used by applications, for launching native/&amp;lt;non-NATIVE_FIRM&amp;gt; applications. These commands notify Home Menu that title launching needs done, Home Menu does the actual title launching via NS commands.&lt;br /&gt;
&lt;br /&gt;
== AppletAttr ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Bits&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-2&lt;br /&gt;
| [[NS_and_APT_Services#AppletPos|AppletPos]]&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Manually Acquire/Release GPU Rights&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Manually Acquire/Release DSP Rights&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DisplayBufferMode ==&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;
| FORMAT_R8G8B8A8&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| FORMAT_R8G8B8&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| FORMAT_R5G6B5&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| FORMAT_R5G5B5A1&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| FORAMT_R4G4B4A4&lt;br /&gt;
|-&lt;br /&gt;
| 0xFFFFFFFF&lt;br /&gt;
| FORMAT_UNIMPORTABLE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is the same mapping as used for the [[GPU/External_Registers#Framebuffer_color_formats|GPU framebuffer color formats]].&lt;br /&gt;
&lt;br /&gt;
== AppletPos ==&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;
| -1&lt;br /&gt;
| POS_NONE&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| POS_APP&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| POS_APPLIB&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| POS_SYS&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| POS_SYSLIB&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| POS_RESIDENT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== QueryReply ==&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;
| REPLY_REJECT&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| REPLY_ACCEPT&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| REPLY_LATER&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Notification ==&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;
| NOTIFICATION_NONE&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| NOTIFICATION_HOME_BUTTON_1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| NOTIFICATION_HOME_BUTTON_2&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| NOTIFICATION_SLEEP_QUERY&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| NOTIFICATION_SLEEP_CANCELED_BY_OPEN&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| NOTIFICATION_SLEEP_ACCEPTED&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| NOTIFICATION_SLEEP_AWAKE&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| NOTIFICATION_SHUTDOWN&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| NOTIFICATION_POWER_BUTTON_CLICK&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| NOTIFICATION_POWER_BUTTON_CLEAR&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| NOTIFICATION_TRY_SLEEP&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| NOTIFICATION_ORDER_TO_CLOSE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Command ==&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;
| COMMAND_NONE&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| COMMAND_WAKEUP&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| COMMAND_REQUEST&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| COMMAND_RESPONSE&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| COMMAND_EXIT&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| COMMAND_MESSAGE&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| COMMAND_HOME_BUTTON_SINGLE&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| COMMAND_HOME_BUTTON_DOUBLE&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| COMMAND_DSP_SLEEP&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| COMMAND_DSP_WAKEUP&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| COMMAND_WAKEUP_BY_EXIT&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| COMMAND_WAKEUP_BY_PAUSE&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| COMMAND_WAKEUP_BY_CANCEL&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| COMMAND_WAKEUP_BY_CANCELALL&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| COMMAND_WAKEUP_BY_POWER_BUTTON_CLICK&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| COMMAND_WAKEUP_TO_JUMP_HOME&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| COMMAND_REQUEST_FOR_SYS_APPLET&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| COMMAND_WAKEUP_TO_LAUNCH_APPLICATION&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== AppletPreparationState ==&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;
| NO_PREPARATION&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PREPARED_TO_LAUNCH_APP&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARED_TO_CLOSE_APP&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARED_TO_FORCE_TO_CLOSE_APP&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| PREPARED_TO_PRELOAD_APPLIB&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| PREPARED_TO_LAUNCH_APPLIB&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| PREPARED_TO_CLOSE_APPLIB&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| PREPARED_TO_LAUNCH_SYS&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| PREPARED_TO_CLOSE_SYS&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| PREPARED_TO_PRELOAD_SYSLIB&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| PREPARED_TO_LAUNCH_SYSLIB&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| PREPARED_TO_CLOSE_SYSLIB&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| PREPARED_TO_LAUNCH_RESIDENT&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| PREPARED_TO_LEAVE_RESIDENT&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| PREPARED_TO_DO_HOMEMENU&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| PREPARED_TO_LEAVE_HOMEMENU&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| PREPARED_TO_START_RESIDENT&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| PREPARED_TO_DO_APP_JUMP&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| PREPARED_TO_FORCE_TO_CLOSE_SYS&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| PREPARED_TO_LAUNCH_OTHER_SYS&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| PREPARED_TO_JUMP_TO_APP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== StartupArgumentType ==&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;
| STARTUP_ARGUMENT_TYPE_OTHER_APP&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| STARTUP_ARGUMENT_TYPE_RESTART&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| STARTUP_ARGUMENT_TYPE_OTHER_MEDIA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CaptureBufferInfo ==&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;
| u32, Size&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8, 3D (0 = not 3D, 1 = 3D)&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x3&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Main Screen Left Offset&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Main Screen Right Offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Main Screen [[NS_and_APT_Services#DisplayBufferMode|DisplayBufferMode]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Sub Screen Left Offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Sub Screen Right Offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Sub Screen [[NS_and_APT_Services#DisplayBufferMode|DisplayBufferMode]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==WirelessRebootInfo==&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;
| 0x6&lt;br /&gt;
| Host MAC address.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 0x9&lt;br /&gt;
| WirelessRebootPassphrase&lt;br /&gt;
|-&lt;br /&gt;
| 0xF&lt;br /&gt;
| 0x1&lt;br /&gt;
| Uninitialized&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is [[NSS:SetWirelessRebootInfo|setup]] by the dlplay system-application, before launching the DLP-child which can then use [[APT:GetWirelessRebootInfo]]. The MAC address and passphrase is used for connecting to the host by the DLP-child. See also [[DLP_Services|here]].&lt;br /&gt;
&lt;br /&gt;
=&amp;quot;APT:A&amp;quot; Service=&lt;br /&gt;
This was added with [[7.0.0-13|7.0.0-X]]. Official apps built with the CTRSDK for system-version &amp;gt;=[[7.0.0-13|7.0.0-X]] normally use the &amp;quot;APT:A&amp;quot; service instead of &amp;quot;APT:U&amp;quot;. Those processes also have &amp;quot;APT:A&amp;quot; instead of &amp;quot;APT:U&amp;quot; in the service-access-control. It&#039;s unknown whether there&#039;s anything which is only accessible via &amp;quot;APT:A&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Applets=&lt;br /&gt;
NS module does not verify that the input appID for the APT service cmds are correct for that type of command. For example, a process-launch of a SystemApplet via LibraryApplet commands works fine(minus the launched-process side of APT probably).&lt;br /&gt;
&lt;br /&gt;
==System Applets==&lt;br /&gt;
On Old3DS there could only be one applet here(Home Menu, Internet Browser, Friend-List, etc) with programID-high 00040030 running at a time. On Old3DS when directly launching one of these 00040030 applets with Home Menu, the Home Menu process will terminate once the process is launched. On Old3DS when returning to Home Menu from that launched process, the Home Menu process is launched again.&lt;br /&gt;
&lt;br /&gt;
On New3DS the Home Menu process is still running/in-memory, while another system-applet is running. On New3DS it appears that the Home Menu process is terminated+relaunched, when another system-applet terminated without exiting with APT properly.&lt;br /&gt;
&lt;br /&gt;
==Library Applets==&lt;br /&gt;
Library applets can be launched by applications and regular applets. These library applets render to the screen(s) when running, etc. For example, this includes swkbd for text input. See the below appIDs in the 0x2XX range, the actual appID used is 0x4XX however.&lt;br /&gt;
&lt;br /&gt;
Input data can be sent to the library applet via the NS [[APT:SendParameter|parameter]] buffer, and/or with shared-memory with a shared-mem handle sent to the library applet. Output data from the library applet can be received by [[APT:ReceiveParameter]], the library applet can also use the specified shared-mem for output too.&lt;br /&gt;
&lt;br /&gt;
=AppIDs=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  AppID&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x101&lt;br /&gt;
| Home Menu (menu)&lt;br /&gt;
|-&lt;br /&gt;
| 0x103&lt;br /&gt;
| Alternate Menu&lt;br /&gt;
|-&lt;br /&gt;
| 0x110&lt;br /&gt;
| Camera applet (CtrApp)&lt;br /&gt;
|-&lt;br /&gt;
| 0x112&lt;br /&gt;
| Friends List applet (friend)&lt;br /&gt;
|-&lt;br /&gt;
| 0x113&lt;br /&gt;
| Game Notes applet (Cherry)&lt;br /&gt;
|-&lt;br /&gt;
| 0x114&lt;br /&gt;
| [[Internet Browser]] (spider/SKATER)&lt;br /&gt;
|-&lt;br /&gt;
| 0x115&lt;br /&gt;
| Instruction Manual applet&lt;br /&gt;
|-&lt;br /&gt;
| 0x116&lt;br /&gt;
| Notifications applet (newslist)&lt;br /&gt;
|-&lt;br /&gt;
| 0x117&lt;br /&gt;
| Miiverse applet (olv)&lt;br /&gt;
|-&lt;br /&gt;
| 0x118&lt;br /&gt;
| Miiverse posting applet (solv3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x119&lt;br /&gt;
| Amiibo settings (cabinet)&lt;br /&gt;
|-&lt;br /&gt;
| 0x201&lt;br /&gt;
| Software Keyboard (swkbd) (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x202&lt;br /&gt;
| Mii Selector (appletEd) (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x204&lt;br /&gt;
| Photo Selector (PNOTE_AP) (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x205&lt;br /&gt;
| Sound Selector (SNOTE_AP) (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x206&lt;br /&gt;
| Error Display (error) (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x207&lt;br /&gt;
| eShop applet (mint) (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x208&lt;br /&gt;
| Circle Pad Pro Calibrator ([[Extrapad_Applet|extrapad]]) (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x209&lt;br /&gt;
| Notepad (memolib) (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x300&lt;br /&gt;
| Application&lt;br /&gt;
|-&lt;br /&gt;
| 0x301&lt;br /&gt;
| eShop (tiger)&lt;br /&gt;
|-&lt;br /&gt;
| 0x401&lt;br /&gt;
| Software Keyboard (swkbd)&lt;br /&gt;
|-&lt;br /&gt;
| 0x402&lt;br /&gt;
| Mii Selector (appletEd)&lt;br /&gt;
|-&lt;br /&gt;
| 0x404&lt;br /&gt;
| Photo Selector (PNOTE_AP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x405&lt;br /&gt;
| Sound Selector (SNOTE_AP)&lt;br /&gt;
|-&lt;br /&gt;
| 0x406&lt;br /&gt;
| Error Display (error)&lt;br /&gt;
|-&lt;br /&gt;
| 0x407&lt;br /&gt;
| eShop applet (mint)&lt;br /&gt;
|-&lt;br /&gt;
| 0x408&lt;br /&gt;
| Circle Pad Pro Calibrator ([[Extrapad_Applet|extrapad]])&lt;br /&gt;
|-&lt;br /&gt;
| 0x409&lt;br /&gt;
| Notepad (memolib)&lt;br /&gt;
|-&lt;br /&gt;
| 0xF10&lt;br /&gt;
| ProgramID: 0004003000008900.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF11&lt;br /&gt;
| ProgramID: 000400000FFFFD00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF12&lt;br /&gt;
| ProgramID: 000400000FFFFC00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF13&lt;br /&gt;
| ProgramID: 000400000FFFFB00.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF14&lt;br /&gt;
| ProgramID: 000400000FFFF900.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF15&lt;br /&gt;
| ProgramID: 000400000FFFF800.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF16&lt;br /&gt;
| ProgramID: 000400000FFFF700.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF17&lt;br /&gt;
| ProgramID: 000400000FFFF600.&lt;br /&gt;
|-&lt;br /&gt;
| 0xF18&lt;br /&gt;
| ProgramID: 000400000FFFF500.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These AppIDs are all for NAND titles, except for 0x300. AppIDs in the 0x1XX range are applets(programID-high 00040030), and the AppIDs in the 0x2XX range are &amp;quot;system libraries&amp;quot;(programID-high 00040030). The 0xFXX AppID range is for development NAND applications, these are not available for retail.&lt;br /&gt;
&lt;br /&gt;
Note that at some point the total AppID entry count was changed from 28 to 27.&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=APT:GetScreenCapturePostPermission&amp;diff=17680</id>
		<title>APT:GetScreenCapturePostPermission</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=APT:GetScreenCapturePostPermission&amp;diff=17680"/>
		<updated>2016-07-13T12:05:28Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: /* Description */ fix values&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 [0x00560000]&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;
| The screenshot posting permission&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
This returns whether or not screenshots may be posted on Miiverse.&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;
| 1&lt;br /&gt;
| the user has no explicit setting&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| screenshot posting to Miiverse is enabled&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| screenshot posting to Miiverse is disabled&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=APT:SetScreenCapturePostPermission&amp;diff=17679</id>
		<title>APT:SetScreenCapturePostPermission</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=APT:SetScreenCapturePostPermission&amp;diff=17679"/>
		<updated>2016-07-13T12:05:04Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: Created page with &amp;quot;=Request= {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; |- !  Index Word !  Description |- | 0 | Header code [0x00550040] |- | 1 | Permission to post screenshots to Miiverse |}  =Response=...&amp;quot;&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 [0x00550040]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Permission to post screenshots to Miiverse&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;
&lt;br /&gt;
=Description=&lt;br /&gt;
This sets whether or not screenshots may be posted on Miiverse.&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;
| 1&lt;br /&gt;
| the user has no explicit setting&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| screenshot posting to Miiverse is enabled&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| screenshot posting to Miiverse is disabled&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=APT:GetScreenCapturePostPermission&amp;diff=17678</id>
		<title>APT:GetScreenCapturePostPermission</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=APT:GetScreenCapturePostPermission&amp;diff=17678"/>
		<updated>2016-07-13T12:02:59Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: actually fill this in&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 [0x00560000]&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;
| The screenshot posting permission&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
This returns whether or not screenshots may be posted on Miiverse.&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;
| 1&lt;br /&gt;
| the user has no explicit setting&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| screenshot posting to Miiverse is enabled&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| screenshot posting to Miiverse is enabled&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Process_Services&amp;diff=17620</id>
		<title>Process Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Process_Services&amp;diff=17620"/>
		<updated>2016-07-09T11:29:16Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: Link to PS:GetCTRCardAutoStartupBit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&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;
| 0x00010244&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SignRsaSha256&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020244&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| VerifyRsaSha256&lt;br /&gt;
|-&lt;br /&gt;
| Not implemented&lt;br /&gt;
| &lt;br /&gt;
| SetAesKey (just returns error 0xD8C107F4)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040204&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PS:EncryptDecryptAes|EncryptDecryptAes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050284&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PS:EncryptSignDecryptVerifyAesCcm|EncryptSignDecryptVerifyAesCcm]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00060040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetRomId (u32 processID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00070040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetRomId2 (u32 processID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00080040&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetRomMakerCode (u32 processID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PS:GetCTRCardAutoStartupBit|GetCTRCardAutoStartupBit]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetLocalFriendCodeSeed&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetDeviceId&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PS:SeedRNG|SeedRNG]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GenerateRandomBytes&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0082&lt;br /&gt;
| New3DS = [[8.1.0-0_New3DS]], Old3DS = [[9.0.0-20]]&lt;br /&gt;
| Interface for [[Process_Services_PXI]] New3DS command 0x04010084.&lt;br /&gt;
|-&lt;br /&gt;
| 0x000F0082&lt;br /&gt;
| New3DS = [[8.1.0-0_New3DS]], Old3DS = [[9.0.0-20]]&lt;br /&gt;
| Interface for [[Process_Services_PXI]] New3DS command 0x04020082.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00100042&lt;br /&gt;
| New3DS = [[8.1.0-0_New3DS]], Old3DS = [[9.0.0-20]]&lt;br /&gt;
| Interface for [[Process_Services_PXI]] New3DS command 0x04030044.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00110042&lt;br /&gt;
| New3DS = [[8.1.0-0_New3DS]], Old3DS = [[9.0.0-20]]&lt;br /&gt;
| Interface for [[Process_Services_PXI]] New3DS command 0x04040044.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These commands are an interface for [[Process_Services_PXI]].&lt;br /&gt;
&lt;br /&gt;
For GetRomId, GetRomId2, and GetRomMakerCode, PS-module uses [[FS:GetProgramLaunchInfo]] with the processID which was sent to PS-module via the command input. If GetProgramLaunchInfo fails, PS-module returns error 0xC90107FA. When the mediatype is value2 for gamecard, the PSPXI command is used, otherwise PS-module just clears the output data for the command response.&lt;br /&gt;
&lt;br /&gt;
PS module does not use any CheckNew3DS commands: commands 0x000E0082..0x00110042 are handled by PS module regardless of whether this is running on Old3DS/New3DS. Using these commands on Old3DS will result in Process9 returning an invalid command header error. [[NFC_Services|NFC]] module uses all of these new commands for New3DS.&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Process_Services_PXI&amp;diff=17619</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=17619"/>
		<updated>2016-07-09T11:28:17Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: /* Process Services PXI &amp;quot;pxi:ps9&amp;quot; */ Add link to PSPXI:GetCTRCardAutoStartupBit&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&lt;br /&gt;
!  Available since system version&lt;br /&gt;
!  Description&lt;br /&gt;
|-&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;
| [[1.0.0-0]]&lt;br /&gt;
| SignRsaSha256&lt;br /&gt;
|-&lt;br /&gt;
| 0x00030284&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| VerifyRsaSha256&lt;br /&gt;
|-&lt;br /&gt;
| 0x000401C4&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:EncryptDecryptAes|EncryptDecryptAes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050284&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:EncryptSignDecryptVerifyAesCcm|EncryptSignDecryptVerifyAesCcm]]&lt;br /&gt;
|-&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;
| 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;
| 0x00080000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:GetCTRCardAutoStartupBit|GetCTRCardAutoStartupBit]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| GetRomMakerCode&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:GetLocalFriendCodeSeed|GetLocalFriendCodeSeed]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B0000&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:GetDeviceId|GetDeviceId]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| SeedRNG&lt;br /&gt;
|-&lt;br /&gt;
| 0x000D0042&lt;br /&gt;
| [[1.0.0-0]]&lt;br /&gt;
| [[PSPXI:GenerateRandomBytes|GenerateRandomBytes]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000E0042&lt;br /&gt;
| [[1.0.0-0]], removed with [[2.0.0-2]]&lt;br /&gt;
| With [[2.0.0-2]] the system no longer handles this command at all. This was mostly the same as GenerateRandomBytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04010084&lt;br /&gt;
| [[8.1.0-0_New3DS]]&lt;br /&gt;
| [[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;
| [[8.1.0-0_New3DS]]&lt;br /&gt;
| [[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;
| [[8.1.0-0_New3DS]]&lt;br /&gt;
| [[New_3DS]]-only.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04040044&lt;br /&gt;
| [[8.1.0-0_New3DS]]&lt;br /&gt;
| [[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;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PSPXI:GetCTRCardAutoStartupBit&amp;diff=17618</id>
		<title>PSPXI:GetCTRCardAutoStartupBit</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PSPXI:GetCTRCardAutoStartupBit&amp;diff=17618"/>
		<updated>2016-07-09T11:27:18Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: Created page with &amp;quot;=Request= {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; |- !  Index Word !  Description |- | 0 | Header code [0x00080000] |}  =Response= {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; |- !  Index Word !...&amp;quot;&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 [0x00080000]&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;
| 1 if the auto startup bit is set, 0 otherwise.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
This command returns whether the cartridge&#039;s auto start bit is set.&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=PS:GetCTRCardAutoStartupBit&amp;diff=17617</id>
		<title>PS:GetCTRCardAutoStartupBit</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=PS:GetCTRCardAutoStartupBit&amp;diff=17617"/>
		<updated>2016-07-09T11:26:14Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: Created page with &amp;quot;=Request= {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; |- !  Index Word !  Description |- | 0 | Header code [0x00090000] |}  =Response= {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; |- !  Index Word !...&amp;quot;&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 [0x00090000]&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;
| 1 if the auto startup bit is set, 0 otherwise.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
This is a wrapper for [[PSPXI:GetCTRCardAutoStartupBit]].&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Factory_Setup&amp;diff=17595</id>
		<title>Factory Setup</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Factory_Setup&amp;diff=17595"/>
		<updated>2016-07-03T10:07:50Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: /* CTRAging */ add PabloMK7&amp;#039;s video&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Setup Process ==&lt;br /&gt;
&lt;br /&gt;
[[Nandrw/sys/updater.log]], [[Twln/sys/log/inspect.log]] and [[Twln/sys/log/product.log]] get written during Factory Setup. CTRAging appears to do the product.log writing.&lt;br /&gt;
&lt;br /&gt;
It is currently unknown how CTRAging is launched.&lt;br /&gt;
&lt;br /&gt;
== Titles ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Factory firmware is effectively a firmware that consists of NATIVE_FIRM, TWL_FIRM and AGB_FIRM, all system modules, TestMenu and CTRAging.&lt;br /&gt;
&lt;br /&gt;
On O3DS, all system titles have TID high 00040001. This may just be convention of a very old firmware since [[FIRM#NATIVE_FIRM|NATIVE_FIRM in the factory]] is extremely old, being over 20 versions behind 1.0. TestMenu also has this TID high.&lt;br /&gt;
&lt;br /&gt;
For N3DS, the title IDs match the [[Title_list|normal]] TID-highs. The entire N3DS factory firmware appears to be based on some firmware around 8.1. The TestMenu TID high was adjusted to match the TestMenu in the Nintendo CTR SDK as well.&lt;br /&gt;
&lt;br /&gt;
Most, but apparently not all, units ship with tickets for all factory titles in ticket.db, signed with retail keys. All factory titles for retail units use the retail [[NCCH]] secure crypto; the [[NCCH/Extended_Header#Access_Control_Info|NCCH access desc]] uses the retail keys for signatures, too. This suggests that at the point the factory firmware is booted for the first time, the [[OTP_Registers|one-time programmable (OTP) region]] has already been programmed or that the bootroms set the keys for retail by default.&lt;br /&gt;
&lt;br /&gt;
=== Title List ===&lt;br /&gt;
&lt;br /&gt;
It is currently unknown whether these are all factory titles known or if there may be more.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  TID-high&lt;br /&gt;
!  TID-low&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 00040000&lt;br /&gt;
| 0F980000&lt;br /&gt;
| CTRAging (&amp;quot;Test Program&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000002&lt;br /&gt;
| NATIVE_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000102&lt;br /&gt;
| TWL_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000202&lt;br /&gt;
| AGB_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001802&lt;br /&gt;
| codec sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001902&lt;br /&gt;
| dmnt sysmodule (Debugger sysmodule, see [[Title_list|here]])&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001A02&lt;br /&gt;
| dsp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001B02&lt;br /&gt;
| gpio sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001D02&lt;br /&gt;
| hid sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001E02&lt;br /&gt;
| i2c sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001F02&lt;br /&gt;
| mcu sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002102&lt;br /&gt;
| pdn sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002302&lt;br /&gt;
| spi sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002702&lt;br /&gt;
| csnd sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002802&lt;br /&gt;
| dlp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002A02&lt;br /&gt;
| mp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002B02&lt;br /&gt;
| ndm sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002C02&lt;br /&gt;
| nim sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002D02&lt;br /&gt;
| nwm sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002E02&lt;br /&gt;
| socket sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003102&lt;br /&gt;
| ps module&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003202&lt;br /&gt;
| friends sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003302&lt;br /&gt;
| ir sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003402&lt;br /&gt;
| boss sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008002&lt;br /&gt;
| [[NS]]&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008102&lt;br /&gt;
| TestMenu (O3DS)&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008A02&lt;br /&gt;
| [[ErrDisp|DevErrDi]]&lt;br /&gt;
|-&lt;br /&gt;
| 00040030&lt;br /&gt;
| 00008102&lt;br /&gt;
| TestMenu (some O3DS (?), all N3DS)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TestMenu ==&lt;br /&gt;
&lt;br /&gt;
TestMenu is similar to its [[3DS_Development_Unit_GUI#Test_Menu|Nintendo CTR SDK equivalent]].&lt;br /&gt;
&lt;br /&gt;
On O3DS factory TestMenu, there are two strings that do not appear to be part of the standard Nintendo CTR SDK TestMenu: &amp;quot;run TWL test app&amp;quot; and &amp;quot;run AGB test app.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On N3DS, TestMenu appears to be identical to the Nintendo CTR SDK TestMenu revision.&lt;br /&gt;
&lt;br /&gt;
No TestMenu version is capable of launching CTRAging directly: O3DS factory TestMenu can only launch [[3DS_Development_Unit_Software#Dev_Menu|DevMenu]] installed on [[Flash_Filesystem|NAND]], the inserted cartridge and the TWL/AGB test apps; N3DS factory TestMenu can only launch [[3DS_Development_Unit_Software#Dev_Menu|DevMenu]] installed on [[Flash_Filesystem|NAND]], the inserted cartridge and [[System_Settings|System Settings]].&lt;br /&gt;
&lt;br /&gt;
== CTRAging ==&lt;br /&gt;
&lt;br /&gt;
CTRAging appears to be a title used for hardware testing at the factory. This app also displays images, Chinese/Asian-language and text, both of which appear to be for system assembly/testing. CTRAging includes images for each 3DS model (which ones are included depends on the CTRAging version): original Old3DS, Old3DS XL, 2DS, regular New3DS, and New3DS XL. Some of the New3DS JPEG images have an EXIF last-modified timestamp of 2013, July-September.&lt;br /&gt;
&lt;br /&gt;
Full dumps of CTRAging have only been possible on the N3DS. A menu can be pulled up by holding START. A video of the main testing routine is available at: https://www.youtube.com/watch?v=JsOhYqnW9Ww&lt;br /&gt;
&lt;br /&gt;
On O3DS, [[ExeFS]]:/.code is consistently corrupted. It is unknown whether this is coincidential or whether CTRAging is destroyed intentionally during any part of the factory setup.&lt;br /&gt;
&lt;br /&gt;
The O3DS version has &#039;&#039;vastly&#039;&#039; more services access compared to the N3DS version.&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Factory_Setup&amp;diff=17594</id>
		<title>Factory Setup</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Factory_Setup&amp;diff=17594"/>
		<updated>2016-07-03T10:06:32Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: revamp page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Setup Process ==&lt;br /&gt;
&lt;br /&gt;
[[Nandrw/sys/updater.log]], [[Twln/sys/log/inspect.log]] and [[Twln/sys/log/product.log]] get written during Factory Setup. CTRAging appears to do the product.log writing.&lt;br /&gt;
&lt;br /&gt;
It is currently unknown how CTRAging is launched.&lt;br /&gt;
&lt;br /&gt;
== Titles ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Factory firmware is effectively a firmware that consists of NATIVE_FIRM, TWL_FIRM and AGB_FIRM, all system modules, TestMenu and CTRAging.&lt;br /&gt;
&lt;br /&gt;
On O3DS, all system titles have TID high 00040001. This may just be convention of a very old firmware since [[FIRM#NATIVE_FIRM|NATIVE_FIRM in the factory]] is extremely old, being over 20 versions behind 1.0. TestMenu also has this TID high.&lt;br /&gt;
&lt;br /&gt;
For N3DS, the title IDs match the [[Title_list|normal]] TID-highs. The entire N3DS factory firmware appears to be based on some firmware around 8.1. The TestMenu TID high was adjusted to match the TestMenu in the Nintendo CTR SDK as well.&lt;br /&gt;
&lt;br /&gt;
Most, but apparently not all, units ship with tickets for all factory titles in ticket.db, signed with retail keys. All factory titles for retail units use the retail [[NCCH]] secure crypto; the [[NCCH/Extended_Header#Access_Control_Info|NCCH access desc]] uses the retail keys for signatures, too. This suggests that at the point the factory firmware is booted for the first time, the [[OTP_Registers|one-time programmable (OTP) region]] has already been programmed or that the bootroms set the keys for retail by default.&lt;br /&gt;
&lt;br /&gt;
=== Title List ===&lt;br /&gt;
&lt;br /&gt;
It is currently unknown whether these are all factory titles known or if there may be more.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  TID-high&lt;br /&gt;
!  TID-low&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 00040000&lt;br /&gt;
| 0F980000&lt;br /&gt;
| CTRAging (&amp;quot;Test Program&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000002&lt;br /&gt;
| NATIVE_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000102&lt;br /&gt;
| TWL_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000202&lt;br /&gt;
| AGB_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001802&lt;br /&gt;
| codec sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001902&lt;br /&gt;
| dmnt sysmodule (Debugger sysmodule, see [[Title_list|here]])&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001A02&lt;br /&gt;
| dsp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001B02&lt;br /&gt;
| gpio sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001D02&lt;br /&gt;
| hid sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001E02&lt;br /&gt;
| i2c sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001F02&lt;br /&gt;
| mcu sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002102&lt;br /&gt;
| pdn sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002302&lt;br /&gt;
| spi sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002702&lt;br /&gt;
| csnd sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002802&lt;br /&gt;
| dlp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002A02&lt;br /&gt;
| mp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002B02&lt;br /&gt;
| ndm sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002C02&lt;br /&gt;
| nim sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002D02&lt;br /&gt;
| nwm sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002E02&lt;br /&gt;
| socket sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003102&lt;br /&gt;
| ps module&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003202&lt;br /&gt;
| friends sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003302&lt;br /&gt;
| ir sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003402&lt;br /&gt;
| boss sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008002&lt;br /&gt;
| [[NS]]&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008102&lt;br /&gt;
| TestMenu (O3DS)&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008A02&lt;br /&gt;
| [[ErrDisp|DevErrDi]]&lt;br /&gt;
|-&lt;br /&gt;
| 00040030&lt;br /&gt;
| 00008102&lt;br /&gt;
| TestMenu (some O3DS (?), all N3DS)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TestMenu ==&lt;br /&gt;
&lt;br /&gt;
TestMenu is similar to its [[3DS_Development_Unit_GUI#Test_Menu|Nintendo CTR SDK equivalent]].&lt;br /&gt;
&lt;br /&gt;
On O3DS factory TestMenu, there are two strings that do not appear to be part of the standard Nintendo CTR SDK TestMenu: &amp;quot;run TWL test app&amp;quot; and &amp;quot;run AGB test app.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On N3DS, TestMenu appears to be identical to the Nintendo CTR SDK TestMenu revision.&lt;br /&gt;
&lt;br /&gt;
No TestMenu version is capable of launching CTRAging directly: O3DS factory TestMenu can only launch [[3DS_Development_Unit_Software#Dev_Menu|DevMenu]] installed on [[Flash_Filesystem|NAND]], the inserted cartridge and the TWL/AGB test apps; N3DS factory TestMenu can only launch [[3DS_Development_Unit_Software#Dev_Menu|DevMenu]] installed on [[Flash_Filesystem|NAND]], the inserted cartridge and [[System_Settings|System Settings]].&lt;br /&gt;
&lt;br /&gt;
== CTRAging ==&lt;br /&gt;
&lt;br /&gt;
CTRAging appears to be a title used for hardware testing at the factory. This app also displays images, Chinese/Asian-language and text, both of which appear to be for system assembly/testing. CTRAging includes images for each 3DS model (which ones are included depends on the CTRAging version): original Old3DS, Old3DS XL, 2DS, regular New3DS, and New3DS XL. Some of the New3DS JPEG images have an EXIF last-modified timestamp of 2013, July-September.&lt;br /&gt;
&lt;br /&gt;
Full dumps of CTRAging have only been possible on the N3DS.&lt;br /&gt;
&lt;br /&gt;
On O3DS, [[ExeFS]]:/.code is consistently corrupted. It is unknown whether this is coincidential or whether CTRAging is destroyed intentionally during any part of the factory setup.&lt;br /&gt;
&lt;br /&gt;
The O3DS version has &#039;&#039;vastly&#039;&#039; more services access compared to the N3DS version.&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Talk:Services&amp;diff=15130</id>
		<title>Talk:Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Talk:Services&amp;diff=15130"/>
		<updated>2016-01-02T07:15:47Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: /* Service Command Notation */ Forgot my signature&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Service Command Notation =&lt;br /&gt;
&lt;br /&gt;
There seems to be some disagreement on how to notate commands on services. Some people do this: AMNet:OpenTicket (as done by the wiki for page naming), others do am:net::OpenTicket.&lt;br /&gt;
&lt;br /&gt;
I&#039;d like to propose that the wiki page naming continues with all-uppercase service names followed by initial uppercase port name (i.e., am:net -&amp;gt; AMNet, act:u -&amp;gt; ACTU, and so on), but that they are used in text to be more precise: am:net#OpenTicket, act:u#GetAccountDataBlock. This is loosely modeled after Ruby and Javadoc method notation. [[User:Infinicore|Infinicore]] ([[User talk:Infinicore|talk]]) 09:15, 2 January 2016 (CET)&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Talk:Services&amp;diff=15129</id>
		<title>Talk:Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Talk:Services&amp;diff=15129"/>
		<updated>2016-01-02T07:15:22Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: Service notation suggestion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Service Command Notation =&lt;br /&gt;
&lt;br /&gt;
There seems to be some disagreement on how to notate commands on services. Some people do this: AMNet:OpenTicket (as done by the wiki for page naming), others do am:net::OpenTicket.&lt;br /&gt;
&lt;br /&gt;
I&#039;d like to propose that the wiki page naming continues with all-uppercase service names followed by initial uppercase port name (i.e., am:net -&amp;gt; AMNet, act:u -&amp;gt; ACTU, and so on), but that they are used in text to be more precise: am:net#OpenTicket, act:u#GetAccountDataBlock. This is loosely modeled after Ruby and Javadoc method notation.&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=14398</id>
		<title>NIM Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=14398"/>
		<updated>2015-10-31T08:23:25Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: /* kagiya server */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= NIM user 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;
| Related to starting a sysupdate?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[NIMU:GetUpdateDownloadProgress|GetUpdateDownloadProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| [[NIMU:FinishTitlesInstall|FinishTitlesInstall]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| This obtains an event handle. Home Menu will check whether a system update is available when this event is triggered.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[NIMU:CheckSysupdateAvailable|CheckSysupdateAvailable]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| GetState&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B....&lt;br /&gt;
| GetSystemTitleHash (unique hash for each sysupdate titlelist)&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;
| 0x00060080&lt;br /&gt;
| The input at cmdreq[1-2] is an u64 titleID. This writes an u8 to cmdreply[2]. It&#039;s unknown what exactly the [[eShop]] application uses this for, it only uses this command for apps which are installed(checked via [[Application_Manager_Services|AM]] probably). In those cases, it seems the outval for this command(with result-code=0) is normally 0?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[NIMS:CheckSysupdateAvailableSOAP|CheckSysupdateAvailableSOAP]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0016020A&lt;br /&gt;
| [[NIMS:ListTitles|ListTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D0042&lt;br /&gt;
| [[NIMS:DownloadTickets|DownloadTickets]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420240&lt;br /&gt;
| [[NIMS:StartDownload|StartDownload]]&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;
&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 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;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=14397</id>
		<title>NIM Services</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=NIM_Services&amp;diff=14397"/>
		<updated>2015-10-31T08:22:59Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Services]]&lt;br /&gt;
= NIM user 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;
| Related to starting a sysupdate?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00020000&lt;br /&gt;
| [[NIMU:GetUpdateDownloadProgress|GetUpdateDownloadProgress]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0003....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00040000&lt;br /&gt;
| [[NIMU:FinishTitlesInstall|FinishTitlesInstall]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00050000&lt;br /&gt;
| This obtains an event handle. Home Menu will check whether a system update is available when this event is triggered.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0006....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0007....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008....&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00090000&lt;br /&gt;
| [[NIMU:CheckSysupdateAvailable|CheckSysupdateAvailable]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| GetState&lt;br /&gt;
|-&lt;br /&gt;
| 0x000B....&lt;br /&gt;
| GetSystemTitleHash (unique hash for each sysupdate titlelist)&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;
| 0x00060080&lt;br /&gt;
| The input at cmdreq[1-2] is an u64 titleID. This writes an u8 to cmdreply[2]. It&#039;s unknown what exactly the [[eShop]] application uses this for, it only uses this command for apps which are installed(checked via [[Application_Manager_Services|AM]] probably). In those cases, it seems the outval for this command(with result-code=0) is normally 0?&lt;br /&gt;
|-&lt;br /&gt;
| 0x000A0000&lt;br /&gt;
| [[NIMS:CheckSysupdateAvailableSOAP|CheckSysupdateAvailableSOAP]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x0016020A&lt;br /&gt;
| [[NIMS:ListTitles|ListTitles]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x002D0042&lt;br /&gt;
| [[NIMS:DownloadTickets|DownloadTickets]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x00420240&lt;br /&gt;
| [[NIMS:StartDownload|StartDownload]]&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;
&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 seed in binary form for any given title ID unde (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;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Factory_Setup&amp;diff=12884</id>
		<title>Factory Setup</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Factory_Setup&amp;diff=12884"/>
		<updated>2015-06-28T15:08:44Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: Going by the pattern of the other titles, 0004000100002302 is very likely spi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With certain 3DS nandimages, the following NCCH can be recovered from NAND(in some cases these are somewhat corrupted). In some cases, only 000400000F980000 is left, in other cases the NCCH headers for all of these are overwritten. &#039;&#039;All&#039;&#039; of these use the retail NCCH secure-crypto mode, the NCCH accessdesc uses the retail pubk too.&lt;br /&gt;
&lt;br /&gt;
Note that [[Nandrw/sys/updater.log]], [[Twln/sys/log/inspect.log]], and [[Twln/sys/log/product.log]] gets written during Factory Setup. CTRAging appears to do the product.log writing.&lt;br /&gt;
&lt;br /&gt;
CTRAging appears to be an app which is used for hardware testing at the factory. This app also displays images(including Chinese/Asian-language text) which appear to be for system assembly/testing. CTRAging includes images for each 3DS model(which ones are included depends on the CTRAging version): original Old3DS, Old3DS XL, 2DS, regular New3DS, and New3DS XL. Some of the New3DS JPEG images have an EXIF last-modified timestamp of 2013, July-September.&lt;br /&gt;
&lt;br /&gt;
Originally these titles(except for CTRAging) and the exheader dependency lists had TID-high 00040001, later that was changed to the [[Title_list|normal]] TID-highs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  TID-high&lt;br /&gt;
!  TID-low&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 00040000&lt;br /&gt;
| 0F980000&lt;br /&gt;
| CTRAging (&amp;quot;Test Program&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000002&lt;br /&gt;
| NATIVE_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000102&lt;br /&gt;
| TWL_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000202&lt;br /&gt;
| AGB_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001902&lt;br /&gt;
| dmnt (Debugger sysmodule, see [[Title_list|here]])&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001B02&lt;br /&gt;
| gpio sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001D02&lt;br /&gt;
| hid sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001E02&lt;br /&gt;
| i2c sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001F02&lt;br /&gt;
| mcu sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002102&lt;br /&gt;
| pdn sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002302&lt;br /&gt;
| (unknown, likely spi sysmodule)&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002702&lt;br /&gt;
| csnd sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002802&lt;br /&gt;
| dlp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002A02&lt;br /&gt;
| mp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002B02&lt;br /&gt;
| ndm sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002C02&lt;br /&gt;
| nim sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002D02&lt;br /&gt;
| nwm sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003102&lt;br /&gt;
| ps module&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003202&lt;br /&gt;
| friends sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003302&lt;br /&gt;
| ir sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003402&lt;br /&gt;
| boss sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008002&lt;br /&gt;
| [[NS]]&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008102&lt;br /&gt;
| TestMenu&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008A02&lt;br /&gt;
| [[ErrDisp|DevErrDi]]&lt;br /&gt;
|-&lt;br /&gt;
| 00040030&lt;br /&gt;
| 00008102&lt;br /&gt;
| TestMenu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Factory_Setup&amp;diff=12883</id>
		<title>Factory Setup</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Factory_Setup&amp;diff=12883"/>
		<updated>2015-06-28T14:49:10Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: nwm found&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With certain 3DS nandimages, the following NCCH can be recovered from NAND(in some cases these are somewhat corrupted). In some cases, only 000400000F980000 is left, in other cases the NCCH headers for all of these are overwritten. &#039;&#039;All&#039;&#039; of these use the retail NCCH secure-crypto mode, the NCCH accessdesc uses the retail pubk too.&lt;br /&gt;
&lt;br /&gt;
Note that [[Nandrw/sys/updater.log]], [[Twln/sys/log/inspect.log]], and [[Twln/sys/log/product.log]] gets written during Factory Setup. CTRAging appears to do the product.log writing.&lt;br /&gt;
&lt;br /&gt;
CTRAging appears to be an app which is used for hardware testing at the factory. This app also displays images(including Chinese/Asian-language text) which appear to be for system assembly/testing. CTRAging includes images for each 3DS model(which ones are included depends on the CTRAging version): original Old3DS, Old3DS XL, 2DS, regular New3DS, and New3DS XL. Some of the New3DS JPEG images have an EXIF last-modified timestamp of 2013, July-September.&lt;br /&gt;
&lt;br /&gt;
Originally these titles(except for CTRAging) and the exheader dependency lists had TID-high 00040001, later that was changed to the [[Title_list|normal]] TID-highs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  TID-high&lt;br /&gt;
!  TID-low&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 00040000&lt;br /&gt;
| 0F980000&lt;br /&gt;
| CTRAging (&amp;quot;Test Program&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000002&lt;br /&gt;
| NATIVE_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000102&lt;br /&gt;
| TWL_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00000202&lt;br /&gt;
| AGB_FIRM&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001902&lt;br /&gt;
| dmnt (Debugger sysmodule, see [[Title_list|here]])&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001B02&lt;br /&gt;
| gpio sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001D02&lt;br /&gt;
| hid sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001E02&lt;br /&gt;
| i2c sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00001F02&lt;br /&gt;
| mcu sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002102&lt;br /&gt;
| pdn sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002302&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002702&lt;br /&gt;
| csnd sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002802&lt;br /&gt;
| dlp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002A02&lt;br /&gt;
| mp sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002B02&lt;br /&gt;
| ndm sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002C02&lt;br /&gt;
| nim sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00002D02&lt;br /&gt;
| nwm sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003102&lt;br /&gt;
| ps module&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003202&lt;br /&gt;
| friends sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003302&lt;br /&gt;
| ir sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00003402&lt;br /&gt;
| boss sysmodule&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008002&lt;br /&gt;
| [[NS]]&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008102&lt;br /&gt;
| TestMenu&lt;br /&gt;
|-&lt;br /&gt;
| 00040001&lt;br /&gt;
| 00008A02&lt;br /&gt;
| [[ErrDisp|DevErrDi]]&lt;br /&gt;
|-&lt;br /&gt;
| 00040030&lt;br /&gt;
| 00008102&lt;br /&gt;
| TestMenu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Configuration_Memory&amp;diff=12875</id>
		<title>Configuration Memory</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Configuration_Memory&amp;diff=12875"/>
		<updated>2015-06-23T17:08:15Z</updated>

		<summary type="html">&lt;p&gt;Infinicore: /* Shared Memory Page For ARM11 Processes */ Research 0x1FF81066: wifi signal strength&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= ARM11 Kernel Configuration Memory =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  NAME&lt;br /&gt;
!  PROCESS VIRTUAL ADDRESS&lt;br /&gt;
!  WIDTH&lt;br /&gt;
|-&lt;br /&gt;
| KERNEL_?&lt;br /&gt;
| 0x1FF80000&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| KERNEL_VERSIONREVISION&lt;br /&gt;
| 0x1FF80001&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| KERNEL_VERSIONMINOR&lt;br /&gt;
| 0x1FF80002&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| KERNEL_VERSIONMAJOR&lt;br /&gt;
| 0x1FF80003&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| UPDATEFLAG&lt;br /&gt;
| 0x1FF80004&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| NSTID&lt;br /&gt;
| 0x1FF80008&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| SYSCOREVER&lt;br /&gt;
| 0x1FF80010&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| UNITINFO&lt;br /&gt;
| 0x1FF80014&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| BOOT_FIRM&lt;br /&gt;
| 0x1FF80015&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PREV_FIRM&lt;br /&gt;
| 0x1FF80016&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| KERNEL_CTRSDKVERSION&lt;br /&gt;
| 0x1FF80018&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| APPMEMTYPE&lt;br /&gt;
| 0x1FF80030&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| APPMEMALLOC&lt;br /&gt;
| 0x1FF80040&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| SYSMEMALLOC&lt;br /&gt;
| 0x1FF80044&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| BASEMEMALLOC&lt;br /&gt;
| 0x1FF80048&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| FIRM_?&lt;br /&gt;
| 0x1FF80060&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| FIRM_VERSIONREVISION&lt;br /&gt;
| 0x1FF80061&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| FIRM_VERSIONMINOR&lt;br /&gt;
| 0x1FF80062&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| FIRM_VERSIONMAJOR&lt;br /&gt;
| 0x1FF80063&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| FIRM_SYSCOREVER&lt;br /&gt;
| 0x1FF80064&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| FIRM_CTRSDKVERSION&lt;br /&gt;
| 0x1FF80068&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This memory page is [[Memory_layout|read-only]] for ARM11 processes. This memory and the kernel code for it only exists under NATIVE_FIRM/SAFE_MODE_FIRM.&lt;br /&gt;
&lt;br /&gt;
The FIRM_* fields are by default identical to the KERNEL_* fields. However, the FIRM_* fields can be overridden via FIRM-launch parameters, see [[FIRM|here]].&lt;br /&gt;
&lt;br /&gt;
Besides mem-region related fields, the data written here by the old 3DS/new 3DS kernels is identical.&lt;br /&gt;
&lt;br /&gt;
= Shared Memory Page For ARM11 Processes =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  NAME&lt;br /&gt;
!  PROCESS VIRTUAL ADDRESS&lt;br /&gt;
!  WIDTH&lt;br /&gt;
|-&lt;br /&gt;
| bit0 selects DATETIME_0 or DATETIME_1.&lt;br /&gt;
| 0x1FF81000&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| RUNNING_HW (1=product, 2=devboard, 3=debugger, 4=capture)&lt;br /&gt;
| 0x1FF81004&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| MCU_HW_INFO&lt;br /&gt;
| 0x1FF81005&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| DATETIME_0 {(u64)MillisecondsSinceFirstJan1900,(u64)SystemTickLastTimeThisWasUpdated,(u32)unk,(u32)unk,(u32)unk,(u32)unk}&lt;br /&gt;
| 0x1FF81020&lt;br /&gt;
| 32&lt;br /&gt;
|-&lt;br /&gt;
| DATETIME_1&lt;br /&gt;
| 0x1FF81040&lt;br /&gt;
| 32&lt;br /&gt;
|-&lt;br /&gt;
| WIFI_MACADDR&lt;br /&gt;
| 0x1FF81060&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| WIFI_LINKLEVEL Ranges from 0-3; 0 stands for no or a poor network connection; 3 stands for a good connection. This corresponds with the number of wifi bars displayed by [[Home Menu]].&lt;br /&gt;
| 0x1FF81066&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| WIFI_? Likely wifi hardware related, NWM module initializes this. Regular Old3DS value = 0x00, regular New3DS value = 0x02.&lt;br /&gt;
| 0x1FF81067&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 3D_SLIDERSTATE&lt;br /&gt;
| 0x1FF81080&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 3D_LEDSTATE&lt;br /&gt;
| 0x1FF81084&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| BATTERY_LEDSTATE&lt;br /&gt;
| 0x1FF81085&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| MENUTID&lt;br /&gt;
| 0x1FF810A0&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| ACTIVEMENUTID&lt;br /&gt;
| 0x1FF810A8&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| Signed? Headsets connected?&lt;br /&gt;
| 0x1FF810C0&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This memory page is normally read-only for ARM11 processes, write-access is [[Memory_layout|determined]] by the process exheader kernel &amp;quot;shared page writing&amp;quot; flag. This memory only exists under NATIVE_FIRM/SAFE_MODE_FIRM.&lt;br /&gt;
&lt;br /&gt;
= ARM11 Kernel Config Fields =&lt;br /&gt;
&lt;br /&gt;
== 0x1FF80000 / 0x1FF80060 ==&lt;br /&gt;
Unknown, this is normally value 0.&lt;br /&gt;
&lt;br /&gt;
== KERNEL_VERSIONREVISION / FIRM_VERSIONREVISION ==&lt;br /&gt;
This is the version-revision for the currently running [[FIRM]].&lt;br /&gt;
&lt;br /&gt;
== KERNEL_VERSIONMINOR ==&lt;br /&gt;
This is the version-minor from ((title-version &amp;amp; 0x3FF) &amp;gt;&amp;gt; 4), for the currently running [[FIRM]]. The values from KERNEL_VERSIONMINOR and KERNEL_VERSIONMAJOR can be stored in applications&#039; [[NCCH#CXI|CXI]] exheader.&lt;br /&gt;
&lt;br /&gt;
== FIRM_VERSIONMINOR ==&lt;br /&gt;
This is the same as KERNEL_VERSIONMINOR. After [[AM:InstallNATIVEFIRM]] checks FIRM_SYSCOREVER, [[AM:InstallNATIVEFIRM]] then compares FIRM_VERSIONMINOR with the NATIVE_FIRM ((title-version &amp;amp; 0x3FF) &amp;gt;&amp;gt; 4), when the latter is larger than FIRM_VERSIONMINOR [[AM:InstallNATIVEFIRM]] will trigger a [[FIRM]] install.&lt;br /&gt;
&lt;br /&gt;
== KERNEL_VERSIONMAJOR / FIRM_VERSIONMAJOR ==&lt;br /&gt;
This is the version-major for the currently running [[FIRM]].&lt;br /&gt;
&lt;br /&gt;
== UPDATEFLAG ==&lt;br /&gt;
Normally this flag is zero. When the ARM11 kernel is booting on non-factory FIRM it will set this flag to 1, when bit0 from the data which field 0x1FF80016 is loaded from is clear, if the following [[PAD]] buttons are pressed: L, R, A, Up. When this flag is set, [[NS]] will launch the [[System_Settings#System_Updater|System Updater]] title instead of [[Home Menu]].&lt;br /&gt;
&lt;br /&gt;
== NSTID ==&lt;br /&gt;
This field contains the titleID of the first title to launch from CTR-NAND after the [[FIRM]] system processes are loaded. The [[Process_Manager_Services|PM]] module launches this title. If this field titleID is all-zero, the system will not attempt to launch the title. The regular ARM11 kernel sets this to the regular [[NS]] titleID, while the SAFE_MODE ARM11 kernel sets this to the SAFE_MODE NS titleID. The factory FIRM ARM11-kernel sets this to the NS TID from [[Factory_Setup|here]].&lt;br /&gt;
&lt;br /&gt;
== SYSCOREVER ==&lt;br /&gt;
This field is initialized by the ARM11 kernel, this is the programID-low of the running FIRM. When launching [[NCCH#CXI|CXIs]], the value stored here must match the core version field stored in the CXI exheader. If they do not match, the [[Process_Manager_Services|PM]] module will refuse to launch the ARM11 process.&lt;br /&gt;
&lt;br /&gt;
With [[Factory_Setup|factory]] NATIVE_FIRM, this is set to 0x0, even though the FIRM programID-low is 0x2. However, the factory system-titles have core-version set to 0x2. Hence, this config-mem SYSCOREVER field might not be used by factory system processes?&lt;br /&gt;
&lt;br /&gt;
== FIRM_SYSCOREVER ==&lt;br /&gt;
Normally this is the same as SYSCOREVER. This used by [[AM:InstallNATIVEFIRM]] for comparing with the NATIVE_FIRM titleID-low. When the low u8 from the NATIVE_FIRM titleID-low is larger than FIRMSYSCOREVER, [[AM:InstallNATIVEFIRM]] will trigger FIRM installing. When that u8 is not larger than FIRM_SYSCOREVER, and these two values don&#039;t match, [[AM:InstallNATIVEFIRM]] will return an error.&lt;br /&gt;
&lt;br /&gt;
== UNITINFO ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Bit&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Clear for developer unit, set for retail.(See 0x1FF80015)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Set for debug units&lt;br /&gt;
|-&lt;br /&gt;
| 2-7&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bit1 in this field is set by the ARM11 kernel when ARM debug CP14 DSCR bit14 is set. [[NS]] loads the menu TID from MENUTID when bits 1-7 of this field are clear. [[ErrDisp]] will display development error info when bit0 is clear.&lt;br /&gt;
&lt;br /&gt;
== 0x1FF80015 ==&lt;br /&gt;
The ARM11 loads this value from 0x1FFFFFF0+1 during startup, which is written by the ARM9 during ARM9&amp;lt;&amp;gt;ARM11 kernel sync.&lt;br /&gt;
&lt;br /&gt;
When this field is zero, bit0 for UNITINFO is set for retail. When this field is non-zero, bit0 for UNITINFO is clear for dev/debug units, and an ARM11 kernel state flag which enables debugging is set. Bit1 means JTAG connected.&lt;br /&gt;
&lt;br /&gt;
== 0x1FF80016 ==&lt;br /&gt;
The ARM11 loads this value from 0x1FFFFFF0+2 during startup, which is written by the ARM9 during ARM9&amp;lt;&amp;gt;ARM11 kernel sync.&lt;br /&gt;
&lt;br /&gt;
This originates from the low 8-bits of register [[CONFIG|0x10010000]]. When bit0 is set, the ARM11 kernel will not set the UPDATEFLAG to value 1.&lt;br /&gt;
&lt;br /&gt;
== KERNEL_CTRSDKVERSION / FIRM_CTRSDKVERSION ==&lt;br /&gt;
This is the CTR-SDK version which was used to build the currently running [[FIRM]].&lt;br /&gt;
&lt;br /&gt;
== APPMEMTYPE ==&lt;br /&gt;
The value of this field determines the size for APPMEMALLOC. The retail type(value0) is used when the type is not values 2-5. See [[Memory_layout]] for the table of values for this and the mem-region sizes.&lt;br /&gt;
&lt;br /&gt;
== APPMEMALLOC ==&lt;br /&gt;
This contains the total size of the memory that can be allocated with the APPLICATION [[SVC|memory-region]], see [[Memory_layout|here]].&lt;br /&gt;
&lt;br /&gt;
== SYSMEMALLOC ==&lt;br /&gt;
Same as APPMEMALLOC except for the SYSTEM mem-region, see [[Memory_layout|here]].&lt;br /&gt;
&lt;br /&gt;
== BASEMEMALLOC ==&lt;br /&gt;
Same as APPMEMALLOC except for the BASE mem-region, see [[Memory_layout|here]].&lt;br /&gt;
&lt;br /&gt;
= Shared Memory Page Fields =&lt;br /&gt;
&lt;br /&gt;
== WIFI_MACADDR ==&lt;br /&gt;
This is the WiFi MAC address for the 3DS. This is initialized by the [[NWM_Services|NWM]] module, it&#039;s unknown where the MAC address written here was originally loaded from.&lt;br /&gt;
&lt;br /&gt;
== 3D_SLIDERSTATE ==&lt;br /&gt;
This float contains the state of the 3D slider. The range of this float is value 0.0f for &amp;quot;off&amp;quot;, and 1.0f for max.&lt;br /&gt;
&lt;br /&gt;
This is written/updated by [[HID_Services|HID]] module.&lt;br /&gt;
&lt;br /&gt;
== 3D_LEDSTATE ==&lt;br /&gt;
When non-zero, the 3D LED is disabled. See [[GSPGPU:SetLedForceOff]].&lt;br /&gt;
&lt;br /&gt;
== MENUTID ==&lt;br /&gt;
Unknown, contains the menu TID (used by [[NS]])&lt;br /&gt;
&lt;br /&gt;
== ACTIVEMENUTID ==&lt;br /&gt;
This contains the titleID of the currently running menu launched by [[NS]].&lt;br /&gt;
&lt;br /&gt;
= NATIVE_FIRM Versions =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  System version&lt;br /&gt;
!  old 3DS title version&lt;br /&gt;
!  old 3DS hex title contentID&lt;br /&gt;
!  Kernel/FIRM version (old 3DS/new 3DS)&lt;br /&gt;
|-&lt;br /&gt;
| [[Factory_Setup|Factory]] FIRM (titleID 00040001-00000002)&lt;br /&gt;
| v0&lt;br /&gt;
| 00&lt;br /&gt;
| 2.3-0&lt;br /&gt;
|-&lt;br /&gt;
| [[1.0.0-0|1.0.0]]&lt;br /&gt;
| v432&lt;br /&gt;
| 00&lt;br /&gt;
| 2.27-0&lt;br /&gt;
|-&lt;br /&gt;
| [[1.1.0-1|1.1.0]]&lt;br /&gt;
| v1472&lt;br /&gt;
| 02&lt;br /&gt;
| 2.28-0&lt;br /&gt;
|-&lt;br /&gt;
| [[2.0.0-2|2.0.0]]&lt;br /&gt;
| v2516&lt;br /&gt;
| 09&lt;br /&gt;
| 2.29-7&lt;br /&gt;
|-&lt;br /&gt;
| [[2.1.0-3|2.1.0]]&lt;br /&gt;
| v3553&lt;br /&gt;
| 0B&lt;br /&gt;
| 2.30-18&lt;br /&gt;
|-&lt;br /&gt;
| [[2.2.0-X|2.2.0]]&lt;br /&gt;
| v4595&lt;br /&gt;
| 0F&lt;br /&gt;
| 2.31-40&lt;br /&gt;
|-&lt;br /&gt;
| [[3.0.0-5|3.0.0]]&lt;br /&gt;
| v5647&lt;br /&gt;
| 18&lt;br /&gt;
| 2.32-15&lt;br /&gt;
|-&lt;br /&gt;
| [[4.0.0-7|4.0.0]]&lt;br /&gt;
| v6677&lt;br /&gt;
| 1D&lt;br /&gt;
| 2.33-4&lt;br /&gt;
|-&lt;br /&gt;
| [[4.1.0-8|4.1.0]]&lt;br /&gt;
| v7712&lt;br /&gt;
| 1F&lt;br /&gt;
| 2.34-0&lt;br /&gt;
|-&lt;br /&gt;
| [[5.0.0-11|5.0.0]]&lt;br /&gt;
| v8758&lt;br /&gt;
| 25&lt;br /&gt;
| 2.35-6&lt;br /&gt;
|-&lt;br /&gt;
| [[5.1.0-11|5.1.0]]&lt;br /&gt;
| v9792&lt;br /&gt;
| 26&lt;br /&gt;
| 2.36-0&lt;br /&gt;
|-&lt;br /&gt;
| [[6.0.0-11|6.0.0]]&lt;br /&gt;
| v10833&lt;br /&gt;
| 29&lt;br /&gt;
| 2.37-0&lt;br /&gt;
|-&lt;br /&gt;
| [[6.1.0-11|6.1.0]]&lt;br /&gt;
| v11872&lt;br /&gt;
| 2A&lt;br /&gt;
| 2.38-0&lt;br /&gt;
|-&lt;br /&gt;
| [[7.0.0-13|7.0.0]]&lt;br /&gt;
| v12916&lt;br /&gt;
| 2E&lt;br /&gt;
| 2.39-4&lt;br /&gt;
|-&lt;br /&gt;
| [[7.2.0-17|7.2.0]]&lt;br /&gt;
| v13956&lt;br /&gt;
| 30&lt;br /&gt;
| 2.40-0&lt;br /&gt;
|-&lt;br /&gt;
| [[8.0.0-18|8.0.0]]&lt;br /&gt;
| v15047&lt;br /&gt;
| 37&lt;br /&gt;
| 2.44-6&lt;br /&gt;
|-&lt;br /&gt;
| [[8.1.0-0_New3DS]]&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
| 2.45-5&lt;br /&gt;
|-&lt;br /&gt;
| [[9.0.0-20|9.0.0]]&lt;br /&gt;
| v17120&lt;br /&gt;
| 38&lt;br /&gt;
| 2.46-0&lt;br /&gt;
|-&lt;br /&gt;
| [[9.3.0-21|9.3.0]]&lt;br /&gt;
| v18182&lt;br /&gt;
| 3F&lt;br /&gt;
| 2.48-3&lt;br /&gt;
|-&lt;br /&gt;
| [[9.5.0-22|9.5.0]]&lt;br /&gt;
| v19216&lt;br /&gt;
| 40&lt;br /&gt;
| 2.49-0&lt;br /&gt;
|-&lt;br /&gt;
| [[9.6.0-24|9.6.0]]&lt;br /&gt;
| v20262&lt;br /&gt;
| 49&lt;br /&gt;
| 2.50-1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above kernel/FIRM versions are in the format: &amp;lt;KERNEL_VERSIONMAJOR&amp;gt;.&amp;lt;KERNEL_VERSIONMINOR&amp;gt;-&amp;lt;KERNEL_VERSIONREVISION&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Infinicore</name></author>
	</entry>
</feed>