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.ndsto 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.pyand 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.binandWifiCalibration.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.binshould 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>