Nintendo DS Firmware
Introduction
Important Notes
- If you have a sealed DS, contact us on the 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
- Python 3 and 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 asFWxxxxxx.BIN
. - Run
python fw.py FWxxxxxx.BIN
. You should now have 4 files,cleaned.bin
,UserSettings.bin
,WifiAccessPoints.bin
andWifiCalibration.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 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-- <Link to photos and the 3 .bin files>