Files
NXST/README.md
T
DragonSpirit d9077b8fc1
CI / Build NRO (push) Has been cancelled
CI / Upload release asset (push) Has been cancelled
CI / Format check (push) Has been cancelled
CI / Layering check (push) Has been cancelled
finish refactor, add docs and CI
2026-04-27 02:34:12 +03:00

2.6 KiB

NXST

Transfer save data between two Nintendo Switch consoles over local Wi-Fi.

Pick a game, pick a user. One Switch sends; the other receives. The sender backs up its own save first, so you can never lose data in transit.


Install

  1. Download NXST.nro from Releases.
  2. Copy it to /switch/NXST/NXST.nro on your SD card.
  3. Launch via hbmenu (hold R while starting any game, or Album).

Both Switches must be on the same Wi-Fi network. No router configuration needed — discovery uses UDP multicast.


Usage

Sender (the Switch whose save you want to copy):

  1. Open NXST → select a title → press ATransfer.
  2. Wait for "Waiting for receiver…" to change to "Transferring…".

Receiver (the Switch that will receive the save):

  1. Open NXST → select the same title → press AReceive.
  2. Wait. The save is restored automatically when the transfer finishes.

Press B on either side to cancel mid-transfer.

Logs are written to /switch/NXST/log.log.


Build

Prerequisites: devkitPro with switch-dev and switch-portlibs packages, plus cmake ≥ 3.20.

# Clone with submodules (Plutonium UI)
git clone --recurse-submodules https://github.com/your-username/NXST.git
cd NXST

# Configure (once)
cmake --preset switch

# Build
cmake --build build

# Send to Switch via nxlink (Switch must be on same network, nxlink running)
cmake --build build --target send

Output: build/NXST.nro


Architecture

See docs/ARCHITECTURE.md for the layer diagram, threading model, and key types.

See docs/PROTOCOL.md for the wire protocol (UDP multicast discovery + TCP file stream).

ui/          — TitlesLayout, UsersLayout, TransferOverlay, HeaderBar
service/     — TransferService (all network threads and state)
infra/net/   — Socket RAII, sendAll/recvAll
infra/fs/    — io::backup, io::restore, directory iterator, RAII handles
infra/sys/   — nxst::log (printf-checked, timestamped)
domain/      — Title, Account, Result<T>, TransferState, protocol constants

Credits

  • Plutonium — Switch UI framework by XorTroll
  • Checkpoint — save management library by Bernardo Giordano / FlagBrew; several files in src/infra/fs/ and src/domain/ are derived from Checkpoint

License

GPLv3 — see LICENSE.

NXST includes code derived from Checkpoint (GPLv3). All original NXST code is released under the same license to satisfy the GPL inheritance requirement.