---
layout: devinfo
app: TwlSystemUpdater
preview: /preview.png
---
<i>Some screenshots and information are from <a href="https://wiki.raregamingdump.ca/index.php/SystemUpdater">Rare Gaming Dump.</a></i>
<br><br>
Twl SystemUpdater is a tool used to update DSi development hardware such as the IS-TWL-DEBUGGER or a panda. This does not work on retail units, causing the same <code>-2011</code> error as <a href="/dsidev/twlnmenu.html">TwlNmenu</a> and bricking the console.
<h2>TADs in NitroFS</h2>
Twl SystemUpdater works by loading a set of firmware TADs and <a href="https://dsibrew.org/wiki/Nand:/shared1/TWLCFG0.dat" target="_blank">TWLCFG0.dat</a>/<a href="https://dsibrew.org/wiki/Nand:/shared1/TWLCFG1.dat" target="_blank">TWLCFG1.dat</a> from NitroFS to install onto the target hardware. The updaters are multi-region, so each one contains full sets of firmware TADs for every region. If a different region is installed, HWInfo will be updated accordingly. The TADs are sorted into three main folders.
<br><br>
<b><code>NitroFS:/data/debugger/</code></b><br>
These TADs are for the IS-TWL-DEBUGGER.<br>
<code> - HNAx</code>, Home menu<br>
<code> - HNBx</code>, System settings (this was removed in v1.2 of the SystemUpdater)<br><br>
<b><code>NitroFS:/data/standalone/</code></b><br>
These TADs are for the DSi panda unit.<br>
<code> - HNAx</code>, Home menu<br>
<code> - HNBx</code>, System settings (this was removed in v1.2 of the SystemUpdater)<br><br>
<b><code>NitroFS:/data/common/</code></b><br>
These are TADs that are common between both the IS-TWL-DEBUGGER and panda units.<br>
<code> - HNIx</code>, Nintendo DSi Camera<br>
<code> - HNKx</code>, Nintendo DSi Sound<br>
<code> - HNLx</code>, Version Data<br>
<code> - HNCx</code>, WiFi Firmware<br>
<code> - HNDx</code>, DS Download Play<br>
<code> - HNEx</code>, PictoChat<br>
<code> - HNHx</code>, Nintendo DS Cart Whitelist<br>
<code> - <a href="/dsidev/nandfiler.html">NandFiler</a></code> (optional install)<br>
<code> - <a href="/dsidev/twlnmenu.html">TwlNmenu</a></code> (optional install)<br><br>
The SystemUpdater chooses whether to install from the <code>debugger</code>or <code>standalone</code> folder based off of the RAM size. 16 MB is TWL CONSOLE (panda and IS-TWL-CAPTURE), while 32 MB is IS_TWL_DEBUGGER.<br><i> - Source: <a href="https://wiki.raregamingdump.ca/index.php/SystemUpdater" target="_blank">RGD</a></i>
<br><br>
All the TAD files in NitroFS have been created with <code>maketad_updater</code>, a modified version of <a href="/dsidev/man/maketad.html" target="_blank">maketad</a>. Instead of using the normal Wii development key for encryption, <code>maketad_updater</code> uses the debugger common key (<code>A2FDDDF2E423574AE7ED8657B5AB19D3</code>). As a result these TADs can't be installed with TwlNmenu and can only be decrypted with {{ site.decrypt_tad }}.<br><br>
<h2>Additional stage2 file</h2>
There another file in NitroFS called <code>menu_launcher.nand</code>. This is the stage2 bootloader used in every development DSi. 
<h2>Source code</h2>
There are multiple versions of the SystemUpdater source code in TwlIPL.<br><br>
<ul>
  <li><a href="{{ site.twlipl }}/tree/trunk/build/systemMenu_tools/SystemUpdater">SystemUpdater</a>: a limited SystemUpdater which is only able to install the region free/prototype firmware.</li>
  <li><a href="{{ site.twlipl }}/tree/trunk/build/systemMenu_tools/SystemUpdaterRegionSelect">SystemUpdaterRegionSelect</a>: the SDK release of the SystemUpdater which allows installing multiple regions.</li>
  <li><a href="{{ site.twlipl }}/tree/trunk/build/tests/CustomSystemUpdater">CustomSystemUpdater</a>: similar to the limited SystemUpdater, but it allows for installing different single regions.</li>
</ul>
In an <a href="{{ site.twlipl }}/tree/670a75721d822ccce8502451b15d73ef1ba16d93/build/systemMenu_RED/SystemUpdater/data">old commit</a> of the SystemUpdater's source code there is a complete v1206-5614 firmware.
<h2>Changelog</h2>
This is from an official readme included with the Twl SystemUpdater. You can read the full version <a href="man/twlsystemupdater.html" target="_blank">here</a>.<br><br>
<table class="history twl">
	<tr>
		<th class="twl">Revision Date</th>
		<th class="twl">Version</th>
		<th class="twl">Updated Content</th>
	</tr>
	<tr>
		<td class="date twl">2010/03/04</td>
		<td class="version twl">1.4a</td>
		<td class="twl">
			<CODE>TwlNmenu</CODE> and <CODE>NandFiler</CODE> were updated to the version included in TWL-SDK 5.4.<br>［Korean version only] DSi camera was updated.<br>［Korean version only] Updated version data to Ver 1.4.1K_dev.<br>［Chinese version only] Updated version data to Ver 1.4.1C_dev.
		</td>
	</tr>
	<tr>
		<td class="date twl">2009/08/17</td>
		<td class="version twl">1.4</td>
		<td class="twl">
			Added support for DSi Menu version 1.4. Updated <CODE>TwlNmenu</CODE> and <CODE>NandFiler</CODE> to versions bundled with TWL-SDK 5.3. Added China and Korea to the selectable regions.
		</td>
	</tr>
	<tr>
		<td class="date twl">2009/06/30</td>
		<td class="version twl">1.3a</td>
		<td class="twl">Added an option to update without installing <CODE>TwlNmenu</CODE> or <CODE>NandFiler</CODE>.</td>
	</tr>
	<tr>
		<td class="date twl">2009/04/28</td>
		<td class="version twl">1.3</td>
		<td class="twl">Added support for DSi Menu version 1.3. Updated <CODE>TwlNmenu</CODE> and <CODE>NandFiler</CODE> to versions bundled with TWL-SDK 5.1 patch 4.</td>
	</tr>
	<tr>
		<td class="date twl">2009/01/15</td>
		<td class="version twl">1.2</td>
		<td class="twl">Added support for DSi Menu version 1.2. Updated <CODE>TwlNmenu</CODE> and <CODE>NandFiler</CODE> to versions bundled with TWL-SDK 5.1 PR2.</td>
	</tr>
	<tr>
		<td class="date twl">2008/11/13</td>
		<td class="version twl">1.0c</td>
		<td class="twl">DSi Camera, DSi Sound, and the TWL-SDK tools <CODE>TwlNmenu</CODE> and <CODE>NandFiler</CODE> are now all installed by default.</td>
	</tr>
	<tr>
		<td class="date twl">2008/10/08</td>
		<td class="version twl">1.0b</td>
		<td class="twl">Added support for DSi Menu version 1.0.</td>
	</tr>
</table>
        <div class="screenshot">
        <img src="{{ site.imgdir }}{{ page.app }}/screenshots/region_select.png">
        <img src="{{ site.imgdir }}{{ page.app }}/screenshots/updating.png">
        <img src="{{ site.imgdir }}{{ page.app }}/screenshots/update_success.png">
        <img src="{{ site.imgdir }}{{ page.app }}/screenshots/update_fail.png"></div>
