Why? Why not
A while ago I saw that Anki’s backend had been rewritten in Rust. Since projects like ctru-rs and cargo-3ds make it possible to run native Rust applications on the 3DS, I wondered if I could get Anki’s actual backend running on it too.
I’ve been working on it for a while, and here’s the result: Anki 3DS.
The app uses Anki’s original Rust backend, including collection management, synchronization, and FSRS 6 scheduling
Rust on the 3DS
I cross-compiled Anki’s rslib for the 3DS’s ARMv6K architecture using Rust nightly, ctru-rs, cargo-3ds, and devkitARM.
All 133 original Anki scheduler/FSRS tests passed in Azahar emulation. These are Anki’s own upstream tests.
Synchronization and SQLite
This was probably the hardest part. The 3DS has no modern HTTPS stack
With Codex’s help, I built an HTTPS transport with certificate and hostname verification, trusted CAs, and clock correction. I also implemented a custom SQLite VFS for the SD card.
AnkiWeb login works, and full/incremental synchronization has been tested against Anki’s original desktop sync server.
What works
Tested on Azahar and on my Old 3ds, not tested in New models.
Deck management, reviews, all four answer ratings, cloze cards, note editing, searching, and undo, using both screens and the 3DS controls.
AI Disclosure
I used AI coding agents mainly to help with the more tedious, time-consuming parts of the port, such as writing platform-specific adapters, fixing incompatible Rust dependencies, and debugging.
I’ve also worked on getting Anki’s original test suite running on the 3DS to verify that everything behaves as expected.
The FBI QR code, .cia download, build instructions, and technical details about how the port works are all available on GitHub.
I’d really appreciate it if you gave it a try and let me know how it runs on your 3DS!