====== 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--