Custom Install 3DS: Difference between revisions

From GameBrew
No edit summary
No edit summary
Line 3: Line 3:
| image = https://dlhb.gamebrew.org/3dshomebrew/backup-your-3ds-sd-card-data-now.jpg|250px
| image = https://dlhb.gamebrew.org/3dshomebrew/backup-your-3ds-sd-card-data-now.jpg|250px
| type = Utilities
| type = Utilities
| version = af2bb12
| version = custom-install 2.1b4 & finalize 1.6 (8 Jul 2021)
| licence = Mixed
| licence = Mixed
| author = ihaveamac
| author = ihaveamac
| website = https://gbatemp.net/threads/custom-install-install-cias-to-a-nintendo-3ds-sd-card-entirely-on-pc.551496/
| website = https://gbatemp.net/threads/custom-install-install-cias-to-a-nintendo-3ds-sd-card-entirely-on-pc.551496/
| download = https://dlhb.gamebrew.org/3dshomebrew/custom-install-af2bb12.rar
| download = https://github.com/ihaveamac/custom-install/releases
| source = https://dlhb.gamebrew.org/3dshomebrew/custom-install-af2bb12.rar
| source = https://github.com/ihaveamac/custom-install/releases
}}
}}
<youtube>-</youtube>


=custom-install=
custom-install is a Python 3.6+ tool that will install CIA files to a Nintendo 3DS SD card entirely on a PC. This completely bypasses the slow wireless and I/O speeds of the hardware.
Experimental script to automate the process of a manual title install for Nintendo 3DS. Originally created late June 2019.


== Summary==
It was initially created late June 2019 as an experimental script to automate the process of a manual title install for Nintendo 3DS.
1. Dump boot9.bin and movable.sed from a 3DS system.


2. Install pycryptodomex:
==Installation==
===Requirements===
* [https://github.com/ihaveamac/3DS-rom-tools/wiki/SeedDB-list seeddb.bin] - Required for newer games (2015+) that use seeds.
* [https://ihaveamac.github.io/dump.html boot9.bin and moveable.sed] - Dumped from a 3DS system.
* [https://github.com/ihaveamac/custom-install/releases/download/v2.1b4/custom-install-standalone.zip custom-install-standalone] - For Windows user, it includes GUI for simpler process and custom-install-finalize.
* [https://github.com/ihaveamac/custom-install/archive/module-newer-gui.zip custom-install-module] - For Windows/macOS/Linux user, to be used with Python (or setup your own GUI).
* [https://github.com/ihaveamac/custom-install/releases/download/v2.1b4/custom-install-finalize.3dsx custom-install-finalize] - Installs a ticket, plus a seed if required. Provided as a separate download primarily for non-Windows users.


* Windows: `py -3 -m pip install --user --upgrade pycryptodomex`
===Setup for Linux===
* Linux users must build [https://github.com/wwylele/save3ds wwylele/save3ds] and place save3ds_fuse in <code>bin/linux</code>.
* Install [https://www.rust-lang.org/tools/install rust using rustup], then compile with: <code>cargo build</code>. The compiled binary is located in <code>target/debug/save3ds_fuse</code>, copy it to <code>bin/linux</code>.
* (Optional) [https://github.com/ihaveamac/custom-install#gui-setup GUI setup].


* macOS/Linux: `python3 -m pip install --user --upgrade pycryptodomex`
===Building standalone===
* Using a 32-bit version of Python is recommended to build a version to be distributed. Please refer to the [https://github.com/ihaveamac/custom-install#building-windows-standalone readme from repo].


3. Download the repo ([zip link](https://github.com/ihaveamac/custom-install/archive/master.zip) or `git clone`)
==User guide==
===Usage summary===
* Use custom-insall on your laptop/pc and install titles onto the micro SD (with boot9+movable).  
* After it's finished, re-insert to 3DS and run custom-install-finalize at the end to insert the ticket and seed for it to show on the homemenu.
* You can use the Windows standalone with GUI for simpler process, or setup your own enviroment (Windows 32/Linux/macOS).


4. Run `custom-install.py` with boot9.bin, movable.sed, path to the SD root, and CIA files to install (see Usage section).
===Windows standalone===
* Extract custom-install and copy over custom-install-finalize.3dsx to the 3ds folder on your SD card.
* Run ci-gui to bring up the custom-install GUI.
* Select your SD card root, boot9, seeddb, and movable.sed files (in some cases these will be automatically selected for you).
* Add the CIA files and click <code>Start install</code>.
* Once it's finished, start up the homebrew launcher and run custom-install-finalize to finish the process.


5. Download and use [custom-install-finalize](https://github.com/ihaveamac/custom-install/releases) on the 3DS system to finish the install.
===With installed Python===
* Download the [https://github.com/ihaveamac/custom-install/archive/module-newer-gui.zip repo] and extract custom-install.
* Download [https://github.com/ihaveamac/custom-install/releases custom-install-finalize.3dsx] and copy over to the 3ds folder of your SD card.
* Put boot9.bin seeddb.bin and movable.sed to the root of the custom-install folder (see also [https://www.gamebrew.org/wiki/Custom_Install_3DS#Additional notes Additional notes]).
* Paste the .cia files you want to install to the root of the custom-install folder.
* Install the packages:
** For Windows, double-click <code>windows-install-dependencies.py</code>
** Alternate manual method <code>py -3 -m pip install --user -r requirements-win32.txt</code>
** For macOS/Linux, <code>python3 -m pip install --user -r requirements.txt</code>
* Run <code>custominstall.py</code> with boot9.bin, movable.sed, path to the SD root, and CIA files to install:
** Use <code>-h</code> to view arguments. Insert the following code (with some examples below).
** <code>py -3 custom-install.py -b boot9.bin -m movable.sed --sd *yoursdcarddiskletter:\* *yourgamename*.cia *yourgamename*.cia</code>
** <code>py -3 custominstall.py -b boot9.bin -m movable.sed --sd E:\ file.cia file2.cia</code>
** <code>python3 custominstall.py -b boot9.bin -m movable.sed --sd /Volumes/GM9SD file.cia file2.cia</code>
** <code>python3 custominstall.py -b boot9.bin -m movable.sed --sd /media/GM9SD file.cia file2.cia</code>
* Wait for install. Once it's finished, start up the homebrew launcher and run custom-install-finalize to finish the process.


== Setup==
===Additional notes===
Linux users must build [wwylele/save3ds](https://github.com/wwylele/save3ds) and place `save3ds_fuse` in `bin/linux`.
movable.sed can be provided with <code>-m</code> or <code>--movable</code>.


movable.sed is required and can be provided with `-m` or `--movable`.
boot9 can be placed in one of the following places:
* <code>-b</code> or <code>--boot9</code> argument (if set)
* <code>BOOT9_PATH</code> environment variable (if set)
* <code>%APPDATA%\3ds\boot9.bin</code> (Windows-specific)
* <code>~/Library/Application Support/3ds/boot9.bin</code> (macOS-specific)
* <code>~/.3ds/boot9.bin</code>
* <code>~/3ds/boot9.bin</code>


boot9 is needed:
* `-b` or `--boot9` argument (if set)
* `BOOT9_PATH` environment variable (if set)
* `%APPDATA%\3ds\boot9.bin` (Windows-specific)
* `~/Library/Application Support/3ds/boot9.bin` (macOS-specific)
* `~/.3ds/boot9.bin`
* `~/3ds/boot9.bin`
A [SeedDB](https://github.com/ihaveamac/3DS-rom-tools/wiki/SeedDB-list) is needed for newer games (2015+) that use seeds.
SeedDB is checked in order of:
SeedDB is checked in order of:
* `SEEDDB_PATH` environment variable (if set)
* <code>-s</code> or <code>--seeddb</code> argument (if set)
* `%APPDATA%\3ds\seeddb.bin` (Windows-specific)
* <code>SEEDDB_PATH</code> environment variable (if set)
* `~/Library/Application Support/3ds/seeddb.bin` (macOS-specific)
* <code>%APPDATA%\3ds\seeddb.bin</code> (Windows-specific)
* `~/.3ds/seeddb.bin`
* <code>~/Library/Application Support/3ds/seeddb.bin</code> (macOS-specific)
* `~/3ds/seeddb.bin`
* <code>~/.3ds/seeddb.bin</code>
* <code>~/3ds/seeddb.bin</code>


== Usage==
If you get an error during installation, you'll have to manually delete the partially installed title from the SD card (Nintendo 3DS -> {id0} -> {id1} -> title -> {first half of Title ID} -> {second half of Title ID}), or delete other things to make enough space, then try again.
Use `-h` to view arguments.


==Examples:==
==Credits==
save3ds by wwylele is used to interact with the Title Database (details in bin/README).


* py -3 custom-install.py -b boot9.bin -m movable.sed --sd E:\ file.cia file2.cia
Thanks to nek0bit for redesigning custominstall.py to work as a module, and for implementing an earlier GUI.
* python3 custom-install.py -b boot9.bin -m movable.sed --sd /Volumes/GM9SD file.cia file2.cia
* python3 custom-install.py -b boot9.bin -m movable.sed --sd /media/GM9SD file.cia file2.cia


==License/Credits==
Thanks to LyfeOnEdge from the brewtools Discord for designing the second version of the GUI. Special thanks to CrafterPika and archbox for testing.
`pyctr/` is from [ninfs `d994c78`](https://github.com/ihaveamac/ninfs/tree/d994c78acf5ff3840df1ef5a6aabdc12ca98e806/ninfs/pyctr).


[save3ds by wwylele](https://github.com/wwylele/save3ds) is used to interact with the Title Database (details in `bin/README`).
Thanks to BpyH64 for researching how to generate the cmacs.


Thanks to @BpyH64 for [researching how to generate the cmacs](https://github.com/d0k3/GodMode9/issues/340#issuecomment-487916606).
[[Category:3DS homebrew applications]]
[[Category:Homebrew utility applications on 3DS]]
[[Category:PC utilities for 3DS homebrew]]

Revision as of 07:27, 24 July 2021

Template:Infobox 3DS homebrew

custom-install is a Python 3.6+ tool that will install CIA files to a Nintendo 3DS SD card entirely on a PC. This completely bypasses the slow wireless and I/O speeds of the hardware.

It was initially created late June 2019 as an experimental script to automate the process of a manual title install for Nintendo 3DS.

Installation

Requirements

Setup for Linux

  • Linux users must build wwylele/save3ds and place save3ds_fuse in bin/linux.
  • Install rust using rustup, then compile with: cargo build. The compiled binary is located in target/debug/save3ds_fuse, copy it to bin/linux.
  • (Optional) GUI setup.

Building standalone

  • Using a 32-bit version of Python is recommended to build a version to be distributed. Please refer to the readme from repo.

User guide

Usage summary

  • Use custom-insall on your laptop/pc and install titles onto the micro SD (with boot9+movable).
  • After it's finished, re-insert to 3DS and run custom-install-finalize at the end to insert the ticket and seed for it to show on the homemenu.
  • You can use the Windows standalone with GUI for simpler process, or setup your own enviroment (Windows 32/Linux/macOS).

Windows standalone

  • Extract custom-install and copy over custom-install-finalize.3dsx to the 3ds folder on your SD card.
  • Run ci-gui to bring up the custom-install GUI.
  • Select your SD card root, boot9, seeddb, and movable.sed files (in some cases these will be automatically selected for you).
  • Add the CIA files and click Start install.
  • Once it's finished, start up the homebrew launcher and run custom-install-finalize to finish the process.

With installed Python

  • Download the repo and extract custom-install.
  • Download custom-install-finalize.3dsx and copy over to the 3ds folder of your SD card.
  • Put boot9.bin seeddb.bin and movable.sed to the root of the custom-install folder (see also notes Additional notes).
  • Paste the .cia files you want to install to the root of the custom-install folder.
  • Install the packages:
    • For Windows, double-click windows-install-dependencies.py
    • Alternate manual method py -3 -m pip install --user -r requirements-win32.txt
    • For macOS/Linux, python3 -m pip install --user -r requirements.txt
  • Run custominstall.py with boot9.bin, movable.sed, path to the SD root, and CIA files to install:
    • Use -h to view arguments. Insert the following code (with some examples below).
    • py -3 custom-install.py -b boot9.bin -m movable.sed --sd *yoursdcarddiskletter:\* *yourgamename*.cia *yourgamename*.cia
    • py -3 custominstall.py -b boot9.bin -m movable.sed --sd E:\ file.cia file2.cia
    • python3 custominstall.py -b boot9.bin -m movable.sed --sd /Volumes/GM9SD file.cia file2.cia
    • python3 custominstall.py -b boot9.bin -m movable.sed --sd /media/GM9SD file.cia file2.cia
  • Wait for install. Once it's finished, start up the homebrew launcher and run custom-install-finalize to finish the process.

Additional notes

movable.sed can be provided with -m or --movable.

boot9 can be placed in one of the following places:

  • -b or --boot9 argument (if set)
  • BOOT9_PATH environment variable (if set)
  • %APPDATA%\3ds\boot9.bin (Windows-specific)
  • ~/Library/Application Support/3ds/boot9.bin (macOS-specific)
  • ~/.3ds/boot9.bin
  • ~/3ds/boot9.bin

SeedDB is checked in order of:

  • -s or --seeddb argument (if set)
  • SEEDDB_PATH environment variable (if set)
  • %APPDATA%\3ds\seeddb.bin (Windows-specific)
  • ~/Library/Application Support/3ds/seeddb.bin (macOS-specific)
  • ~/.3ds/seeddb.bin
  • ~/3ds/seeddb.bin

If you get an error during installation, you'll have to manually delete the partially installed title from the SD card (Nintendo 3DS -> {id0} -> {id1} -> title -> {first half of Title ID} -> {second half of Title ID}), or delete other things to make enough space, then try again.

Credits

save3ds by wwylele is used to interact with the Title Database (details in bin/README).

Thanks to nek0bit for redesigning custominstall.py to work as a module, and for implementing an earlier GUI.

Thanks to LyfeOnEdge from the brewtools Discord for designing the second version of the GUI. Special thanks to CrafterPika and archbox for testing.

Thanks to BpyH64 for researching how to generate the cmacs.

Advertising: