====== Nintendo DS Firmware ======
===== Introduction =====
**Important Notes**
* If you have a sealed DS, contact us on the [[https://discord.gg/AHTfxQV|VGPC discord]], to avoid inadvertant modification of the firmware and preserve a copy of it in its unused/"factory" state.
Dumping DS firmware is reasonably easy if you have a way to run homebrew on the DS.
The DS firmware structure is as follows:
* Firmware header
* //Wi-Fi calibration data//
* Firmware code
* //Wi-Fi access point data//
* //User settings//
Since //Wi-Fi calibration data//, //Wi-Fi access point data// and //user settings// are likely to differ between consoles, they will have to be cleaned to obtain a consistent hash for the same firmware version.
===== Methods =====
- DS console via slot-1 flashcart
==== Method 1 - DS console via slot-1 flashcart ====
=== Tools ===
* A Nintendo DS or Nintendo DS Lite with a slot-1 flashcart
* [[https://archive.org/download/dsbf-dumper/Firmware%20Dumper.zip/dsbf_dump.nds|dsbf_dump]]
* Python 3 and [[https://gist.github.com/xprism1/a8aeb6d0728fe4ca45f3a64b409945fb|this python script]]
=== Dumping ===
* Download and copy ''dsbf_dump.nds'' to your flashcart's SD card
* Power on the console and run dsbf_dump
* Wait till the screen says **Dumps completed**
* Turn off the console and copy **FWxxxxxx.BIN** from the flashcart's SD onto your computer.
=== Cleaning the firmware ===
* Download ''fw.py'' and place it in the same directory as ''FWxxxxxx.BIN''.
* Run ''python fw.py FWxxxxxx.BIN''. You should now have 4 files, ''%%cleaned.bin%%'', ''%%UserSettings.bin%%'', ''%%WifiAccessPoints.bin%%'' and ''%%WifiCalibration.bin%%''.
===== Gathering and Submitting Dump Info =====
Copy and paste the following in a text document, and fill it out to the best of your abilities. If you need help, please come chat with us on the [[https://discord.gg/AHTfxQV|VGPC Discord]].
--Console--
Console:
Edition:
--Dump--
Dump tool:
Dumper (person who dumped the firmware):
Dump creation date (YYYY-MM-DD):
Firmware build timestamp:
--Unmodified firmware--
Size in bytes:
CRC32:
MD5:
SHA-1:
SHA-256:
--Cleaned firmware--
Size in bytes:
CRC32:
MD5:
SHA-1:
SHA-256:
--Physical media--
Photos/scans of the back of the console:
UserSettings.bin, WifiAccessPoints.bin and WifiCalibration.bin
Firmware build timestamp can be taken from the output of ''fw.py''.
Unmodified firmware refers to ''%%FWxxxxxx.BIN%%'', cleaned firmware refers to ''%%cleaned.bin%%''.
Photos and ''%%UserSettings.bin%%'', ''%%WifiAccessPoints.bin%%'' and ''%%WifiCalibration.bin%%''should be provided as part of the submission (this is so that the original unmodified dump can be recreated).
Example:
--Console--
Console: Nintendo DS Lite
Edition: Silver
--Dump--
Dump tool: dsbf_dump
Dumper (person who dumped the firmware): xprism
Dump creation date (YYYY-MM-DD): 2022-10-25
Firmware build timestamp: 2006-11-09 21:30
--Unmodified firmware--
Size in bytes: 524288
CRC32: fa6af0bd
MD5: 2e1af1cb16c8e91f2dd5c5403a1c794b
SHA-1: d5aee4ecd17dbb9003ba6e30dea8e92892b79d4f
SHA-256: ab5f60ab5bc5b797e9683675daef0dc35681a9d218f4ee1b1f54bc752f863706
--Cleaned firmware--
Size in bytes: 524288
CRC32: 973c013f
MD5: 2450d46e98e4584d245f1edf862164a5
SHA-1: 00ce29d150e5f8bf58894cd50b610a57227f6817
SHA-256: cd5acb680de280c2b555ed48af22f3a9d633b7cde983ade50a543603b7d0e20a
--Physical media--