Factory Setup

Factory Setup

Setup Process #

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.

It is currently unknown how CTRAging is launched (Although they may use the ntrboot on the bootrom).

Titles #

Overview #

Factory firmware is effectively a firmware that consists of NATIVE_FIRM, TWL_FIRM and AGB_FIRM, all system modules, TestMenu and CTRAging.

On O3DS, all system titles have TID high 00040001. This may just be convention of a very old firmware since NATIVE_FIRM in the factory is extremely old, being over 20 versions behind 1.0. TestMenu also has this TID high.

For N3DS, the title IDs match the 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.

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 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 one-time programmable (OTP) region has already been programmed or that the bootroms set the keys for retail by default.

Title List #

It is currently unknown whether these are all factory titles known or if there may be more.

TID-highTID-lowDescription
000400000F980000CTRAging (“Test Program”)
0004000100000002NATIVE_FIRM
0004000100000102TWL_FIRM
0004000100000202AGB_FIRM
0004000100001802codec sysmodule
0004000100001902dmnt sysmodule (Debugger sysmodule, see here)
0004000100001A02dsp sysmodule
0004000100001B02gpio sysmodule
0004000100001D02hid sysmodule
0004000100001E02i2c sysmodule
0004000100001F02mcu sysmodule
0004000100002102pdn sysmodule
0004000100002302spi sysmodule
0004000100002702csnd sysmodule
0004000100002802dlp sysmodule
0004000100002A02mp sysmodule
0004000100002B02ndm sysmodule
0004000100002C02nim sysmodule
0004000100002D02nwm sysmodule
0004000100002E02socket sysmodule
0004000100003102ps module
0004000100003202friends sysmodule
0004000100003302ir sysmodule
0004000100003402boss sysmodule
0004000100008002NS
0004000100008102TestMenu (O3DS)
0004000100008A02DevErrDi
0004003000008102TestMenu (some O3DS (?), all N3DS)

TestMenu #

TestMenu is similar to its Nintendo CTR SDK equivalent.

On O3DS factory TestMenu, there are two strings that do not appear to be part of the standard Nintendo CTR SDK TestMenu: “run TWL test app” and “run AGB test app.”

On N3DS, TestMenu appears to be identical to the Nintendo CTR SDK TestMenu revision.

No TestMenu version is capable of launching CTRAging directly: O3DS factory TestMenu can only launch DevMenu installed on NAND, the inserted cartridge and the TWL/AGB test apps; N3DS factory TestMenu can only launch DevMenu installed on NAND, the inserted cartridge and System Settings.

CTRAging #

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.

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=0nLiYZdn5Wg

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.

The O3DS version has vastly more services access compared to the N3DS version.