"message": "This website uses cookies to display the current guide progress on the sidebar and otherwise enhance the site."
}
})});
</script>
<!-- end custom head snippets -->
</head>
<bodyclass="layout--single">
<navclass="skip-links">
<ul>
<li><ahref="#site-nav"class="screen-reader-shortcut">Skip to primary navigation</a></li>
<li><ahref="#main"class="screen-reader-shortcut">Skip to content</a></li>
<li><ahref="#footer"class="screen-reader-shortcut">Skip to footer</a></li>
</ul>
</nav>
<!--[if lt IE 9]>
<divclass="notice--danger align-center"style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <ahref="https://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
<![endif]-->
<divclass="masthead">
<divclass="masthead__inner-wrap">
<divclass="masthead__menu">
<navid="site-nav"class="greedy-nav">
<!-- <a class="site-title" href="/">
3DS Hacks Guide
</a>
-->
<ulclass="visible-links">
<!-- modified to use multilang, guide-specific -->
<p>In order to exploit the SAFE_MODE firmware of our system, we need to inject an exploited WiFi profile.</p>
<p>To accomplish this, we can use the Download Play functionality of the game Mario Kart 7, using a 3DS with custom firmware already installed along with a custom game plugin.</p>
<p>This custom plugin will send a hacked payload to an unhacked console, which then exploits the system in order to inject the exploited WiFi profile into your connections list.</p>
<p>Once the WiFi profile has been injected, we will use SAFE_MODE, which is a recovery feature present on all 3DS consoles, to activate the exploited WiFi profile.</p>
<p>For a more technical explanation, see the following links for information on the kartdlphax and unSAFE_MODE exploits: <ahref="https://github.com/PabloMK7/kartdlphax">kartdlphax</a>, <ahref="https://github.com/zoogie/unSAFE_MODE/">unSAFE_MODE</a>.</p>
<p>In order to follow these instructions, you will need the following:</p>
<ul>
<li>A second 3DS with custom firmware (the <strong>source 3DS</strong>) that is the same region as the 3DS you are trying to modify (the <strong>target 3DS</strong>)
<ul>
<li>The consoles must be USA, JPN, or EUR region consoles</li>
<li>The latest release of <ahref="https://github.com/LumaTeam/Luma3DS/releases/latest">Luma3DS</a> (the Luma3DS <codeclass="language-plaintext highlighter-rouge">.zip</code> file)</li>
<li>The latest release of <ahref="https://github.com/zoogie/unSAFE_MODE/releases/latest">unSAFE_MODE</a> (the RELEASE <codeclass="language-plaintext highlighter-rouge">.zip</code> file)</li>
<p>In this section, you will see whether your shoulder buttons are working on your console. This will determine which method you will follow on the next page.</p>
<pclass="notice--warning">If the camera does not open, you cannot follow this method. If this is the case, join <ahref="https://discord.gg/MWxPgEp">Nintendo Homebrew on Discord</a> and ask, in English, for help.</p>
<li>Copy <codeclass="language-plaintext highlighter-rouge">boot.firm</code> from the Luma3DS <codeclass="language-plaintext highlighter-rouge">.zip</code> to the root of the <strong>source 3DS</strong>’s SD card, replacing any existing file
<li>The root of the SD card refers to the initial directory on your SD card where you can see the Nintendo 3DS folder, but are not inside of it</li>
</ul>
</li>
<li>Copy kartdlphax’s <codeclass="language-plaintext highlighter-rouge">plugin.3gx</code> to the following directory on the <strong>source 3DS</strong>’s SD card, depending on the <strong>region of your copy of Mario Kart 7</strong>:
<li>Create the <codeclass="language-plaintext highlighter-rouge">plugins</code> and <codeclass="language-plaintext highlighter-rouge">00040000...</code> folders if they do not already exist</li>
</ul>
</li>
<li>Eject the SD card and put it in the <strong>source 3DS</strong></li>
<p>In this section, you will copy the files needed to trigger the unSAFE_MODE exploit onto your target 3DS (the 3DS that you are trying to modify)’s SD card.</p>
<ol>
<li>Insert the SD card of your <strong>target 3DS</strong> in your computer</li>
<li>Copy <codeclass="language-plaintext highlighter-rouge">boot.firm</code> and <codeclass="language-plaintext highlighter-rouge">boot.3dsx</code> from the Luma3DS <codeclass="language-plaintext highlighter-rouge">.zip</code> to the root of the <strong>target 3DS’s</strong> SD card</li>
<li>Copy <codeclass="language-plaintext highlighter-rouge">boot9strap.firm</code> and <codeclass="language-plaintext highlighter-rouge">boot9strap.firm.sha</code> from the RELEASE <codeclass="language-plaintext highlighter-rouge">.zip</code> to the <codeclass="language-plaintext highlighter-rouge">/boot9strap/</code> folder on your SD card</li>
<li>Copy <codeclass="language-plaintext highlighter-rouge">SafeB9SInstaller.bin</code> from the SafeB9SInstaller <codeclass="language-plaintext highlighter-rouge">.zip</code> to the root of your SD card</li>
<li>Copy <codeclass="language-plaintext highlighter-rouge">usm.bin</code> from the RELEASE <codeclass="language-plaintext highlighter-rouge">.zip</code> to the root of your SD card</li>
<li>Copy <codeclass="language-plaintext highlighter-rouge">slotTool.3dsx</code> from the <codeclass="language-plaintext highlighter-rouge">slotTool</code> folder inside the RELEASE <codeclass="language-plaintext highlighter-rouge">.zip</code> to the <codeclass="language-plaintext highlighter-rouge">/3ds/</code> folder on your SD card</li>
<p>In this section, you will use Download Play to transfer the exploit data from the source 3DS to the target 3DS, which can be used to overwrite your Wi-Fi slots with hacked data. Your Wi-Fi connection settings will be temporarily overwritten while the exploit is active.</p>
<ol>
<li>Power on the <strong>source 3DS</strong>
<ul>
<li>If you are prompted to set up Luma3DS, just press START to save the configuration</li>
</ul>
</li>
<li>Once in the HOME Menu, press (Left Shoulder) + (Down D-Pad) + (Select) to bring up the Rosalina menu</li>
<li>Select “Enable plugin loader”</li>
<li>Press (B) to exit the Rosalina menu</li>
<li>Launch Mario Kart 7
<ul>
<li>Ensure that wireless connectivity is enabled</li>
</ul>
</li>
<li>Navigate to <codeclass="language-plaintext highlighter-rouge">Local Multiplayer</code>. A menu should pop up
<li>If you have launched kartdlphax previously, the last selected settings will be loaded. If they are correct, select <codeclass="language-plaintext highlighter-rouge">Use settings</code> and skip the next 3 steps. If they are incorrect, select <codeclass="language-plaintext highlighter-rouge">Change settings</code> and proceed.</li>
<li>A confirmation menu will show up. If the settings shown on the top screen are correct, select <codeclass="language-plaintext highlighter-rouge">Use settings</code>
<ul>
<li>If the settings are not correct, press <codeclass="language-plaintext highlighter-rouge">Change settings</code> and modify them accordingly</li>
<li>If the source 3DS freezes at this point and you are using a cartridge, try <ahref="dumping-titles-and-game-cartridges#installing-a-game-cartridge-directly-to-the-system">installing the cartridge to the system</a></li>
</ul>
</li>
<li>Power on the <strong>target 3DS</strong>
<ul>
<li>Ensure that wireless connectivity is enabled</li>
</ul>
</li>
<li>On the <strong>target 3DS</strong>, open the Download Play application (<imgsrc="https://3ds.hacks.guide/images/download-play-icon.png"alt=""height="24px"width="24px"/>), then select “Nintendo 3DS”</li>
<li>Join the group created by the <strong>source 3DS</strong></li>
<li>Select “Start” on the <strong>source 3DS</strong> once it has detected the <strong>target 3DS</strong></li>
<li>Once multiplayer has loaded, navigate to <codeclass="language-plaintext highlighter-rouge">Grand Prix</code> -><codeclass="language-plaintext highlighter-rouge">50cc</code> -> (any driver) -><codeclass="language-plaintext highlighter-rouge">Mushroom Cup</code> -><codeclass="language-plaintext highlighter-rouge">OK</code></li>
<li>Wait a while (a percentage should be displayed on the <strong>source 3DS</strong>)</li>
<li>If the exploit was successful, the <strong>target 3DS</strong> will have booted into the 3DS ROP xPloit Injector
<ul>
<li>If the exploit was not successful, power off the <strong>source 3DS</strong> and <strong>target 3DS</strong> and start again from the beginning of <codeclass="language-plaintext highlighter-rouge">Section III - kartdlphax</code></li>
</ul>
</li>
<li>Press (X) to inject unSAFE_MODE</li>
<li>If the injection was successful, the screen will turn green and the <strong>target 3DS</strong> will automatically power off
<ul>
<li>If the screen turns red, power off the target 3DS and start again from the beginning of <codeclass="language-plaintext highlighter-rouge">Section III - kartdlphax</code>. If this doesn’t work, ask for help at <ahref="https://discord.gg/MWxPgEp">Nintendo Homebrew on Discord</a>)</li>
</ul>
</li>
</ol>
<pclass="notice--info">You will <strong>not</strong> need to use your <strong>source 3DS</strong> to complete any further steps on this guide. Any further steps should only be completed on the <strong>target 3DS</strong>.</p>
<p>In this section, you will enter Safe Mode (a feature available on all 3DS family consoles) and navigate to a menu where unSAFE_MODE will be triggered, which will launch you into the boot9strap (custom firmware) installer.</p>
<li>With your console still powered off, hold the following buttons: (Left Shoulder) + (Right Shoulder) + (D-Pad Up) + (A), and while holding these buttons together, power on your console
<li>There is no update. This is part of the exploit</li>
</ul>
</li>
<li>Press “I accept” to accept the terms and conditions</li>
<li>The update will eventually fail, with the error code <codeclass="language-plaintext highlighter-rouge">003-1099</code>. This is intended behaviour</li>
<li>When asked “Would you like to configure Internet settings?”, select “Yes”</li>
<li>On the following menu, navigate to <codeclass="language-plaintext highlighter-rouge">Connection 1</code> -><codeclass="language-plaintext highlighter-rouge">Change Settings</code> -><codeclass="language-plaintext highlighter-rouge">Next Page (right arrow)</code> -><codeclass="language-plaintext highlighter-rouge">Proxy Settings</code> -><codeclass="language-plaintext highlighter-rouge">Detailed Setup</code> (<ahref="/images/screenshots/usm/safemode_highlighted.png">image</a>)</li>
<li>If your console instead freezes on a white screen, hold the POWER button until it turns off, then retry this section</li>
<li>If your console instead freezes on a red screen, you are missing <codeclass="language-plaintext highlighter-rouge">usm.bin</code> from the root of your SD card</li>
<li>If a step on the lower screen has red-colored text, and you are not prompted to input a key combo, <ahref="troubleshooting#issues-with-safeb9sinstaller">follow this troubleshooting guide</a></li>
<li>If your console shuts down when you try to power it on, ensure that you have copied <codeclass="language-plaintext highlighter-rouge">boot.firm</code> from the Luma3DS <codeclass="language-plaintext highlighter-rouge">.zip</code> to the root of your SD card</li>
<p>In this section, you will enter the Homebrew Launcher (using custom firmware) so that you can restore the Wi-Fi connection slots that were overwritten in Section I.</p>
<li>Wait until you see the <codeclass="language-plaintext highlighter-rouge">Nintendo 3DS</code> and <codeclass="language-plaintext highlighter-rouge">Nintendo DS</code> buttons</li>
<li>Press the “Close” button on the bottom screen to close Download Play</li>
<li>Re-launch the Download Play application</li>
<li>Your console should load the Homebrew Launcher
<ul>
<li>If your console is stuck on the loading splash screen, you are missing <codeclass="language-plaintext highlighter-rouge">boot.3dsx</code> from the root of your SD card</li>