Actualizador seguro de Nintendo Switch
Project description
switch-up
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:
- Backs up your configuration files before touching anything
- Smart Merges new files onto your SD without deleting existing content
- Cleans hidden junk files that should not live on the SD card
- 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
- Auto-detects SD cards under
-
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
- Auto-detects SD cards under
-
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file switch_up-0.2.0.tar.gz.
File metadata
- Download URL: switch_up-0.2.0.tar.gz
- Upload date:
- Size: 25.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86b0c56f7752a758d426944ce6bde32e8b3ab1b43fdef0231a00fb3cf45520a4
|
|
| MD5 |
f5a225214ad45d20cc25bbdd8b85e9f3
|
|
| BLAKE2b-256 |
5a0570f9f17e3c6b04a896ea81e59659aadcf1d9018a0171775e6902079b7d53
|
Provenance
The following attestation bundles were made for switch_up-0.2.0.tar.gz:
Publisher:
publish.yml on OscarCampohermoso/switch-up
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
switch_up-0.2.0.tar.gz -
Subject digest:
86b0c56f7752a758d426944ce6bde32e8b3ab1b43fdef0231a00fb3cf45520a4 - Sigstore transparency entry: 1190407746
- Sigstore integration time:
-
Permalink:
OscarCampohermoso/switch-up@b2c7cc2b74839a08ef6b389f358c2b602d23f381 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/OscarCampohermoso
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b2c7cc2b74839a08ef6b389f358c2b602d23f381 -
Trigger Event:
push
-
Statement type:
File details
Details for the file switch_up-0.2.0-py3-none-any.whl.
File metadata
- Download URL: switch_up-0.2.0-py3-none-any.whl
- Upload date:
- Size: 27.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04874ee7b93252352d38893fd76321ee90fd031439323ae63d4b8029a1110503
|
|
| MD5 |
c7808ec02ca39c78a0acda12cfe4f283
|
|
| BLAKE2b-256 |
d722cfdc887c9b3f9e9dc7655179b1f18736462ca7299c70668aed543d0e8fb6
|
Provenance
The following attestation bundles were made for switch_up-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on OscarCampohermoso/switch-up
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
switch_up-0.2.0-py3-none-any.whl -
Subject digest:
04874ee7b93252352d38893fd76321ee90fd031439323ae63d4b8029a1110503 - Sigstore transparency entry: 1190407801
- Sigstore integration time:
-
Permalink:
OscarCampohermoso/switch-up@b2c7cc2b74839a08ef6b389f358c2b602d23f381 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/OscarCampohermoso
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b2c7cc2b74839a08ef6b389f358c2b602d23f381 -
Trigger Event:
push
-
Statement type: