Skip to main content

switch-up

License

A safe, automated SD card manager for Nintendo Switch homebrew on macOS, Windows, and Linux.

Why does this exist?

switch-up started as a fix for the very real problems macOS causes when updating a Switch SD card.

macOS silently injects hidden files (.DS_Store, ._* files, extended attributes) into folders on FAT32/exFAT media. Those files can corrupt your SD card from the Switch's point of view and trigger boot failures, black screens, and cryptic errors.

On top of that, macOS Finder's "Replace" behavior is destructive — dragging a folder with the same name can delete the original instead of merging contents. A simple update can wipe out configs, mods, cheats, and homebrew files.

Even on Windows and Linux, users still benefit from a safer update flow.

switch-up automates the process safely:

  1. Backs up your configuration files before touching anything
  2. Smart Merges new files onto your SD without deleting existing content
  3. Cleans hidden junk files that should not live on the SD card
  4. Restores your backup automatically if anything goes wrong

Installation

From PyPI

pip install switch-up

From source

git clone https://github.com/yourusername/switch-up.git
cd switch-up
pip install -e .

Requirements

  • Python 3.8 or higher
  • macOS, Windows, or Linux

Usage

Update Atmosphere and Hekate to the latest version

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

switch-up update --latest

The tool will auto-detect your SD card from the default mount locations of the current platform:

  • macOS: /Volumes
  • Linux: /media, /run/media, /mnt
  • Windows: mounted drive letters such as E:/

If you have multiple SD cards or a custom mount point, specify the path manually:

switch-up update --latest --sd-path /path/to/your/sd

Examples:

switch-up update --latest --sd-path /Volumes/MY_SD
switch-up update --latest --sd-path /media/oscar/MY_SD
switch-up update --latest --sd-path E:/

Update only Atmosphere (skip Hekate)

switch-up update --latest --ams-only

Install a local ZIP file

If you already downloaded a release ZIP manually:

switch-up install ./atmosphere-1.8.0.zip --sd-path /path/to/your/sd

Clean junk files only (no update)

Removes hidden compatibility junk from the SD card. On macOS this also attempts to remove extended attributes.

switch-up fix-archive-bit /path/to/your/sd

What happens during an update?

1. Backup      → Saves hekate_ipl.ini, exosphere.ini, and other configs
                  to ~/.switch-up/backups/ (timestamped)
2. Extract     → Unpacks the ZIP to a temporary directory
3. Smart Merge → Copies new files to SD, preserving your existing content
4. Cleanup     → Removes .DS_Store, ._* files, __MACOSX/, and xattrs on macOS
5. Done        → If anything fails at step 3, your backup is auto-restored

Configuration Backups

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

~/.switch-up/backups/20260227_143000/
├── hekate_ipl.ini
├── exosphere.ini
├── bootloader/hekate_ipl.ini
└── atmosphere/config/system_settings.ini

These backups persist across sessions so you can always recover your settings.

Commands Reference

Command Description
switch-up update --latest Download and install the latest Atmosphere + Hekate
switch-up update --latest --ams-only Download and install only Atmosphere
switch-up install <zip> Install a local ZIP file to the SD card
switch-up fix-archive-bit [path] Clean hidden junk files from the SD card; remove xattrs on macOS
switch-up --version Show the current version
switch-up --help Show help for all commands

Platform Support

switch-up now supports macOS, Windows, and Linux.

Current behavior by platform

  • macOS

    • Auto-detects SD cards under /Volumes
    • Removes hidden junk files
    • Removes extended attributes when possible
  • Linux

    • Auto-detects SD cards under /media, /run/media, and /mnt
    • Supports backup, Smart Merge, local ZIP install, and release downloads
    • Skips macOS-only xattr cleanup
  • Windows

    • Auto-detects SD cards from mounted drive letters
    • Supports backup, Smart Merge, local ZIP install, and release downloads
    • Skips macOS-only xattr cleanup

License

GPLv3 — See LICENSE for details.

Metadata

Release files for switch-up 0.2.0

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

Source distribution (sdist)

Source distribution for switch-up 0.2.0
File Size Uploaded Provenance
switch_up-0.2.0.tar.gz 25.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for switch-up 0.2.0
File Interpreter ABI Platform
switch_up-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 53.8 kB

Release files / switch_up-0.2.0.tar.gz

Download URL switch_up-0.2.0.tar.gz
Size 25.9 kB
Tags Source
SHA-256 checksum
How to use checksums
86b0c56f7752a758d426944ce6bde32e8b3ab1b43fdef0231a00fb3cf45520a4
BLAKE2b-256 checksum
How to use checksums
5a0570f9f17e3c6b04a896ea81e59659aadcf1d9018a0171775e6902079b7d53
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 Mar 28, 2026.

Transparency log

Release files / switch_up-0.2.0-py3-none-any.whl

Download URL switch_up-0.2.0-py3-none-any.whl
Size 27.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
04874ee7b93252352d38893fd76321ee90fd031439323ae63d4b8029a1110503
BLAKE2b-256 checksum
How to use checksums
d722cfdc887c9b3f9e9dc7655179b1f18736462ca7299c70668aed543d0e8fb6
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 Mar 28, 2026.

Transparency log

Security for switch-up 0.2.0

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 switch_up-0.2.0.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 Mar 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.2.0 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