3DSafe is a in-NAND PIN lock for 3DS. It is an arm9loaderhax payload which will lock your sysnand with a PIN. The PIN request is displayed as soon as the 3DS is powered on. Because the 3DSafe payload is the A9LH stage1/stage2 payload, it is stored in NAND itself, not on the SD card.
The PIN is stored in NAND, so there is no way to edit or remove the PIN by removing the SD card or modifying files on it. After successfully entering the PIN, arm9loaderhax.bin is loaded from the SD card.
Note: 3DSafe is no longer being maintained. Please use with caution.
To use 3DSafe, you must safeguard your PIN and your OTP.bin.
If you install 3DSafe, forget your PIN and lose your OTP, your 3DS will be a brick. There is absolutely no way to circumvent the PIN request without the OTP.bin. The only thing you would be able to do in this situation would be to hardmod your 3DS and use the hardmod to write a NAND backup which does not have 3DSafe installed (or one in which you know the PIN). If you forget your PIN, lose your OTP.bin and don't have a NAND backup you can restore using a hardmod, your 3DS will be permanently bricked.
It is advised to make two NAND backups, verify that the md5sums match, do the same for your OTP, and then store your NAND backup and OTP in several safe locations. If you don't do this and forget your PIN, your 3DS is bricked.
Note: Do not install this unless you know exactly what you are doing. It is highly recommended that you take a NAND backup before installing this, and preferably have a hardmod before installing.
If you are on the old version 1 of arm9loaderhax, then you will need to update to the latest version before installing 3DSafe to ensure all the correct files are in place. To do so, please follow this guide. After this, you can continue to follow these instructions to install 3DSafe.
- Make a NAND backup. This is essential, as if something goes wrong during installation you will be able to restore it (but you'll need a hardmod to do this).
- Store your NAND backup safely.
- Download and extract the latest 3DSafe release, and copy payload_stage1.bin and payload_stage2.bin to the a9lh folder on the root directory of your 3DS SD card.
- Copy the 3dsafe folder from the 3DSafe release to the root of your SD card.
- Check the MD5 sums of both payloads on the SD card using these instructions.
- Run SafeA9LHInstaller according to its instructions to install the payloads.
- Power off your 3DS and power back on, and you will be prompted to set a new PIN.
- After entering a PIN, you will be able to boot your 3DS.
- Reboot your 3DS and confirm that your PIN unlocks it.
- Once you are back at the 3DSafe options menu, press the R button. This will copy the emergency boot payload to your NAND, so you will be able to boot without your SD card inserted.
- Power off your 3DS. Remove the SD card and power back on. Enter your PIN, and then press START to boot the payload. Confirm that you are able to boot without the SD card inserted. Then power off your 3DS.
- Re-insert your SD card and power up your 3DS.
- Enter your PIN and enter the 3DSafe options. Press the L button to dump sha.bin to the root of your SD card. This file is used to bypass the PIN lock if you forget your PIN.
- Once sha.bin has been dumped to your SD card, reboot your 3DS. You should see a message saying that the PIN was bypassed.
- Copy sha.bin to your computer and keep it very safe. You will need it if you forget your PIN. It's only a small file, so it is recommended to email it to yourself, putting it on a Dropbox, uploading it to a web host, burning it to a disc, putting it on a memory stick, or as many of these as is possible.
- Delete sha.bin from your 3DS SD card, reboot, and confirm that the PIN lock is no longer bypassed.
Create a lost message
If a file called /3dsafe/lost.bin is found on the SD card, 3DSafe will display this on the bottom screen. Since it's an image, you can use it to display whatever you want. However, it is recommended that you use it to display your contact details in case your 3DS is lost. Here's how to do that.
- Create a 320x240 image in any paint programme. The file MUST be the correct size or it won't display properly (or might cause weird effects when 3DSafe tries to load it).
- Write your contact details or whatever you want into the image.
- Save the image as a non-transparent PNG.
- Open this page https://xem.github.io/3DShomebrew/tools/image-to-bin.html
- Click on choose
Choose Fileand select the image you created.
- Make sure
rotate 90°is ticked, and
preserve transparencyis unticked.
- Your image will appear on the screen, rotated 90 degrees (this is normal).
- Right click on
Download your BIN fileand save the file as lost.bin.
- Click on choose
- Place lost.bin in /3dsafe on your SD card.
- 3DSafe will automatically detect the presence of this file and display it. If you have previously used a different lost.bin, the old one will still be displayed because it is being loaded from CTRNAND. To update it, you need to press the R button from the 3DSafe options screen. The copy of lost.bin on NAND will then be updated to match the one from the SD card.
Under normal circumstances after installing and setting up 3DSafe, booting your 3DS will cause you to be prompted to enter your PIN. After doing so, your 3DS will boot up as normal. Rebooting your 3DS (for example, after exiting System Settings) will not cause the PIN request to appear.
In order to change the settings of 3DSafe, you will need to do one of the following:
- If you are cold booting your 3DS, hold the last key of your PIN.
- If you are rebooting your 3DS, hold the Up key.
Carrying out either of these actions will cause the 3DSafe options menu to appear. From here you can configure the following settings.
- This option will boot the arm9loaderhax.bin on your SD card to start up your 3DS.
- If none is present, 3DSafe will attempt to boot the emergency payload from CTRNAND, which will boot Luma to SysNAND.
- If this is not present either, then you will be presented with an error message.
- This option toggles the PIN lock on or off.
- If the PIN lock is turned off, then your 3DS will boot your arm9loaderhax payload (or emergency payload) immediately without asking for the PIN and without showing any options.
- To return to the 3DSafe options menu (for example to re-enable the PIN lock or change other options), power on your 3DS while holding the UP button. This will present the 3DSafe options menu on boot.
Update NAND files:
- If you have the either emergency.bin (the emergency arm9loaderhax payload) or lost.bin (the owner contact details image) in the 3dsafe folder on your SD card, then choosing this option will cause these files to be copied to CTRNAND.
- This will mean that you will be able to view the owner contact details and boot the emergency payload even if you don't have an SD card inserted.
- Change the PIN which is requested when booting your 3DS.
- Powers off the console.
- Runs the built-in version of SafeA9LHInstaller.
- This is useful for updating 3DSafe, or installing a different A9LH payload to remove 3DSafe.
- Displays version information and credits.
Hold Up (while rebooting) or Hold the last key of your PIN (while cold booting) - Options menu
Start - Boot payload
Select - Toggle PIN
R - Update NAND files
A - Change PIN
B - Power off
X - SafeA9LHInstaller
Y - About 3DSafe
This project is based on ShadowNAND by RShadowhand, from which it is forked. All credit for the original payload is inherited from this project and the projects on which it is based in turn. The modifications in 3DSafe are by @mashers.
3DSafe incorporates parts of GodMode9 by @d0k3 for reading and writing the PIN from/to NAND. Credit for the code in 3DSafe which is taken from GodMode9 and modified by mashers is given to d0k and the other contributors to the GodMode9 project. This includes the following components of 3DSafe:
- fatfs (modified to mount/read/write 3DS NAND partitions)
3DSafe also includes an integrated version of SafeA9LHInstaller by @Aurora Wright.
- GBAtemp - https://gbatemp.net/threads/release-3dsafe-in-nand-pin-lock-for-3ds.440832/
- GitHub - https://github.com/mashers/3DSafe (archived)