Skip to main content

3ds-up

License

A safe, automated SD card manager for Nintendo 3DS homebrew on macOS.

Why does this exist?

Managing a hacked 3DS SD card from a Mac has the same silent dangers as the Switch — macOS injects hidden files (.DS_Store, ._* files, extended attributes) that corrupt your SD and cause boot failures. On top of that, Finder's "Replace" behavior destroys folders instead of merging them, which can wipe your Luma3DS configuration in one careless drag.

3ds-up automates the entire process safely:

  1. Backs up your luma/config.ini before touching anything
  2. Smart Merges new files onto your SD without deleting existing content
  3. Cleans all macOS junk files that would corrupt the 3DS
  4. Restores your backup automatically if anything goes wrong
  5. Never touches Nintendo 3DS/ (encrypted game data) or boot9strap/ (bootloader)

Installation

From PyPI

pip install 3ds-up

From source

git clone https://github.com/OscarCampohermoso/3ds-up.git
cd 3ds-up
pip install -e .

Requirements

  • Python 3.8 or higher
  • macOS (designed specifically for macOS-related SD card issues)

Usage

Update Luma3DS and GodMode9 to the latest version

Downloads the latest releases from GitHub and installs them safely to your SD card.

3ds-up update --latest

The tool will auto-detect your SD card if it's mounted at /Volumes/. If you have multiple SD cards or a custom mount point, specify the path:

3ds-up update --latest --sd-path /Volumes/MY_SD

Update only Luma3DS (skip GodMode9)

3ds-up update --latest --luma-only

Update only GodMode9 (skip Luma3DS)

3ds-up update --latest --gm9-only

Install a local ZIP file

If you already downloaded a release ZIP manually:

3ds-up install ./Luma3DSv13.3.zip --sd-path /Volumes/MY_SD

Clean macOS junk files only (no update)

Just remove the hidden files macOS left behind, without updating anything:

3ds-up fix-archive-bit /Volumes/MY_SD

What happens during an update?

1. Backup     → Saves luma/config.ini to ~/.3ds-up/backups/ (timestamped)
2. Download   → Fetches latest Luma3DS and GodMode9 ZIPs from GitHub
3. Smart Merge → Copies new files to SD, preserving your existing content
                 Nintendo 3DS/ and boot9strap/ are NEVER touched
4. Cleanup    → Removes .DS_Store, ._* files, __MACOSX/, and xattrs
5. Done       → If anything fails at step 3, your backup is auto-restored

Protected Paths

These paths are never modified under any circumstances:

Path Why
Nintendo 3DS/ Encrypted with your console's unique AES key — modifying corrupts all game data
boot9strap/ Core bootloader — deleting this bricks your console

Configuration Backups

Before every operation, 3ds-up saves your critical config files to:

~/.3ds-up/backups/20260228_143000/
└── luma/
    └── config.ini

Commands Reference

Command Description
3ds-up update --latest Download and install the latest Luma3DS + GodMode9
3ds-up update --latest --luma-only Download and install only Luma3DS
3ds-up update --latest --gm9-only Download and install only GodMode9
3ds-up install <zip> Install a local ZIP file to the SD card
3ds-up fix-archive-bit [path] Clean macOS junk files from the SD card
3ds-up --version Show the current version
3ds-up --help Show help for all commands

Platform Support

Currently, 3ds-up is macOS-only. The tool was built specifically to address the hidden-file injection and destructive replace behavior unique to macOS.

Windows and Linux users don't face the same corruption risks, but could still benefit from the automated download and Smart Merge workflow. Contributions targeting cross-platform support are welcome — the core logic in core.py is already platform-agnostic.

License

GPLv3 — See LICENSE for details.


Metadata

Release files for 3ds-up 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for 3ds-up 0.1.2
File Size Uploaded Provenance
3ds_up-0.1.2.tar.gz 10.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for 3ds-up 0.1.2
File Interpreter ABI Platform
3ds_up-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 23.8 kB

Release files / 3ds_up-0.1.2.tar.gz

Download URL 3ds_up-0.1.2.tar.gz
Size 10.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a88c4d50bdefcde6f7f84e57fa00088cedaddb1acafe271fc0d05aa0077c35c7
BLAKE2b-256 checksum
How to use checksums
e51431bc299c0c65eb54f4b15890db678ce9fd55edc7f690147b18529601aa9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 28, 2026.

Transparency log

Release files / 3ds_up-0.1.2-py3-none-any.whl

Download URL 3ds_up-0.1.2-py3-none-any.whl
Size 13.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
710a45218e5c486dc1d5299dcc8bfcca3cd806fefeac033b25ac89b30dec307b
BLAKE2b-256 checksum
How to use checksums
014b80910efe5010f6c616b100aeeb1b688982babacf702839c873e7650262c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 28, 2026.

Transparency log

Security for 3ds-up 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for 3ds_up-0.1.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 28, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page