You can find them here: https://github.com/marcotw2/linux_3ds_scripts
- Go to https://toolchains.bootlin.com
- Select arch: armv6-eabihf
- Select libc: glibc
- Download bleeding-edge
- Uncompress it (for example to
/opt
) - Add the extracted directory of the toolchain to
$PATH
- Command:
export PATH=$PATH:/opt/armv6-eabihf--glibc--bleeding-edge-2020.08-1
- Command:
git clone https://github.com/crosstool-ng/crosstool-ng.git
- Run:
autoconf && ./configure --enable-local && make install
- Run
./ct-ng ct-ng menuconfig
- Go to Target options
- Target Architecture -> Select arm
- Floating point -> Select Hardware (FPU)
- Emit assembly for CPU -> Write mpcore
- Exit -> Exit -> Save? -> Yes
- Run
./ct-ng build
git clone https://github.com/buildroot/buildroot.git
- Download Buildroot .config to
buildroot/.config
- (You can add your scripts to
output/target/
) - Set toolchain path (in my case
/opt/armv6-eabihf--glibc--bleeding-edge-2020.02-2/
):make menuconfig
- Navigate to
Toolchain --->
- Properly set the
Toolchain path
, save and exit
- Run
make
(-j N
)- If you get an error regarding a missing
rootfs-overlay
folder, create the folder and runmake
again
- If you get an error regarding a missing
From buildroot/.config
- To change the Welcome Message modify this: Line 373 > BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot"
git clone https://github.com/xerpi/linux_3ds.git
- Copy
buildroot/output/images/rootfs.cpio.gz
tolinux_3ds/
- Run
./make_3ds.sh
- Copy
arch/arm/boot/zImage
tosd:/linux/
- Copy
arch/arm/boot/dts/nintendo3ds_ctr.dtb
tosd:/linux/
From linux_3ds/drivers/input/misc/nintendo3ds_codec_hid.c
- To change highlight color modify this: Line 48 > #define HIGHLIGHT_COLOR COLOR_BLUE
- To change keyboard color (not highlighted) modify this: Line 120 > color = COLOR_WHITE;
- To change font size modify this: Line 125, Line 128, Line 134, Line 137 > row * vkb->font->height * 2
- This will only increase/decrease font size and you will still need to click in the previus position of the letters (which make this useless...)
Step 4: Build arm9linuxfw (optional, but needed for SD card support)
Step 4.a: Build arm9linuxfw (optional, but needed for SD card support)
git clone https://github.com/xerpi/arm9linuxfw
- Run
make
- Copy
arm9linuxfw.bin
tosd:/linux/
From /arm9linuxfw/source/main.c
- To change poweroff combination modify this: Line 9 > #define POWEROFF_MASK (BUTTON_L | BUTTON_R | BUTTON_DOWN | BUTTON_B)
Step 5: Build FIRM Linux Loader
Step 5: Build FIRM Linux Loader
git clone https://github.com/xerpi/firm_linux_loader
- Run
make
- If you get a "firmtool: no such file or directory" error head over to https://github.com/TuxSH/firmtool to install it
- Copy
firm_linux_loader.firm
to thepayloads/
folder of 3DS
From firm_linux_loader/arm9/source/main.c
- To add a custom boot message add a line after this: Line 60 > Debug("custom boot message");
- To add a colored custom boot message add a line after this: Line 60 DebugColor(COLOR_EXAMPLE, "custom boot message");
From firm_linux_loader/arm9/include/draw.h
-
Color list:
- #define COLOR_BLACK RGB(0x00, 0x00, 0x00)
- #define COLOR_WHITE RGB(0xFF, 0xFF, 0xFF)
- #define COLOR_RED RGB(0xFF, 0x00, 0x00)
- #define COLOR_GREEN RGB(0x00, 0xFF, 0x00)
- #define COLOR_BLUE RGB(0x00, 0x00, 0xFF)
- #define COLOR_CYAN RGB(0x00, 0xFF, 0xFF)
- #define COLOR_MAGENTA RGB(0xFF, 0x00, 0xFF)
- #define COLOR_YELLOW RGB(0xFF, 0xFF, 0x00)
- #define COLOR_GREY RGB(0x77, 0x77, 0x77)
- #define COLOR_TRANSPARENT RGB(0xFF, 0x00, 0xEF)
-
You can define other colors, read here: http://enchantia.com/graphapp/doc/tutorial/colours.htm
Step 2.a fails for me. Here is the issue: https://pastebin.com/d0ghEmyF
Please help me find out what I am doing wrong.