neofetch-style system info display for the Nintendo 3DS family
[ZL].-------------[ZR] New Nintendo 3DS
| |~ top screen~| | -------------------------
| | | | Firmware: 11.17.0-50U
|__|_____________|_| Region: USA
|o .-----------. /\ | -------------------------
| | | ( )| CPU: ARM11 4x804MHz
|+ | |* \/ | GPU: DMP PICA200
| '-----------' | RAM: 256MB FCRAM
|[sel] (h) [sta] | -------------------------
'--------------------- Top LCD: 800x240 (3D)
Bot LCD: 320x240
(XL) Size: 4.88"
Features: 3D NFC Stereo
-------------------------
Battery: [########..] 80%
SD: 8.3/29.8GB
NAND: 0.2/1.0GB
- Per-model ASCII art — Original 3DS, 2DS, New 3DS, New 2DS XL
- XL variants automatically tagged with
(XL)under the art - Firmware version with region suffix (e.g.
11.17.0-50U) - Full hardware spec table per model — CPU, GPU, RAM, display resolution, screen size, features
- Visual battery bar with charging indicator
- SD card and NAND storage usage
- Bottom screen shows title, GitHub link, and exit hint
- Any Nintendo 3DS family console
- Custom firmware — Luma3DS recommended
- Homebrew Launcher (for
.3dsx) or any CIA installer (for.cia)
- Download
3dsfetch.3dsxfrom the latest release - Copy to
/3ds/3dsfetch/3dsfetch.3dsxon your SD card - Launch via Homebrew Launcher
- Download
3dsfetch.ciafrom the latest release - Copy to your SD card
- Install with FBI or any CIA installer
- Launch from the home menu
Press START to exit either version.
- devkitPro with 3DS support
- Add devkitPro's pacman repo to
/etc/pacman.confthen:
sudo pacman -S devkitARM libctru 3dstools devkit-env general-tools- For CIA builds only:
yay -S bannertool-git makerom-git# Source devkitPro environment if not already in your shell
source /etc/profile.d/devkit-env.sh
# 3DSX (Homebrew Launcher)
make
# CIA (permanent install) — requires banner.png (256x128) in project root
make cia
# Clean
make clean3ds/
├── Makefile
├── app.rsf # CIA permissions spec
├── silent.wav # Silent banner audio for CIA
├── icon.png # 48x48 app icon
├── banner.png # 256x128 CIA banner (not in repo — provide before make cia)
└── src/
├── main.c # All logic: sysinfo, ASCII art, rendering, main loop
└── main.h # Structs, enums, color defines
| Model | Art | XL Tag |
|---|---|---|
| Original 3DS | Clamshell, no C-stick | — |
| Original 3DS XL | Same as above | ✓ |
| Nintendo 2DS | Flat slab, both screens | — |
| New Nintendo 3DS | Clamshell + C-stick + ZL/ZR | — |
| New Nintendo 3DS XL | Same as above | ✓ |
| New Nintendo 2DS XL | Flat clamshell + C-stick + ZL/ZR | — |
| Field | Source |
|---|---|
| CPU | Static per model (ARM11 2x268MHz / 4x804MHz) |
| GPU | Static (DMP PICA200, all models) |
| RAM | Static per model (128MB / 256MB FCRAM) |
| Display | Static per model (resolution + screen size) |
| Features | Static per model (3D, NFC, sound type) |
| Firmware | osGetKernelVersion() |
| Region | CFGU_SecureInfoGetRegion() |
| Battery | PTMU_GetBatteryLevel() + PTMU_GetBatteryChargeState() |
| Storage | FSUSER_GetArchiveResource() for SD and CTR NAND |
MIT — © 2026 viewerofall