Skip to content

Releases: ankushKun/3dsDL

3dsDL 0.3.1

Choose a tag to compare

@github-actions github-actions released this 12 Oct 09:49

3dsDL

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

3dsDL 0.3.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 06:41

3dsDL

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

3dsDL 0.2.0

3dsDL 0.2.0 Pre-release
Pre-release

Choose a tag to compare

@ankushKun ankushKun released this 12 Oct 03:44

3dsDL downloads files straight onto your Nintendo 3DS from a URL or a QR code, so you can grab a homebrew app or a file without powering down, pulling the SD card or reaching for a computer. Point the camera at a QR code, or type a direct link with the on-screen keyboard, pick a folder, and the file streams onto the SD card while the console stays on.

It's a modern take on Multidownload, the 2017 homebrew downloader, rebuilt around libcurl and Mbed TLS with a new Citro2D interface.

Important

This is a development build, which is why it's marked as a pre-release. The download engine has been verified on New Nintendo 3DS hardware, but the redesigned interface and the corrected camera renderer still need their full hardware pass on New and Old 3DS. If something looks off, please open an issue and mention which console you're on.

What's in 0.2.0

  • Scan or type. Read a QR code with the console camera, or enter a URL with the 3DS software keyboard.
  • Real HTTPS. Certificates are checked against a bundled Mozilla CA store, and redirects are followed as long as they stay on HTTP or HTTPS.
  • Streams to the SD card. Large files are written as they arrive instead of being held in memory, and half-finished downloads are cleaned up for you.
  • Proper filenames. 3dsDL uses the name the server sends through Content-Disposition and remembers the folder you picked last time.
  • Never clobbers your files. When a file already exists you choose between Rename (keeps both as file (1).zip), Overwrite (with rollback protection) or Cancel.
  • New Citro2D interface. It works with the D-Pad and buttons or the touch screen, shows live progress, and lets you cancel at any time with B.
  • Camera fixes. Camera DMA now goes to linear memory with the CPU cache invalidated, and the preview renders through Citro2D.
  • Installable CIA. A HOME Menu build with the stable Title ID 0004000003D5D100, so future versions upgrade it in place instead of adding a second copy.

Install

You'll need a 3DS that can run homebrew and a working Wi-Fi connection set up on the console.

Homebrew Launcher (.3dsx)

  1. Download 3dsDL.3dsx below.
  2. Copy it to sdmc:/3ds/3dsDL/3dsDL.3dsx on the SD card (or send it over Wi-Fi with an FTP server such as FTPD).
  3. Open the Homebrew Launcher and start 3dsDL.

HOME Menu (.cia)

  1. Download 3dsDL.cia below and copy it to the SD card.
  2. Install it with FBI.
  3. Launch 3dsDL from the HOME Menu.

Using it

Pick Scan QR Code or Enter URL, check the link it found, and confirm. The link has to point straight at the file and start with http:// or https://. Pages that need JavaScript, a login or an extra click won't work, because 3dsDL only fetches the file itself. Use Change Folder to save somewhere other than the default; your choice is kept in sdmc:/3dsDL.cfg.

The quickest way to send a link from your computer is to turn it into a QR code in the terminal and scan it off the screen:

qrencode -t ansiutf8 "https://example.com/some-homebrew.3dsx"

Checksums (SHA-256)

3fd86889e1fe931453e3696ab9c276f577f3b93df41735e009c209b122d4ef47  3dsDL.3dsx
168709aa7bfda853ace484e84aa51f8e286cdc4dbe2a667631a5bfd8369db302  3dsDL.cia

Download 3dsDL.sha256 next to the files and run shasum -a 256 -c 3dsDL.sha256 (or sha256sum -c 3dsDL.sha256 on Linux) to check them.

What's next

Version 0.3 is about download quality of life: speed, ETA and free SD space while downloading, a download history with retries and destination presets, keeping the console awake during a download, and optional resumable downloads over HTTP ranges. The full plan up to 1.0 is in ROADMAP.md.