Files
dspico/GUIDE.md
2025-11-25 20:16:01 +01:00

7.4 KiB

DSpico Guide

This guide aims to document step by step how to setup your DSpico.

Prerequisites

  1. Ensure you have a Linux or WSL (Windows Subsystem for Linux) environment set up.
  2. Install BlocksDS
  3. Install .NET 9.0 for your environment (note: this link points to the instructions for Ubuntu, but links for most OS'es are available on the same page)
  4. Install a few prerequesite packages: sudo apt install cmake gcc-arm-none-eabi build-essential git
  5. Set an environment variable for dlditool: export DLDITOOL=/opt/wonderful/thirdparty/blocksds/core/tools/dlditool/dlditool

1. Getting and assembling your DSpico

Refer to the DSpico hardware repository for all information about ordering and assembling a DSpico.

2. Compiling the DSpico DLDI

  1. Clone the DSpico DLDI repository
  2. Run make

You should now have DSpico.dldi.

3. Compiling the DSpico Bootloader

  1. Clone the DSpico Bootloader repository
  2. Initialize the submodules: git submodule update --init
  3. Run make

You should now have BOOTLOADER.nds.

  1. DLDI patch the bootloader: $DLDITOOL /path/to/DSpico.dldi BOOTLOADER.nds
  2. Clone the DSRomEncryptor repository
  3. Compile DSRomEncryptor by running: dotnet build

The compiled executable can be found at DSRomEncryptor/DSRomEncryptor/bin/Debug/net9.0/, in the project's folder.

  1. Ensure files containing the NTR and TWL blowfish tables are present in the same folder as the DSRomEncryptor executable (see also the DSRomEncryptor readme)
  2. Run DSRomEncryptor /path/to/BOOTLOADER.nds default.nds

You should now have default.nds.

4. Optional: Compiling Wrfuxxed

Follow these steps if you want to use the Wrfuxxed exploit to boot the DSpico on unmodified DSi and 3DS systems.

  1. Clone the Wrfuxxed repository
  2. Run make
  3. DLDI patch the exploit: $DLDITOOL /path/to/DSpico.dldi uartBufv060.bin

5. Compiling the DSpico Firmware

  1. Clone the DSpico Firmware repository
  2. Initialize the submodules:
    git submodule update --init
    cd pico-sdk
    git submodule update --init
    cd ..
    
    Note that you shouldn't use --recursive because it draws in a lot of unnecessary submodules inside the pico-sdk.
  3. Copy default.nds from step 3 to the roms folder of the firmware repository
  4. Optional if you want to use Wrfuxxed:
    1. Copy the WRFU Tester v0.60 rom to roms/dsimode.nds (SHA-1: 2d65fb7a0c62a4f08954b98c95f42b804fccfd26)
    2. Copy uartBufv060.bin to the data folder
    3. Uncomment (remove the #) the DSPICO_ENABLE_WRFUXXED option in CMakeLists.txt
  5. Run ./compile.sh. If you get an error saying that there are missing permissions, run chmod +x compile.sh and retry.

The build folder should now contain DSpico.uf2.

6. Flashing the DSpico

  1. Boot the DSpico in BOOTSEL mode.
    • If the rp2040 was not flashed before, it should automatically enter BOOTSEL mode when it is connected to a PC via USB.
    • If the rp2040 already has the DSpico Firmware, eject the micro SD card and it should automatically enter BOOTSEL mode when it is connected to a PC via USB.
    • Otherwise, hold the BOOTSEL button while connecting to a PC via USB to enter BOOTSEL mode.
  2. Copy DSpico.uf2 to the USB drive that appeared when connecting the DSpico.
  3. Disconnect the DSpico from the PC.

7. Compiling Pico Loader

  1. Clone the Pico Loader repository
  2. Initialize the submodules: git submodule update --init
  3. Run make

You should now have the following files:

  • picoLoader7.bin
  • picoLoader9_DSPICO.bin
  • data/aplist.bin
  • data/savelist.bin

8. Compiling Pico Launcher

  1. Clone the Pico Launcher repository
  2. Initialize the submodules: git submodule update --init
  3. Run make

You should now have LAUNCHER.nds.

9. Prepare the micro SD card

  1. If necessary, format your micro SD card using these steps: https://dsi.cfw.guide/sd-card-setup.html.

Warning

Do NOT use the built-in formatting tool of Windows!

  1. Copy the _pico folder from the Pico Launcher repository to the root of the micro SD card.
  2. Copy LAUNCHER.nds to /_picoboot.nds.
  3. Copy picoLoader7.bin to /_pico/picoLoader7.bin.
  4. Copy picoLoader9_DSPICO.bin to /_pico/picoLoader9.bin.
  5. Copy aplist.bin to /_pico/aplist.bin.
  6. Copy savelist.bin to /_pico/savelist.bin.
  7. Copy any DS roms to your micro SD card. It is recommended to make a folder to put them in.

The final directory structure will look like this:

.
├── _pico
│   ├── themes
│   │   ├── material
│   │   │   └── theme.json
│   │   └── raspberry
│   │       ├── bannerListCell.bin
│   │       ├── bannerListCellPltt.bin
│   │       ├── bannerListCellSelected.bin
│   │       ├── bannerListCellSelectedPltt.bin
│   │       ├── bottombg.bin
│   │       ├── gridcell.bin
│   │       ├── gridcellPltt.bin
│   │       ├── gridcellSelected.bin
│   │       ├── gridcellSelectedPltt.bin
│   │       ├── scrim.bin
│   │       ├── scrimPltt.bin
│   │       ├── theme.json
│   │       └── topbg.bin
│   ├── aplist.bin
│   ├── savelist.bin
│   ├── picoLoader7.bin
│   └── picoLoader9.bin
└── _picoboot.nds

Note: If you want to play DSiWare on the DSpico, additional files are required. See the Pico Loader readme for more information.

10. Test your DSpico

  1. Insert the micro SD card in your DSpico.
  2. Insert the DSpico in your DS, DSi or 3DS device.
  3. Turn on the device.
  4. The DSpico should appear on the menu, of if you are using Wrfuxxed on a DSi, Pico Launcher should start automatically after going through the exploit.
  5. If you're not using Wrfuxxed on a DSi, launch the DSpico from the menu.
  6. Pico Launcher should start and shows the contents of your micro SD card.
  7. Navigate to a DS rom and press A to start it.

Troubleshouting

The DSpico is not detected by my DS, DSi or 3DS system or hangs at the DS(i) splash screen

  • Check that the bootloader was properly encrypted with the correct blowfish keys.
  • Check that the firmware was compiled in RelWithDebInfo mode.

Wrfuxxed doesn't work, WRFU Tester stays on screen

  • Ensure the correct version of WRFU Tester is being used (v0.60).
  • Ensure that the DSPICO_ENABLE_WRFUXXED option is enabled in the firmware CMakeLists.txt.

I get "Error: Failed to mount SD card.", or a blue screen after the Wrfuxxed exploit

  • Mounting your micro SD card failed. Check if there's anything wrong with it, try reformatting (see Step 9) or try a different micro SD card. In case of a blue screen, make sure the exploit has been patched with the proper DLDI driver.

I get "ERROR: Failed to open Pico Loader file.", or a red screen after the Wrfuxxed exploit

  • /_pico/picoLoader9.bin or /_pico/picoLoader7.bin could not be opened. Check that you copied all necessary files to the micro SD card (see Step 9).