Jump to content

Nintendo 3DS (nintendo-ctr)

From postmarketOS Wiki
Revision as of 21:38, 22 August 2021 by Knuxify (talk | contribs)
Warning WARNING: This device is not recommended for future use with postmarketOS due to its armhf architecture. Alpine Linux (the distribution that postmarketOS extends) pmaports#599 has been considering dropping it.
The processor of the device may support the armv7 architecture. If so, you can modify the device package and change the architecture accordingly.
This device is marked as not booting.
Nintendo 3DS
Nintendo 3DS
Nintendo 3DS
Manufacturer Nintendo
Name 3DS
Codename nintendo-ctr
Released 2011
Hardware
Chipset CHANGE_ME
CPU ARM11, ARM9, CHANGE_ME
GPU CHANGE_ME
Display 400x240, 320x200 w/ touchscreen
Storage CHANGE_ME
Memory 128mb
Architecture armhf
Software
Original software 3DS OS
postmarketOS
Category testing
Pre-built images no
Mainline partial
postmarketOS kernel 5.11-rc1
Warning WARNING: This device is not recommended for future use with postmarketOS due to its armhf architecture. Alpine Linux (the distribution that postmarketOS extends) pmaports#599 has been considering dropping it.
The processor of the device may support the armv7 architecture. If so, you can modify the device package and change the architecture accordingly.
This device is marked as not booting.
Status: Required packages build and boot, still need a way to get rootfs working
Nintendo New 3DS
Nintendo 3DS
Nintendo 3DS
Manufacturer Nintendo
Name New 3DS
Codename nintendo-ktr
Released 2014
Hardware
Chipset CHANGE_ME
CPU ARM11, ARM9, CHANGE_ME
GPU CHANGE_ME
Display 400x240, 320x200 w/ touchscreen
Storage CHANGE_ME
Memory 256mb
Architecture armhf
Software
Original software 3DS OS
postmarketOS
Category testing
Pre-built images no
Mainline partial
postmarketOS kernel 5.11-rc1

The Nintendo 3DS is a handheld video game console released by Nintendo in 2011. A later revision, the New Nintendo 3DS, was released in 2014.

Contributors

Maintainer(s)

Users owning this device

  • AAT596 (Notes: Testing/Experimenting with Homebrew)
  • AlleM43 (Notes: New XL and Original, both on CFW)
  • Bastindo (Notes: Original 3DS with custom firmware)
  • BlackEyedSquid (Notes: Original Nintendo 3DS with Luma3DS CFW)
  • Coatlessali
  • Dolphinana (Notes: XL red, Luma3DS, can run GNU/Linux from firmware loader)
  • Earboxer (Notes: nintendo-ktr: New Nintendo 3DS XL)
  • Illen (Notes: Nintendo 3DS XL)
  • Jacobk (Notes: original model, couldn't figure out how to boot pmOS though)
  • Knuxify (Notes: New Nintendo 3DS XL)
  • Little-miss-synth (Notes: runs luma3ds, with 3dslinux as alt payload)
  • Neko (Notes: 2DS - Homebrewed)
  • Oliver193 (Notes: Old 3DS XL, 64GB SDXC, EU firmware, No cfw installed.)
  • Roboe (Notes: (second hand) aqua blue O3DS, CTR-001(EUR); version-hardware: CTR-S-EUR-C2, firmware: Sys 11.11.0-43E, storage: 32GB (SD card); never connected to the internet; running Luma3DS CFW chainloaded with boot9strap bootloader (not fastboot3DS!))
  • Roboe (Notes: (second hand) black-turquoise N2DS XL, JAN-001; version-hardware: JAN-S-C0, firmware: Sys 11.10.0-43E, storage: 128GB (microSD card); never connected to the internet; running Luma3DS CFW chainloaded with boot9strap bootloader (not fastboot3DS!))
  • Schrmh (Notes: 3DS on FW 1.0.0E; 3DS xl and new 3DS. Also have a GW card & Cubic Ninja)
  • Sputnik1973 (Notes: XL model super smash bros limited edition.)
  • Tfuxu (Notes: Owns a original CTR version in Cosmo Black color)
  • Thejsa (Notes: New Nintendo 3DS (nintendo-ktr) x2)
  • TryzenAlpensky (Notes: I own both O2DS and O3DS)
  • UltrasonicMadness
  • Veast (Notes: Untested)
  • Vladuwka12 (Notes: New 3DS. Running Luma3DS)
  • Zephyr1112 (Notes: Old 2DS, 16GB SDHC, latest EU firmware w/ Luma3DS)


Software used

This port makes use of the 3DS Linux fork, arm9linuxfw and firm_linux_loader maintained by members of the linux-3ds organization on GitHub.

TODO TODO: Looks like there's an upstream MR for adding initrd loading support... perhaps try to package this again?

Installation

Note Note: Before you can run Linux on the console, you will first need to install Luma3DS. To do so, follow the guide on 3ds.hacks.guide. Avoid video tutorials as they may be obsolete.

This is completely safe and will not overwrite your 3DS's internal memory. The kernel is loaded off the SD card by the firm_linux_loader (which can be triggered at startup from Luma3DS's firmware selection menu).

In pmbootstrap init, choose:

  • nintendo-ctr if you own an Old 3DS, Old 3DS XL or Old 2DS.
  • nintendo-ktr if you own a New 3DS, New 3DS XL or New 2DS XL

Then, run pmbootstrap install.

The Nintendo 3DS does not have a flashing method, and the bootloader is loaded from the SD card. As such, to install postmarketOS to the device, run the following commands:

$ codename="ctr" # replace with ctr or ktr depending on your console 
$ mkdir ~/linux3ds
$ mkdir ~/linux3ds/linux
$ mkdir -p ~/linux3ds/luma/payloads
$ pmbootstrap export
$ cp /tmp/postmarketOS-export/vmlinuz-nintendo-3ds ~/linux3ds/linux/zImage
$ cp ~/.local/var/pmbootstrap/chroot_rootfs_nintendo-*tr/boot/nintendo3ds_*tr.dtb ~/linux3ds/linux
$ cp ~/.local/var/pmbootstrap/chroot_rootfs_nintendo-*tr/lib/firmware/3ds/arm9linuxfw.bin ~/linux3ds/linux
$ cp ~/.local/var/pmbootstrap/chroot_rootfs_nintendo-*tr/lib/firmware/3ds/firm_linux_loader.firm ~/linux3ds/luma/payloads

Then copy the contents of the ~/linux3ds folder to the root of your 3DS's SD card.

Booting

Note Note: This does not work yet, and booting will just result in a kernel panic due to the initramfs not being loaded. The initramfs cannot be loaded by the bootloader yet, it is currently meant to be built into the kernel (however this experimental package does not build it with the initramfs).

While booting your 3DS (on the Luma3DS splash screen, if enabled) press the Start button. A menu will pop up allowing you to select a firmware. Choose firm_linux_loader from the list.

See also