Homebrew app Emulator [Release] 3DS-CLI - Run a real RISC-V Linux environment on the Nintendo 3DS

  • Thread starter Thread starter cmdada
  • Start date Start date
  • Views Views 784
  • Replies Replies 11
  • Likes Likes 6

cmdada

Member
Newcomer
Joined
May 29, 2026
Messages
11
Reaction score
14
Trophies
0
Age
18
Location
united states
Website
adabit.org
XP
30
Country
United States
Hi guys!!

I’m releasing 3DS-CLI, a Nintendo 3DS homebrew app that boots a real RISC-V Linux environment inside the normal 3DS Homebrew Launcher. It uses mini-rv32ima by cnlohr as a compact RISC-V CPU emulator, with terminal output on the top screen and a custom touch keyboard on the bottom screen.

example.jpg


Features
  • Boots a RISC-V Linux image on real 3DS hardware through software emulation
  • VT100-style terminal output on the top screen
  • Custom bottom-screen touch keyboard
  • D-pad sends arrow keys
  • Includes a prebuilt Linux image with BusyBox tools, a JavaScript runtime, and CLI Doom

Installation

Universal-Updater:
3DS-CLI can be installed directly from Universal-Updater. Just search for 3DS-CLI and install it from there.

Manual install:
  1. Download 3DS-CLI_Install.zip from the latest GitHub release
  2. Unzip it
  3. Copy 3ds-cli.3dsx and Image into the /3ds/ folder on your SD card
  4. Launch 3DS-CLI from the Homebrew Launcher
  5. Wait for Linux to boot. On my SDXC card and 3ds ll it takes around 172 seconds to reach the login prompt.
  6. Log in as root with a blank password.
Controls
  • Bottom screen: touch keyboard
  • D-pad: arrow keys
  • START: exit back to the Homebrew Launcher


This is mostly a fun technical experiment rather than a fast Linux machine. It is running through software emulation on 3DS hardware, so booting takes a while and performance is limited.


Download / Source
GitHub:
https://github.com/cmdada/3DS-CLI
Latest release:
https://github.com/cmdada/3DS-CLI/releases/latest

Credits
  • Built with devkitARM / libctru
  • Powered by mini-rv32ima by cnlohr
License
GPL-3.0.
 
Is this for the new 3ds family only as on my old 3ds xl I'm getting an error saying failed to allocate 33554432 bytes of RAM
Post automatically merged:

Is this for the new 3ds family only as on my old 3ds xl I'm getting an error saying failed to allocate 33554432 bytes of RAM
 
Interesting.
Does this have access to the real sdcard? Could be useful for some maintenance tasks.
A kernel driver could be written, but I have not implemented it yet. If you make an issue on the github with what you'd want it to be able to do i can look into making it

Is this for the new 3ds family only as on my old 3ds xl I'm getting an error saying failed to allocate 33554432 bytes of RAM
I honestly haven't put work into supporting it, i only have a 3ds ll. If you want I can try making an image with less ram for you to try. please make an issue on the github for this :)
Post automatically merged:

1780174035248.png
For anyone wondering, here's the coremark results for it haha... actually a bit better than I expected but yeah it sure isn't fast
 
Last edited by cmdada,
What a fascinating thing. I love all the things this little machine can do and the amazing people making it do these things.
thanks!
Yup, although it'll run pretty much anywhere you can get libc to compile, I first used mini-rv32ima on an atmel processor of all things
I did realize subsequent to this it's running on the arm11 cores :3
 
  • Like
Reactions: SpaceGameJunkie

Site & Scene News

Popular threads in this forum