3DS Store › Tools › 3dsDL

3dsDL changelog

v0.9.0 · Oct 31, 2026

Updating: open Settings > Updates in 3dsDL and it installs this in place. To install fresh, scan the QR code on ankush.one/3dsDL with FBI's Remote Install > Scan QR Code, or download 3dsDL.cia / 3dsDL.3dsx below.

What's new

3ds.local is a file browser

The page Receive serves is rebuilt to work like a file manager on a computer (#24):

  • The SD card's usual folders and your Files favourites are in a sidebar, next to Send Links and Transfers.
  • Select several files with Shift and Cmd or Ctrl clicks, by drawing a box, or with a long press on a phone.
  • Move To and Copy To pick the folder in columns instead of making you type a path. You can also drag items onto a folder (hold Option, or Ctrl on Windows, to copy), or cut, copy and paste with the keyboard.
  • When names are already taken, it asks once: Skip, Keep Both or Replace. Replace merges a folder into one of the same name.
  • Text and config files open in a real code editor with line numbers, colours for INI, JSON, XML, Lua and more, and search and replace. The console serves it, so it works without internet.
  • On a phone the sidebar slides in, and a bar at the bottom holds the actions for what you selected.

Files

  • Favourites: R stars a folder or file, and L opens the list from anywhere (#21).
  • Tap a row's icon to mark it. With something cut or copied, Y on any entry starts with Move Here or Paste Here. Pasting asks once about every name already taken, and folders with the same name merge (#24).
  • 7z, RAR and tar archives extract, and ZIPs extract about four times faster.
  • Songs show their title, album, cover and length on the top screen, and pictures show a preview (#8).
  • Names with accents, kana or curly quotes are no longer cut short.
  • A rename that only changes capital letters works, from the console and from the page.
  • A file with a very long line no longer freezes the editor (#20).

Installs

  • Azahar's compressed .zcia files install like CIAs (#14).
  • An install that has started can no longer be cancelled, since cancelling one could make the SD card unreadable until a restart (#15).
  • A CIA that would replace other software with the same title ID asks first (#16).
  • 3dsDL can reinstall itself or go back to an older version. The new one goes in whole before the running one is removed.

Receive

  • One address, and a list of everything that came and went with time left for what is on its way. X clears what is done.
  • Downloads and Receive keep going with the lid closed (#13).
  • Websites can send links with a folder to save into, and ask to replace an app or extract an archive (thanks @monkeymaximus, #23). The console checks where each link leads and names that site before asking. Links from other sites start on Cancel, and Don't Allow stops a device from sending more.
  • An install requested from the page that doesn't happen says why.
  • Files opened from a Receive row follows the changes you make on the page.

Tickets

A homebrew CIA's ticket can't be backed up, so Delete Unused Tickets used to keep it without saying why. Now it shows what the ticket belonged to and asks before deleting it.

More

  • sdmc:/3ds/3dsDL/log.txt records what happened in each session for bug reports, and a crash on any thread leaves crash.txt (#12).
  • Update checks work in time zones west of UTC again.
  • Console Clock's Set the Clock changes the time straight away (#7).
  • Deleting a title keeps your place in the list (#19).
  • In every list, a tap highlights a row first and a second tap opens it.

Tested so far

Tested on a New 3DS, and the page in desktop and phone browsers. Old 3DS reports are very welcome in Issues.

Thanks

  • @monkeymaximus for the send options websites can use (#23).
  • @HARSHCRR for keeping the Titles read inside its own buffers.
  • Everyone who reported what was wrong or missing: @japzone1 (#7), @jsphgei-dot (#8), @matthewpena004922-hub (#12), @sen2008 (#13), @flanter21 (#14), @epicuser123 (#15), @rlmilliron (#16), @fuu90 (#17, #21, #24), @Oliwier098PL (#19), @juppytaar (#20) and @manueldidonna (#22).

v0.8.2 · Oct 23, 2026

Updating: open Settings → Updates in 3dsDL and it installs this in place. To install fresh, scan the QR code on ankush.one/3dsDL with FBI's Remote Install → Scan QR Code, or download 3dsDL.cia / 3dsDL.3dsx below.

What's new

Big folders open at once

Files used to look up every entry one by one before showing anything, which took minutes in a folder of thousands and looked like a freeze (#2). Folders now read in a fraction of a second and fill in while you look at them. A folder you opened before shows straight away, even after a restart, while it's read again.

Sorting

  • Files: X opens Sort with Name, Date, Size or Type and Reverse Order. Sorting by size adds up each folder in the background, and folders move into place as their sizes arrive (#4).
  • Titles: Software and Updates and DLC sort by name or size, either way round, and can show only what's on the SD card, in system memory, only updates or only DLC.
  • The order is always on the top screen, at the right of the dotted line under the title.
  • Every list's scrollbar can be dragged to get through long lists quickly.

Titles opens at once

Titles no longer waits behind "Please wait" while it reads every installed title. The lists fill in as titles arrive.

Delete Unused Tickets is safe

When the console couldn't read the SD card's title list, it reported no software at all, so every game's ticket looked unused. Deleting them made games vanish from the HOME Menu. 3dsDL now checks the list two ways and the SD card's own folders, stops if anything disagrees, and keeps a copy of every ticket it deletes in sdmc:/3ds/3dsDL/tickets/deleted/. Clean Up can put them back.

Receive

  • Replace changed: sending a folder that's already on the console uploads only the files that differ.
  • Leaving Receive is instant, even during a big upload.
  • Deleting a folder from the page is one quick request.

More

  • Start in Files opens a .3dsx (#5, the launching half).
  • The SD card's free space is in the status bar on every screen.
  • Settings → Downloads → Max Connections sets 1 to 4 connections per download.
  • Screens fade between each other, and touch no longer carries over from one screen to the next (thanks @demirozg, #1).
  • Every tab shows its button, B no longer closes 3dsDL from Home, and text is fitted to the console's font.
  • Please wait screens can be cancelled where stopping is safe.

When something goes wrong

If 3dsDL crashes, it now saves sdmc:/3ds/3dsDL/crash.txt before the error screen shows. Settings → Report Issue shows the file's path, and attaching it to a bug report shows exactly where the crash happened. Receive can download it to your phone.

Tested so far

This release runs on a console. Crash logs haven't been seen from a real crash yet. Reports in Issues are very welcome.

v0.8.1 · Oct 19, 2026

Updating: open Settings → Updates in 3dsDL and it installs this in place. To install fresh, scan the QR code on ankush.one/3dsDL with FBI's Remote Install → Scan QR Code, or download 3dsDL.cia / 3dsDL.3dsx below.

What's new

Reinstall the same version

Installing a CIA whose version is already on the console used to fail with 0xC8E083FC, after the whole file had gone in, because the console will not install the same version over itself. Now 3dsDL asks first: This version is already installed, with Reinstall or Keep Installed.

  • Reinstall backs up the title's save to Checkpoint's folder (as "date Before Reinstall"), removes the installed copy and installs the file, all by itself. Replace, for going back to an older version, now backs up the save the same way.
  • Keep Installed changes nothing and keeps the CIA file.
  • Installs sent from the Receive page report a CIA that was already there instead of an error.

3dsDL never removes itself

Installing an older 3dsDL CIA while 3dsDL runs could remove the running app halfway. It now explains that a newer version is running and stops, and sending the same version again just says it is already installed.

Version numbers

3dsDL's own CIAs now carry a build number that goes up with every build, test builds included, so each one installs over the last. 3dsDL shows its versions as versions everywhere, on the console and on the Receive page.

Tested so far

On a console: sending the running 3dsDL's own CIA again (it says it is already installed), and a test build installing over the one before from inside 3dsDL. Reinstalling a game, with its save backed up first, has not been tried on a console yet. Reports in Issues are very welcome.

v0.8.0 · Oct 19, 2026

<p align="center"><img src="https://ankush.one/3dsDL/assets/banner.jpg" width="560" alt="3dsDL"></p>

Updating: on 0.7.0 or later, open Settings → Updates and 3dsDL installs this in place. To install fresh, open FBI on your 3DS, choose Remote Install → Scan QR Code, and scan the code on ankush.one/3dsDL, or download 3dsDL.cia / 3dsDL.3dsx below.

What's new

Files over Wi-Fi, no FTP app needed

Open Receive and go to the page it shows (scan its QR code, or open http://3ds.local/ on most computers and iPhones). Next to the box for links there is now a Files tab, a file manager for the SD card:

  • Upload files or whole folders with the buttons, or by dropping them on the page. Each file streams straight to the SD card, up to the 4 GiB FAT32 allows, and only takes its real name once every byte has arrived.
  • Download files, view pictures, open and edit text files, make folders, rename, move and delete, one entry or many at once.
  • Send CIAs to the console to install. The console asks once a batch arrives, and the page shows how each install went.
  • Real icons, titles, title IDs and versions for CIAs and homebrew, a filter, hidden files, a storage meter and keyboard shortcuts on a computer.
  • The page follows the console: it tells you when the 3DS is waiting for you to choose something, installing or downloading, and reconnects by itself if you step away.

The first time a device opens Files, the console asks whether to allow it, and the answer lasts until you leave Receive. The page only answers itself, so other websites can't reach your SD card, and it warns you before you change boot.firm, luma or Nintendo 3DS.

Faster and steadier networking

  • The console answers as 3ds.local (or 3ds-2.local if another 3DS already has the name).
  • On a console, uploads run at about 1 MB/s and downloads about the same. Every page and request answers in milliseconds.
  • Files on the console shows dates again. The SD card never reported them through the usual call, so they were always missing.

Test builds

Test builds before a release are now numbered like 0.8.0-beta.1 and published as GitHub pre-releases. The updater never offers them, and anyone on one is offered the real release as soon as it's out.

Tested so far

Files over Wi-Fi was tested on a console from a Mac: uploads and downloads (byte for byte), installing CIAs sent from the page, Allow, file dates, and 3ds.local. Not tried yet: phones, Windows, very large files, Don't Allow, and two consoles at once. The checklist is items 58a to 58f in docs/HARDWARE.md. Reports in Issues are very welcome.

v0.7.2 · Oct 19, 2026

<p align="center"><img src="https://ankush.one/3dsDL/assets/banner.jpg" width="560" alt="3dsDL"></p>

Already on 0.7.1? Open Settings → Updates and 3dsDL installs this over itself. Otherwise open FBI, choose Remote Install → Scan QR Code and scan the code on ankush.one/3dsDL, or download 3dsDL.cia / 3dsDL.3dsx below.

What's new

  • Report Issue. Settings has a new Report Issue tab in the bottom-right corner, and About has a Report an Issue button. Each place to get help is a QR code on the top screen, so you can scan it with your phone:
  • Report a Bug opens the bug report form with your 3dsDL version, CIA or 3DSX, console model and system version already filled in.
  • Discord Server is an invite to the developer's Discord, for questions, ideas and chatting with other users.
  • Developer on X is @ankushKun_, for quick questions or if you don't use GitHub.
  • The download screen's text fits again. On a console, the "Saving to" line and the Sleep Mode note ran over the edges of their panel. The panel is taller now, and the folder sits on a line of its own.

On GitHub

Issues now use forms for bug reports, feature requests and console test reports, so it's clear what to include. Reports of how 3dsDL runs on an Old 3DS or 2DS are especially welcome as a console test report.

Hardware testing

The Report Issue screen was checked in Azahar, where every code scans to the right page. The system version only shows on a real console, because the emulator doesn't provide it. The download screen fix follows a photo of the problem on a New 3DS. The rest of the checklist is in docs/HARDWARE.md.

Checksums (SHA-256)

0ac158329b986be52245aa89a3cc60e8231d786804269cbb8c5dfcd5f3289350  3dsDL.3dsx
b23216f330c96673d240c971d6fce23c33a712ff5bc974d3a58fe3d440ebe8a9  3dsDL.cia

Full Changelog: https://github.com/ankushKun/3dsDL/compare/v0.7.1...v0.7.2

v0.7.1 · Oct 19, 2026

<p align="center"><img src="https://ankush.one/3dsDL/assets/banner.jpg" width="560" alt="3dsDL"></p>

> On the 0.7.0 CIA? It crashes at start-up, so it can't update itself. Install this release with FBI: open FBI, choose Remote Install → Scan QR Code and scan the code on ankush.one/3dsDL, or install 3dsDL.cia below. The .3dsx build was not affected.

What's new

  • Fixes the CIA crashing as soon as it opened. The interface sounds added in 0.7.0 use the console's audio DSP, and the CIA was missing permission to use the DSP's memory, so it stopped with a data abort. The CIA now asks for the DSP's memory and service.

Everything else is the same as 0.7.0, which lists what's new in this version series.

v0.7.0 · Oct 19, 2026

<p align="center"><img src="https://ankush.one/3dsDL/assets/banner.jpg" width="560" alt="3dsDL"></p>

Install in a minute: open FBI on your 3DS, choose Remote Install → Scan QR Code, and scan the code on ankush.one/3dsDL. Or download 3dsDL.cia / 3dsDL.3dsx below. Installing the CIA over an earlier version updates it in place and keeps your settings and history.

> Coming from 0.6.0? This is the last update you install by hand. From 0.7.0 on, 3dsDL tells you when a new version is out and updates itself from Settings → Updates.

What's new

It keeps itself up to date

  • When it opens, 3dsDL asks GitHub for the newest release and shows a notification if there is one.
  • Settings → Updates shows what's new and installs it in place, whichever build you run (the CIA restarts into the new version; the .3dsx replaces itself and closes).
  • Every update is checked against the release's SHA-256 checksums before anything changes.

Titles, saves and tickets

A new Titles screen, like the system's Data Management:

  • Software and Updates and DLC: icons, versions and sizes, with Launch, Get Seed, Delete and Delete with Ticket. System titles never show up, so they can't be deleted by mistake.
  • Save Data and Extra Data: back up, restore and look inside. Backups go in Checkpoint's own folders (sdmc:/3ds/Checkpoint/) with the same names and the same restore steps, so a backup made by either app restores in the other. A restore always backs up what's there first.
  • Tickets: install .tik files from Files, export a title's ticket, and delete unused ones.
  • Clean Up clears the unfinished installs that make a CIA refuse to install again, and Seeds imports a seeddb.bin.

Send links from anywhere

  • Receive on the home screen shows a QR code: scan it with your phone, paste links into the page that opens, and they download on the 3DS.
  • FBI's own tools keep working: servefiles.py, sendurls.py and Boop send to port 5000 exactly as they did to FBI.
  • Add to Queue collects links as you scan them (the camera comes straight back for the next code), and Download All fetches them one after another.

More

  • Install Directly: when a CIA doesn't fit on the SD card, 3dsDL can stream it straight into the install service without saving the file.
  • SHA-256 for any file in Files, checked against a .sha256 list next to it.
  • Long names, paths and links scroll instead of being cut off with "...".
  • Soft interface sounds (switch them off in Settings → Other Settings; they need sdmc:/3ds/dspfirm.cdc).
  • History shows the real name of downloads that never finished.

Tested so far

Everything new has been tried in the Azahar emulator except save and extra data backup and restore and ticket export, which the emulator can't do, so please treat those as untested until someone tries them on a console. The checklist for a console run is in docs/HARDWARE.md (items 45 to 66). Reports in Issues are very welcome.

v0.6.0 · Oct 19, 2026

<p align="center"><img src="https://ankush.one/3dsDL/assets/banner.jpg" width="560" alt="3dsDL"></p>

Install in a minute: open FBI on your 3DS, choose Remote Install → Scan QR Code, and scan the code on ankush.one/3dsDL. Or download 3dsDL.cia / 3dsDL.3dsx below. Installing the CIA over an earlier version updates it in place and keeps your settings and history.

What's new

It looks like it came with the console

Every screen has been redrawn in the style of the system software, measured from real captures of System Settings and Data Management:

  • the khaki screens and the HOME Menu status bar (Wi-Fi, date, time, battery);
  • embossed buttons and menu tiles;
  • Back and OK tabs in the bottom corners;
  • the green ring for the D-pad;
  • system dialogs with a gold button strip, and a red button for anything that deletes.

The top screen explains and the bottom screen does, the same as on the console. 3dsDL keeps its own blue and its own icons.

Touch that feels right

  • Lists, the text editor and the hex view drag and flick with momentum.
  • Buttons react when you lift the stylus, like the system's.
  • Swipe sideways to change pictures.
  • A long press on a file opens its options.

Files is a full file manager

  • Manage files:
  • Copy, cut, paste, rename and delete files and whole folders, with progress and cancel.
  • When a name is taken, choose Keep Both, Replace or Skip.
  • Mark several items to act on them together.
  • Make new folders and new files, which open straight in the editor, handy for configs.
  • Sort by name, size, date or type, and show or hide hidden files.
  • Open anything:
  • Pictures (PNG, JPEG, BMP, GIF, TGA) fill the top screen, and big phone photos work too.
  • Text and config files open in a line editor that keeps line endings and encoding as they were.
  • ZIPs show what's inside.
  • CIAs, .3dsx, .3ds, .nds and .tik files show their icon, name and title ID.
  • Anything else opens in a hex view.
  • Install several CIAs at once, or every CIA in a folder.

Also

  • Settings is now a menu of its own: Downloads, Download Folder, Console Clock, and Files and History. Each setting has an option screen.
  • History shows a badge for each download (Installed, Saved, Resume, Failed), and a CIA that is still on the SD card can be installed from there.
  • The QR scanner has a Type a URL Instead button.

Testing status

All of this has been tried in the Azahar emulator but not yet on a console. Please report anything that looks off or feels slow, especially on an Old 3DS. The checks still to do on hardware are items 37 to 44 of docs/HARDWARE.md. Feedback is very welcome in Issues.

Under the hood

  • Drawing: the interface toolkit draws every shape as anti-aliased textured quads from one atlas, so a whole screen is one batch. It also works around citro2d's image tinting, which Azahar can't render. docs/DESIGN.md has the design language and how it's drawn.
  • Pictures: stb_image decodes PNG, BMP, GIF and TGA (vendored, with its hash recorded). On the console, libjpeg-turbo decodes JPEGs at a reduced size.
  • Tests: file operations, the text model, title readers and picture scaling have unit tests.
  • Build: made by GitHub Actions from the v0.6.0 tag, with toolchain images pinned by digest.

Checksums (SHA-256)

f9c9d88ccbc185c9bc2200de2a54f279058f4d67bc1196c45847902c709d63cf  3dsDL.3dsx
7e8c8c4fe34d02a1e7016fe519708457852a2066b8ed904c3eb07cbf11a0d7d4  3dsDL.cia

v0.5.0 · Oct 19, 2026

<p align="center"><img src="https://ankush.one/3dsDL/assets/banner.jpg" width="560" alt="3dsDL"></p>

Install in a minute: open FBI on your 3DS, choose Remote Install → Scan QR Code, and scan the code on ankush.one/3dsDL. Or download 3dsDL.cia / 3dsDL.3dsx below. Installing the CIA over an earlier version updates it in place and keeps your settings and history.

What's new

FBI and its forks are no longer maintained, so 3dsDL now installs what it downloads.

  • Install CIAs right after downloading. When a .cia finishes, 3dsDL shows the title's icon, name, version and any version already installed, then offers Install, Install & delete (removes the file once it's installed) or Keep file. Settings → After downloading a CIA can make that choice for you, so scanning a QR code goes straight to an installed game.
  • Launch after installing. The success screen has a Launch button, and the title is on the HOME Menu from then on. Updates and DLC launch their game.
  • Seeds for newer games. Games from 2015 on often need a seed to start. 3dsDL adds it after installing, from sdmc:/3ds/3dsDL/seeds/, FBI's sdmc:/fbi/seed/, or Nintendo's server.
  • Files. A new home screen button browses the SD card's folders and files. A CIA shows its icon, title ID, version and whether it's installed, and can be installed or deleted from there, so CIAs downloaded with older versions install too.
  • History marks installed downloads, and can install a CIA that is still on the card.
  • Careful by default. System titles are refused, a CIA bigger than the free space is caught before anything is written, a New 3DS only title on an Old 3DS gets a warning, and replacing a newer installed version asks first and warns that save data may go with it.

Both builds can install: the CIA build asks for the install service, and the .3dsx gets it from Luma3DS through the Homebrew Launcher.

Testing status

Installing has been tried in the Azahar emulator (install from Files, download then install and delete, reinstalling the same version, Launch, History) but not yet on a console. Items 29 to 36 of docs/HARDWARE.md list what still needs checking on real hardware, such as seeded games, updates and DLC, and cancelling halfway. Reports from Old and New 3DS consoles are very welcome in Issues.

Thanks

To Steveice10 for FBI, whose install sequence, seed handling and title ID rules the new installer follows, and to Colby Shores and r/3dsqrcodes for asking for it.

Under the hood

  • New core/cia and core/smdh readers parse the CIA header, TMD, seed flag, name and icon without libctru, with unit tests.
  • The installer streams the file from the SD card into AM in 512 KiB blocks on the worker thread, with the same progress screen and cancel button as downloads.
  • Nintendo's seed server uses Nintendo's own certificate authority, so its public key is pinned instead.
  • Long button labels now shrink or wrap instead of being cut off.
  • Built by GitHub Actions from the v0.5.0 tag with toolchain images pinned by digest.

Checksums (SHA-256)

99d4565ba3626c1c8667b611a85d8386d9273e7943d04646e0dbeaf88be69083  3dsDL.3dsx
c11fa1136099da21e8d1324540f600e5f442cb35a5232d30293b9d1ea3f6aa3a  3dsDL.cia

v0.4.0 · Oct 18, 2026

<p align="center"><img src="https://ankush.one/3dsDL/assets/banner.jpg" width="560" alt="3dsDL"></p>

Install in a minute: open FBI on your 3DS, choose Remote Install → Scan QR Code, and scan the code on ankush.one/3dsDL. Or download 3dsDL.cia / 3dsDL.3dsx below. Installing the CIA over an earlier version updates it in place and keeps your settings and history.

What's new

  • Large downloads use four connections at once. The 3DS limits how fast a single connection can go, mostly because of how little data it can have in flight at a time. When a server says how big the file is and allows byte ranges (GitHub releases do, as do most file hosts), 3dsDL now splits large files into pieces and fetches them in parallel. When one connection finishes its piece, it takes over half of whatever piece has the most left, so they all stay busy until the end. The progress screen shows "4 connections" while this is happening.
  • You can see how fast it was. The finished message and the History entry now show the average speed and how many connections were used, so it's easy to compare consoles, networks and releases.
  • Resume still works. An interrupted split download remembers exactly which parts arrived and fetches only the rest. A dropped connection is reopened on its own, a server that turns away extra connections gets fewer, and a server that handles ranges badly gets a fresh single-connection download, the same as 0.3.
  • The New 3DS's third core. On a New 3DS the download now runs on a CPU core that nothing else uses, and the progress screen redraws 20 times a second instead of every frame, which leaves more CPU time for the download on any 3DS.

Small files, and servers that don't support ranges, download over one connection exactly as before.

Hardware testing

A test build downloaded a 38 MB video over four connections at an average of 500 to 600 KiB/s. The same file wasn't timed with 0.3.2, so the exact gain isn't known yet. Item 12 of docs/HARDWARE.md describes the check, and speed reports from Old and New 3DS consoles are very welcome in Issues.

Thanks

To Colby Shores, whose measurements in Steveice10/FBI#4 showed how the socket buffer size limits each 3DS connection, which is what made splitting downloads worth it.

Under the hood

  • The download engine now drives libcurl's multi interface from one thread. Connections share DNS answers and TLS sessions, so later connections skip most of the handshake.
  • A split download writes its partial file at full size, and its resume record uses a new format version that older releases refuse rather than misread.
  • Built by GitHub Actions from the v0.4.0 tag with toolchain images pinned by digest.

Checksums (SHA-256)

272b0583c112c478ce0f31043dc49698d58707aad3954d1140c1b41b172bd256  3dsDL.3dsx
d9694fdc309e3f87338ddee4d201aa30d0f76b47f823e096c6c5f32add5e34f6  3dsDL.cia

v0.3.2 · Oct 18, 2026

<p align="center"><img src="https://ankush.one/3dsDL/assets/banner.jpg" width="560" alt="3dsDL"></p>

Install in a minute: open FBI on your 3DS, choose Remote Install → Scan QR Code, and scan the code on ankush.one/3dsDL. Or download 3dsDL.cia / 3dsDL.3dsx below. Installing the CIA over 0.3.1 updates it in place and keeps your settings and history.

What's new

  • Faster downloads, especially from far-away servers. The console's network service hands each connection small socket buffers by default, which keeps the TCP window small and leaves the link idle while it waits on round trips. 3dsDL now asks for 48 KiB buffers, the size that measured fastest on a New 3DS.
  • HTTPS gets real randomness. The 3DS build of Mbed TLS draws its randomness from the SSL system service, but quietly carries on if that service was never opened, which 3dsDL never did. The app now opens it at startup, so every secure connection is keyed properly.

Thanks

Both changes come from Colby Shores' work on FBI in Steveice10/FBI#4, which measured how the socket buffer size limits download speed (and that 64 KiB and above break connections) and pointed out the Mbed TLS randomness requirement.

Hardware testing

The download speed change hasn't been measured on a console yet. If you try it, a before and after number from 0.3.1 and 0.3.2 on the same file and network would be very welcome in Issues, along with any Old 3DS and 2DS reports. The full checklist is in docs/HARDWARE.md.

Built by GitHub Actions from the v0.3.2 tag with toolchain images pinned by digest.

Checksums (SHA-256)

ea9e72131330eab83f0fc02fb975ec1fc6ce55bc9312ed75c9da8a8f58a55fb2  3dsDL.3dsx
6acc9982130e00b46af50acf43a5f0c15f703568520cc888d7a988a4b5051383  3dsDL.cia

v0.3.1 · Oct 12, 2026

<p align="center"><img src="https://ankush.one/3dsDL/assets/banner.jpg" width="560" alt="3dsDL"></p>

Install in a minute: open FBI on your 3DS, choose Remote Install → Scan QR Code, and scan the code on ankush.one/3dsDL. Or download 3dsDL.cia / 3dsDL.3dsx below. Installing the CIA over 0.3.0 updates it in place and keeps your settings and history.

What's new

  • A 3D HOME Menu banner. Select 3dsDL on the HOME Menu and the top screen now shows an animated 3D scene, like an official game's: a glossy SD card catches a download arrow that drops in from above, squashes happily and bursts sparkles, while the 3dsDL wordmark floats in front. Push the 3D slider up and it stands out of the screen.
  • A jingle. A short original tune plays with the banner, timed to the arrow landing.
  • A new icon. The card catching the arrow, rendered from the same model, on the HOME Menu and in the Homebrew Launcher.

The app itself is unchanged from 0.3.0.

Under the hood

  • The banner is built as code in `resources/banner/`: the model, the wordmark texture and the jingle are generated, then converted with pycgfx in a pinned container.
  • Getting a homemade 3D banner past the HOME Menu took five test builds on a console. The fixes are documented in the banner README, and build-cgfx.py now checks that every name the HOME Menu looks up in the model resolves before it writes one. Thanks to CBC for YANBF, whose notes pointed at two of them.
  • Built by GitHub Actions from the v0.3.1 tag with toolchain images pinned by digest. THREEDSDL_FLAT_BANNER=1 ./scripts/build.sh still builds with a flat banner picture.

Hardware testing

Confirmed on a console: the 3D banner, its jingle and the icon, along with 0.3.0's downloads over the internet, installing with FBI and ZIP extraction. The rest of the checklist is in docs/HARDWARE.md; reports from Old 3DS and 2DS are especially welcome in Issues.

Checksums (SHA-256)

14fb6d185cfcf4279caa913e3010980280cda1eb2251cfa20fb2fd10f059fb83  3dsDL.3dsx
c6434875b5a4d3442519b44030635cf9e2d32cf8fb134db190eae0c524f667ea  3dsDL.cia

v0.3.0 · Oct 12, 2026

<p align="center"><img src="https://ankush.one/3dsDL/assets/banner.jpg" width="560" alt="3dsDL"></p>

Install in a minute: open FBI on your 3DS, choose Remote Install → Scan QR Code, and scan the code on ankush.one/3dsDL. Or download 3dsDL.cia / 3dsDL.3dsx below. Installing the CIA over an older version updates it in place, and settings from 0.2 move to sdmc:/3ds/3dsDL/ automatically.

What's new

  • Live progress. Speed, time left, size and free space. Downloads run in the background and ask before cancelling.
  • Resume and retry. An interrupted download carries on from where it stopped, but only when the server confirms the file hasn't changed. Closing 3dsDL mid-download keeps the partial file too.
  • History of the last 50 downloads, with download again, resume and remove.
  • Folders made easy. Presets such as sdmc:/cias/ and sdmc:/3ds/, recent folders, and a folder browser that can create new folders.
  • Optional ZIP extraction. Off by default and always asks first. It refuses paths that would escape the folder and checks every file's checksum.
  • Console clock. HTTPS fails when the console's date is wrong, so 3dsDL can now compare its clock with internet time and set it for your time zone. Certificate errors also say exactly why they happened.
  • Stays awake. Sleep mode is paused while a download or extraction runs.
  • Faster on New 3DS. It runs at 804 MHz with the L2 cache on.

Fixed

  • The camera preview could freeze for good. It now recovers from capture stalls.
  • The bundled QR decoder (quirc) was an old copy that could overrun a buffer on noisy camera frames. It's now current upstream.
  • A finished download was deleted when the SD card rejected its filename. It's now saved under a fallback name instead.
  • Dialogs ran off the screen and couldn't be dismissed by touch.
  • The file-conflict prompt stalled the connection while it waited for an answer.

Under the hood

  • The download engine, filename handling, ZIP extraction, QR decoding and time client are portable code covered by 68 host tests. They run under AddressSanitizer and UBSan against a local HTTP, HTTPS and NTP fixture server on every push.
  • This release was built by GitHub Actions from the v0.3.0 tag with toolchain images pinned by digest. The 3DSX is reproducible byte for byte.

Hardware testing

Confirmed on a console: downloading over the internet, installing the CIA with FBI, and ZIP extraction. Still to be checked: Old 3DS and 2DS, long QR scanning sessions, closing the lid mid-download, and setting the clock. The checklist is in docs/HARDWARE.md, and reports are very welcome in Issues.

Checksums (SHA-256)

f3f216ee482b479efc6e19d53e69a6c51a249f0a2d7a12ee316208297ee0c099  3dsDL.3dsx
76ea5c6bc6421a8af2ee234fc059fc6bf1cb935d3c7ee3db902f36a3da9cf3d4  3dsDL.cia