DeviceID Exosphere Builder Switch: Difference between revisions

From GameBrew
No edit summary
No edit summary
Line 1: Line 1:
{{Infobox Switch Homebrews
{{Infobox Switch Homebrews
|title=DeviceID Exosphere Builder
|title=DeviceID Exosphere Builder
|image=deviceidexospherebuilderswitch.png
|image=deviceidexospherebuildernx.png
|description=Create a custom Exosphere binary to spoof the DeviceId
|description=Create a custom Exosphere binary to spoof the DeviceId.
|author=PabloZaiden
|author=PabloZaiden
|lastupdated=2021/02/28
|lastupdated=2021/02/28
Line 8: Line 8:
|version=0.18.1
|version=0.18.1
|license=Mixed
|license=Mixed
|download=https://dlhb.gamebrew.org/switchhomebrews/deviceidexospherebuilderswitch.7z
|download=https://dlhb.gamebrew.org/switchhomebrews/deviceidexospherebuildernx.7z
|website=https://github.com/PabloZaiden/deviceid-exosphere-builder
|website=https://github.com/PabloZaiden/deviceid-exosphere-builder
|source=https://github.com/PabloZaiden/deviceid-exosphere-builder
|source=https://github.com/PabloZaiden/deviceid-exosphere-builder
|donation=  
|donation=  
}}
}}
{{#seo:
Dockerized tool to build a custom Exosphere binary that spoofs the DeviceID.  
|title=Switch Homebrew PC Tools (PC Utilities) - GameBrew
 
|title_mode=append
This can be used to boot Horizon with Atmosphere in a Nintendo Switch with transplanted <code>PRODINFO</code>/<code>PRODINFOF</code> partitions.
|image=deviceidexospherebuilderswitch.png
|image_alt=DeviceID Exosphere Builder
}}
DeviceID Exosphere Builder, a tool that Dockerized to construct a personalized Exosphere binary capable of spoofing DeviceID. This tool can enable booting Horizon with Atmosphere on a Nintendo Switch that has PRODINFO/PRODINFOF partitions transplanted.


==How to transplant PRODINFO/PRODINFOF and recreate the other EMMC partitions from scratch==
==User guide==
=== WARNING ===
===Transplant PRODINFO/PRODINFOF and recreate the other EMMC partitions from scratch===
'''The purpose of this process is solely to enable the console to reboot into Horizon in case the PRODINFO/PRODINFOF partitions' contents are lost. It should be noted that this process is not intended to unban the console. Attempting to do so is highly likely to result in the console being banned again. Going forward, it is important to refrain from any form of piracy, and the transplanted console should not be used online.'''
'''Warning:''' The purpose of this process is solely to enable the console to reboot into Horizon in case the PRODINFO/PRODINFOF partitions' contents are lost. It should be noted that this process is not intended to unban the console. Attempting to do so is highly likely to result in the console being banned again. Going forward, it is important to refrain from any form of piracy, and the transplanted console should not be used online.


=== Requirements ===
==== Requirements ====
* Windows
* Windows
* A working console full EMMC backup (''Console A''), or that console running latest Hekate, connected to the PC
* A working console full EMMC backup (''Console A''), or that console running latest Hekate, connected to the PC
Line 36: Line 32:
* Latest [https://github.com/Atmosphere-NX/Atmosphere/releases/ Atmosphere]
* Latest [https://github.com/Atmosphere-NX/Atmosphere/releases/ Atmosphere]


=== Steps ===
==== How to use ====
# Open the EMMC from ''Console A'' or its backup with NxNandManager, using ''Console A'' BIS keys.
* Open the EMMC from "Console A" or its backup with NxNandManager, using "Console A" BIS keys.
# Write down the ''DeviceID'', without the initial <code>NX</code> and the <code>-0</code> (or whatever there is) at the end, skipping the first two digits. For instance, if it says: <code>NX1122334455667788-0</code>, the part you need to write down would be: <code>22334455667788</code>.
* Write down the "DeviceID", without the initial <code>NX</code> and the <code>-0</code> (or whatever there is) at the end, skipping the first two digits. For instance, if it says: <code>NX1122334455667788-0</code>, the part you need to write down would be: <code>22334455667788</code>.
# Dump and decrypt <code>PRODINFO</code> and <code>PRODINFOF</code> partitions from ''Console A''.
* Dump and decrypt <code>PRODINFO</code> and <code>PRODINFOF</code> partitions from "Console A".
# Close NxNandManager.
* Close NxNandManager.
# Open the EMMC from ''Console B'' with NxNandManager, using ''Console B'' BIS keys. It may say that it has ''BAD CRYPTO''. This is expected on a nuked EMMC.
 
# Restore the decrypted <code>PRODINFO</code> and <code>PRODINFO</code> partitions from Console A into Console B.
* Open the EMMC from "Console B" with NxNandManager, using "Console B" BIS keys. It may say that it has "BAD CRYPTO". This is expected on a nuked EMMC.
# Close NxNandManager.
* Restore the decrypted <code>PRODINFO</code> and <code>PRODINFO</code> partitions from Console A into Console B.
# Follow [https://switch.homebrew.guide/usingcfw/manualchoiupgrade.html this guide] to recreate the rest of the EMMC partitions, <code>BOOT0</code> and <code>BOOT1</code> on ''Console B'' using ''Console B'' BIS keys, '''UP TO AND INCLUDING, STEP 12. DO NOT ATTEMPT TO BOOT THE CONSOLE YET'''.
* Close NxNandManager.
# On the <code>SYSTEM</code> partition, delete all the files/folders of the <code>save</code> folder '''except the one ending in <code>120</code>'''. Not doing this may end up in the console freezing during boot or Atmosphere showing an error while booting.
# Put the latest version of Hekate and Atmosphere on your SD card.
# Create the custom Exosphere binary to spoof the DeviceID.
# Boot the console using <code>fusee-primary.bin</code> or chainload it from Hekate.


== How to create the custom Exosphere binary with Docker ==
* Follow [https://switch.homebrew.guide/usingcfw/manualchoiupgrade.html this guide] to recreate the rest of the EMMC partitions, <code>BOOT0</code> and <code>BOOT1</code> on "Console B" using "Console B" BIS keys, "'UP TO AND INCLUDING, STEP 12. DO NOT ATTEMPT TO BOOT THE CONSOLE YET"'.
* On the <code>SYSTEM</code> partition, delete all the files/folders of the <code>save</code> folder "'except the one ending in <code>120</code>"'. Not doing this may end up in the console freezing during boot or Atmosphere showing an error while booting.
* Put the latest version of Hekate and Atmosphere on your SD card.
* Create the custom Exosphere binary to spoof the DeviceID.
* Boot the console using <code>fusee-primary.bin</code> or chainload it from Hekate.
 
=== Create the custom Exosphere binary with Docker ===
This tool requires a volume mounted to the <code>/output</code> directory of the container, and the <code>DEVICEID</code> environment variable, with the DeviceID to spoof.
This tool requires a volume mounted to the <code>/output</code> directory of the container, and the <code>DEVICEID</code> environment variable, with the DeviceID to spoof.


Line 57: Line 55:
(if you want to use a specific Atmosphere version, change the <code>latest</code> docker tag with the Atmosphere version number, like <code>0.14.4</code>)
(if you want to use a specific Atmosphere version, change the <code>latest</code> docker tag with the Atmosphere version number, like <code>0.14.4</code>)


<pre>mkdir -p ./output
<pre>
mkdir -p ./output
docker pull pablozaiden/deviceid-exosphere-builder:latest
docker pull pablozaiden/deviceid-exosphere-builder:latest
docker run -ti --rm -e DEVICEID=0x0022334455667788 -v &quot;$PWD&quot;/output:/output pablozaiden/deviceid-exosphere-builder:latest</pre>
docker run -ti --rm -e DEVICEID=0x0022334455667788 -v &quot;$PWD&quot;/output:/output pablozaiden/deviceid-exosphere-builder:latest
</pre>


After it finishes building, copy the <code>output/deviceid_exosphere.bin</code> file to the <code>Atmosphere</code> directory of your SD card, and add the following entries to <code>BCT.ini</code>:
After it finishes building, copy the <code>output/deviceid_exosphere.bin</code> file to the <code>Atmosphere</code> directory of your SD card, and add the following entries to <code>BCT.ini</code>:


<pre>[stage2]
<pre>
exosphere = Atmosphere/deviceid_exosphere.bin</pre>
[stage2]
exosphere = Atmosphere/deviceid_exosphere.bin
</pre>


If booting via Hekate (without <code>fusee-primary.bin</code>), add this to the boot configuration to pick up the custom exosphere binary:
If booting via Hekate (without <code>fusee-primary.bin</code>), add this to the boot configuration to pick up the custom exosphere binary:


<pre>secmon=Atmosphere/deviceid_exosphere.bin</pre>
<pre>
secmon=Atmosphere/deviceid_exosphere.bin
</pre>


== How to create the custom Exosphere binary without Docker ==
=== Create the custom Exosphere binary without Docker ===
To build the same Exosphere custom binary without using the Docker image, you have to do the following manual steps first (for more details, just follow what is being done in the Dockerfile):
To build the same Exosphere custom binary without using the Docker image, you have to do the following manual steps first (for more details, just follow what is being done in the Dockerfile):


<ul>
*Install DevKitPro.
<li>Install DevKitPro</li>
*Install the required libraries to build Atmosphere.
<li>Install the required libraries to build Atmosphere</li>
*Clone Atmosphere into the commit/tag/branch you want.
<li>Clone Atmosphere into the commit/tag/branch you want</li>
*Copy the <code>deviceid.patch</code> file from this repo into the Atmosphere directory.
<li>Copy the <code>deviceid.patch</code> file from this repo into the Atmosphere directory</li>
*Run the following command, to modify the DeviceId value in the patch and apply the patch (tested only on linux):
<li>Run the following command, to modify the DeviceId value in the patch and apply the patch (tested only on linux):
<pre>
<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto">
export DEVICEID=0x0022334455667788
 
<pre>export DEVICEID=0x0022334455667788
sed -i &quot;s/###DEVICEID###/$DEVICEID/g&quot; deviceid.patch
sed -i &quot;s/###DEVICEID###/$DEVICEID/g&quot; deviceid.patch


git am deviceid.patch</pre>
git am deviceid.patch
</div></li>
</pre>
<li>Go to the <code>exosphere</code> directory, inside the repo</li>
*Go to the <code>exosphere</code> directory, inside the repo.
<li>Build <code>exosphere</code>:
*Build <code>exosphere</code>:
<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto">
<pre>
 
make -j$(nproc) exosphere.bin
<pre>make -j$(nproc) exosphere.bin</pre>
</pre>
 
*Copy <code>exosphere.bin</code> to the <code>Atmosphere</code> directory in your SD card and follow the steps to configure it from the dockerized build.
</div></li>
<li>Copy <code>exosphere.bin</code> to the <code>Atmosphere</code> directory in your SD card and follow the steps to configure it from the dockerized build.</li></ul>


== Considerations ==
=== Considerations ===
* '''Important. Do not share your dumps and personalized builds.''' The <code>deviceid_exosphere.bin</code> is tied to a specific DeviceID and ''must not be shared''. The same applies for the <code>PRODINFO</code>/<code>PRODINFOF</code> dumps. You may end up with a banned console.
* Important. Do not share your dumps and personalized builds. The <code>deviceid_exosphere.bin</code> is tied to a specific DeviceID and must not be shared. The same applies for the <code>PRODINFO</code>/<code>PRODINFOF</code> dumps. You may end up with a banned console.
* Doing this will potentialy leave you with more than one console with the same MAC address. Trying to connect both of them at the same time, to the same wireless network may result in an unexpected behavior. To modify your MAC address, edit the decrypted PRODINFO and modify the 0x6 bytes starting at 0x210 and use the CRC16 method described [https://switchbrew.org/wiki/Calibration here] to properly fill the next 0x2 bytes.
* Doing this will potentialy leave you with more than one console with the same MAC address. Trying to connect both of them at the same time, to the same wireless network may result in an unexpected behavior. To modify your MAC address, edit the decrypted PRODINFO and modify the 0x6 bytes starting at 0x210 and use the CRC16 method described [https://switchbrew.org/wiki/Calibration here] to properly fill the next 0x2 bytes.


==Changelog==  
==Changelog==  
'''0.18.1'''
'''0.18.1 2021/02/28'''
* Release compatible with Atmosphere 0.18.1
*Release compatible with Atmosphere 0.18.1.
'''0.17.0 2021/01/07'''
*Release compatible with Atmosphere 0.17.0.
'''0.16.2 2020/12/21'''
*Release compatible with Atmosphere 0.16.2.
'''0.15.0 2020/10/28'''
*Release compatible with Atmosphere 0.15.0.
'''0.14.4 2020/09/18'''
*Release compatible with Atmosphere 0.14.4.
'''0.14.3-hotfix1 2020/09/15'''
*Release compatible with Atmosphere 0.14.3.
'''0.14.2 2020/09/09'''
*Release compatible with Atmosphere 0.14.2.
'''0.14.1.2020/08/04'''
*Release compatible with Atmosphere 0.14.1.


== Acknowledgements ==
==Credits==
* '''shchmue''', '''Jan4V''' and '''SciresM''' for all the patience answering questions and all the info about this and the ''full nand transplant'' options.
Acknowledgements: shchmue, Jan4V and SciresM for all the patience answering questions and all the info about this and the full nand transplant options.


== External links ==
== External links ==
* Github - https://github.com/PabloZaiden/deviceid-exosphere-builder
* GitHub - https://github.com/PabloZaiden/deviceid-exosphere-builder
* Reddit - https://www.reddit.com/r/SwitchHaxing/comments/i3b8jw/deviceidexospherebuilder_transplant/

Revision as of 03:31, 13 June 2023

DeviceID Exosphere Builder
Deviceidexospherebuildernx.png
General
AuthorPabloZaiden
TypePC Utilities
Version0.18.1
LicenseMixed
Last Updated2021/02/28
Links
Download
Website
Source

Dockerized tool to build a custom Exosphere binary that spoofs the DeviceID.

This can be used to boot Horizon with Atmosphere in a Nintendo Switch with transplanted PRODINFO/PRODINFOF partitions.

User guide

Transplant PRODINFO/PRODINFOF and recreate the other EMMC partitions from scratch

Warning: The purpose of this process is solely to enable the console to reboot into Horizon in case the PRODINFO/PRODINFOF partitions' contents are lost. It should be noted that this process is not intended to unban the console. Attempting to do so is highly likely to result in the console being banned again. Going forward, it is important to refrain from any form of piracy, and the transplanted console should not be used online.

Requirements

  • Windows
  • A working console full EMMC backup (Console A), or that console running latest Hekate, connected to the PC
  • A console with working hardware, but without a working EMMC backup (Console B)
  • NxNandManager
  • HackDiskMount
  • BIS keys for Console A and B
  • Docker
  • Latest Hekate
  • Latest Atmosphere

How to use

  • Open the EMMC from "Console A" or its backup with NxNandManager, using "Console A" BIS keys.
  • Write down the "DeviceID", without the initial NX and the -0 (or whatever there is) at the end, skipping the first two digits. For instance, if it says: NX1122334455667788-0, the part you need to write down would be: 22334455667788.
  • Dump and decrypt PRODINFO and PRODINFOF partitions from "Console A".
  • Close NxNandManager.
  • Open the EMMC from "Console B" with NxNandManager, using "Console B" BIS keys. It may say that it has "BAD CRYPTO". This is expected on a nuked EMMC.
  • Restore the decrypted PRODINFO and PRODINFO partitions from Console A into Console B.
  • Close NxNandManager.
  • Follow this guide to recreate the rest of the EMMC partitions, BOOT0 and BOOT1 on "Console B" using "Console B" BIS keys, "'UP TO AND INCLUDING, STEP 12. DO NOT ATTEMPT TO BOOT THE CONSOLE YET"'.
  • On the SYSTEM partition, delete all the files/folders of the save folder "'except the one ending in 120"'. Not doing this may end up in the console freezing during boot or Atmosphere showing an error while booting.
  • Put the latest version of Hekate and Atmosphere on your SD card.
  • Create the custom Exosphere binary to spoof the DeviceID.
  • Boot the console using fusee-primary.bin or chainload it from Hekate.

Create the custom Exosphere binary with Docker

This tool requires a volume mounted to the /output directory of the container, and the DEVICEID environment variable, with the DeviceID to spoof.

Either build the docker image locally or use the prebuilt image from Dockerhub, replacing the DEVICEID value with your DeviceID (keep the 00 before your DeviceID. If the output from NxNandManager was NX1122334455667788-0, the value to use should be: 0x0022334455667788. ):

(if you want to use a specific Atmosphere version, change the latest docker tag with the Atmosphere version number, like 0.14.4)

mkdir -p ./output
docker pull pablozaiden/deviceid-exosphere-builder:latest
docker run -ti --rm -e DEVICEID=0x0022334455667788 -v "$PWD"/output:/output pablozaiden/deviceid-exosphere-builder:latest

After it finishes building, copy the output/deviceid_exosphere.bin file to the Atmosphere directory of your SD card, and add the following entries to BCT.ini:

[stage2]
exosphere = Atmosphere/deviceid_exosphere.bin

If booting via Hekate (without fusee-primary.bin), add this to the boot configuration to pick up the custom exosphere binary:

secmon=Atmosphere/deviceid_exosphere.bin

Create the custom Exosphere binary without Docker

To build the same Exosphere custom binary without using the Docker image, you have to do the following manual steps first (for more details, just follow what is being done in the Dockerfile):

  • Install DevKitPro.
  • Install the required libraries to build Atmosphere.
  • Clone Atmosphere into the commit/tag/branch you want.
  • Copy the deviceid.patch file from this repo into the Atmosphere directory.
  • Run the following command, to modify the DeviceId value in the patch and apply the patch (tested only on linux):
export DEVICEID=0x0022334455667788
sed -i "s/###DEVICEID###/$DEVICEID/g" deviceid.patch

git am deviceid.patch
  • Go to the exosphere directory, inside the repo.
  • Build exosphere:
make -j$(nproc) exosphere.bin
  • Copy exosphere.bin to the Atmosphere directory in your SD card and follow the steps to configure it from the dockerized build.

Considerations

  • Important. Do not share your dumps and personalized builds. The deviceid_exosphere.bin is tied to a specific DeviceID and must not be shared. The same applies for the PRODINFO/PRODINFOF dumps. You may end up with a banned console.
  • Doing this will potentialy leave you with more than one console with the same MAC address. Trying to connect both of them at the same time, to the same wireless network may result in an unexpected behavior. To modify your MAC address, edit the decrypted PRODINFO and modify the 0x6 bytes starting at 0x210 and use the CRC16 method described here to properly fill the next 0x2 bytes.

Changelog

0.18.1 2021/02/28

  • Release compatible with Atmosphere 0.18.1.

0.17.0 2021/01/07

  • Release compatible with Atmosphere 0.17.0.

0.16.2 2020/12/21

  • Release compatible with Atmosphere 0.16.2.

0.15.0 2020/10/28

  • Release compatible with Atmosphere 0.15.0.

0.14.4 2020/09/18

  • Release compatible with Atmosphere 0.14.4.

0.14.3-hotfix1 2020/09/15

  • Release compatible with Atmosphere 0.14.3.

0.14.2 2020/09/09

  • Release compatible with Atmosphere 0.14.2.

0.14.1.2020/08/04

  • Release compatible with Atmosphere 0.14.1.

Credits

Acknowledgements: shchmue, Jan4V and SciresM for all the patience answering questions and all the info about this and the full nand transplant options.

External links

Advertising: