3dsutil: bridging the gap to my 3DS
Automating the workflow for my modded console.
I have been spending a lot of time lately refining how I move files and homebrew to my 3DS. I got tired of the overhead of standard GUI tools and decided to build a CLI utility to automate the most annoying parts of the workflow.
Meet 3dsutil.
Why I built it
I built 3dsutil out of pure necessity. After a system reset, I found myself with a modded 3DS but no way to bootstrap the essential apps like FBI or Universal-Updater—and I was stuck at work without a screwdriver or SD card reader.
With only my MacBook, an iPhone, and a hotspot, I needed a way to push and launch .3dsx files directly to the console. 3dsutil bridges that gap: it uses the Homebrew Launcher’s NetLoader to bootstrap the environment wirelessly. No disassembly, no hardware adapters, just terminal-based deployment.
What it does today
It is currently a single Python tool with zero external dependencies, making it extremely portable:
- NetLoader: Send
.3dsxfiles directly to the Homebrew Launcher. It finds the console on the local network automatically. - FTP Management: A clean CLI interface to browse and upload files.
- Automation: Handles recursive uploads, automatic extraction of archives (
.zip/.7z), and pattern-based filtering. - Health Checks: Quick status commands to ensure I am actually connected before I start a transfer.
The roadmap
I am treating the 3DS like a piece of hardware I want to fully integrate into my development desk. The next two big challenges are:
- Display Streaming: Capturing the 3DS screen output to my PC.
- Joystick/Input Forwarding: Mapping PC controller inputs to the 3DS.
I am currently in the research phase for both—figuring out the best protocols and latency trade-offs is next on the list.
Try it
If you are interested in the code or want to try it out, the repository is up at github.com/spkskx/3dsutil.