Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
The main server is currently down. We are running on a backup server, so editing and search functionality are temporarily disabled. Please check back in a few hours.
ironfoil
General
Authorsermuns
TypeGame Installer Companion
Version0.4.5
LicenseMixed
Last Updated2026/05/24
Links
Download
Website
Source

ironfoil is a tool to transfer to many title installers. It exists as both a graphical application, ironfoil-gui, and a core command-line application, ironfoil.

Using the TinFoil USB protocol, it has been tested with Awoo Installer Switch and CyberFoil. It also supports Sphaira Switch with its own protocol, with Sphaira support enabled when transferring.

Installation

GUI

Download the latest archive for your OS and extract it to any location of your choice.

CLI

Install the CLI using one of the following methods:

Manually download the latest release and extract the tool to a location that is in your $PATH.

Use cargo-binstall:

cargo binstall ironfoil

Install the latest release using cargo:

cargo install ironfoil

User guide

ironfoil --help

Transfer to NS title installers from the command-line

Usage: ironfoil <COMMAND>

Commands:
  usb      Transfer over USB
  network  Transfer over network
  rcm      Inject RCM payload
  help     Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

ironfoil usb --help

Transfer over USB

Usage: ironfoil usb [OPTIONS] <GAME_BACKUP_PATH>

Arguments:
  <GAME_BACKUP_PATH>  Path to a game backup file or directory containing game backup files

Options:
  -r, --recurse  Whether to recursively look for files (only for directories)
      --sphaira  If transferring to Sphaira homebrew menu
  -h, --help     Print help

ironfoil network --help

Transfer over network

Usage: ironfoil network [OPTIONS] <GAME_BACKUP_PATH> <TARGET_IP>

Arguments:
  <GAME_BACKUP_PATH>  Path to a game backup file or directory containing game backup files
  <TARGET_IP>         The IP address of the Nintendo Switch

Options:
  -r, --recurse  Whether to recursively look for files (only for directories)
  -h, --help     Print help

ironfoil rcm --help

Inject RCM payload

Usage: ironfoil rcm <PAYLOAD_PATH>

Arguments:
  <PAYLOAD_PATH>  Path to the RCM payload file

Options:
  -h, --help  Print help

Screenshots

ironfoilSwitch-01.png ironfoilSwitch-02.png ironfoilSwitch-03.gif

Changelog

v0.4.5 2026/05/24

  • Features
    • (core) allow .xcz files by @sermuns in 142dace
  • Miscellaneous Tasks
    • release v0.4.5 by Samuel Åkesson in 924ebab

v0.4.4 2026/04/24

  • Bug Fixes
    • (ci) fix typo by @sermuns in 1fefaa1
    • (ci) actually build ironfoil-gui by @sermuns in e2559f2
    • (ci) glob release correctly by @sermuns in b857be4
    • (cli) show correct amount of games installed by @sermuns in 770d22a
    • (gui) add symlink to media, hopefully fixed packaging by @sermuns in c42dcbf
  • Performance
    • (ci) broader cache in release by @sermuns in 6c95938
  • Miscellaneous Tasks
    • (gui) add "of which" by @sermuns in b83e48d
    • breaking consolidate gui and cli releasing. remove Windows installer by @sermuns in 7ea8e35
    • publish GUI too by @sermuns in d69ff38
    • rename release CI by @sermuns in f2dd07f
    • add dependabot by @sermuns in 7910f71
    • update deps by @sermuns in 5030c21
    • add github-actions to dependabot alerts by @sermuns in db36b00
    • release v0.4.4 by @sermuns in 5a1d601

v0.4.3 2026/04/23

  • Documentation
    • add download buttons for ironfoil-gui by @sermuns in dd15da8
    • make download buttons prettier by @sermuns in 9e10145
  • Miscellaneous Tasks
    • don't strip release build by @sermuns in 4c0cfc0
    • release v0.4.3 by @sermuns in 8d12692

v0.4.2 2026/04/19

  • Bug Fixes
    • (core) i was an idiot yet again, using XOR instead of pow by @sermuns in 4797779
    • (core) longer USB read timeout by @sermuns in 363d92e
  • Refactor
    • (core) reuse command header buf for tinfoil usb install by @sermuns in d1048b5
    • (core) inline usb constants by @sermuns in c78a462
  • Testing
    • (core) start adding tests by @sermuns in 8cabd18
    • (core) more tinfoil tests by @sermuns in 0826793
    • (core) use usize::MAX by @sermuns in e2f6414
    • (core) start adding sphaira tests by @sermuns in 25dec25
    • (core) add more sphaira test for bad cases by @sermuns in f78482d
  • Miscellaneous Tasks
    • (core) allow too many arguments... by @sermuns in ea17c12
    • release v0.4.2 by @sermuns in d53ed3d

v0.4.1 2026/03/29

  • Bug Fixes
    • (core) actually perform 2 to the power of.. ^ means xor... by @sermuns in 13461c4
    • (core) correct progress report for network install by @sermuns in 3019235
  • Refactor
    • (core) create crate features by @sermuns in 0868f25
  • Documentation
    • (cli) show more of help output by @sermuns in b513224
  • Miscellaneous Tasks
    • (core) remove unused crc32fast by @sermuns in 78d9512
    • (core) allow too many lines in serve_http... by @sermuns in c5e517d
    • release v0.4.1 by @sermuns in d02227e

v0.4.0 2026/03/29

  • Features
    • (gui) progress bars for total and per-file by @sermuns in 9b7ded7
    • (gui) less repaint churning by only repaininting every 100 ms by @sermuns in 9911408
  • Bug Fixes
    • (core) send Ended event everytime installation ends, even in failure by @sermuns in 118db9c
    • (core) better error message for timeout by @sermuns in e8c8204
    • (core) more accurate errors by @sermuns in da024b2
  • Refactor
    • (core) combine error handling in http server by @sermuns in c1ae25c
    • remove Arc nonsense where it's not needed by @sermuns in a83e99d
    • move UsbProtocol into core, use it instead of for_sphaira bool by @sermuns in efec4e6
    • create a dedicated InstallProgress enum. less CPU churning on CLI, still need to fix GUI.. by @sermuns in 3a5930d
    • use high-level Read/Write syntax for USB transfers. fix progress reporting. by @sermuns in f928f09
    • make tinfoil install default by @sermuns in 7d02080
  • Documentation
    • (cli) update demo gif by @sermuns in 552a0c1
    • (gui) update screenshots by @sermuns in 1ecf844
    • (gui) add thin variant of screenshot1 by @sermuns in 38f6bf2
  • Miscellaneous Tasks
    • (gui) minor error reword by @sermuns in b4452e8
    • satisfy/configure clippy by @sermuns in 0fd126f
    • release v0.4.0 by @sermuns in 9e15353

v0.3.1 2026/03/27

  • Features
    • (gui) add linux desktop entry by @sermuns in b99bafc
  • Bug Fixes
    • (ci) fix caching by @sermuns in 9054979
  • Refactor
    • (cli) rename TransferType->InstallType by @sermuns in a4d3c9e
    • (cli) deduplicate usb/network install code by @sermuns in 742c090
    • (core) break usb modules out into files by @sermuns in ce5f5ec
    • (core) use shared ref instead of owned Arc by @sermuns in 87b70c8
    • (core) satisfy some clippy lints by @sermuns in 9ae9b60
    • (gui) move ugly code into impl StagedFiles by @sermuns in fbf5c9d
    • (gui) satisfy lints by @sermuns in e4989a8
    • consolidate progress events as an enum. fix bug where checking target ip during usb install.. by @sermuns in 6f078e5
  • Miscellaneous Tasks
    • (cli) color-eyre, only show source on debug by @sermuns in e3ac7f3
    • (core) fix needless_borrow by @sermuns in 9c7334e
    • (gui) remove unused imports by @sermuns in f4fece0
    • (gui) only enable eframe wayland,x11 on linux by @sermuns in 9cc4f47
    • remove incorrect comment by @sermuns in 605d510
    • add cargo fmt precommit by @sermuns in 360e2df
    • add pedantic clippy linting by @sermuns in 4aa637f
    • allow override version in release just recipe by @sermuns in 885e160
    • release v0.3.1 by @sermuns in 252d599

v0.3.0 2026/03/26

  • Features
    • (gui) add network install by @sermuns in 2d91ac5
    • (gui) add rcm payload injection by @sermuns in 7907931
  • Refactor
    • (gui) create tabs module by @sermuns in a161eb0
    • (gui) create module per tab by @sermuns in ca025d0
  • Styling
    • (gui) remove top heading and restyle home tab by @sermuns in e9ea4cc
    • (gui) rcm tab ricing by @sermuns in 62483af
  • Miscellaneous Tasks
    • release v0.3.0 by @sermuns in 49c31ad

v0.2.1 2026/03/26

  • Features
    • add program icon and stop console on Windows by @sermuns in eccd7b5
  • Miscellaneous Tasks
    • release v0.2.1 by @sermuns in 1550fcb

v0.2.0 2026/03/26

  • Features
    • (core) add sphaira usb install support by @sermuns in 54c3a49
    • (gui) begin creating GUI by @sermuns in 4e7fe5c
    • (gui) style add icons, semi working transfer by @sermuns in 0d0822c
    • (gui) add sphaira support by @sermuns in 9de9061
    • better Dockerfile, using cargo-chef by @sermuns in 9fa1c38
    • better error on permission denied by @sermuns in 6a34b90
    • remove indicatif from core, use mpsc::Channel to synchronize progress by @sermuns in 7e61d74
    • add cancelling and stop using suggestion() by @sermuns in a44854b
    • fully working GUI, refactor a lot of code by @sermuns in 8bad5c7
    • simplify, reword GUI and error by @sermuns in d474ab3
    • add distributioning with cargo-dist by @sermuns in e365d56
  • Bug Fixes
    • use installer-generic language in error by @sermuns in ef1eb8f
    • align center by @sermuns in c986fc8
    • hopefully make windows correctly parse release version? by @sermuns in f93bdc0
    • symlink media for crates.io.. by @sermuns in 0c69754
    • enable file_glob by @sermuns in 462958d
    • only build & publish CLI by @sermuns in 460f80e
    • force bash in release notes by @sermuns in 0a39755
    • publish ironfoil-core before cli by @sermuns in 3ee98d8
  • Refactor
    • export GAME_BACKUP_EXTENSIONS by @sermuns in 782caa1
  • Documentation
    • update README by @sermuns in d3a4d07
    • update demos and begin explaining GUI installation by @sermuns in c5374ba
  • Miscellaneous Tasks
    • add push recipe by @sermuns in e647d6c
    • add TODO to network by @sermuns in b66bd08
    • don't optimize debug build by @sermuns in e53b8d2
    • Update README.md (#18) by @binarymelon in b18fac5
    • update README and description for more general title installers by @sermuns in bf8d530
    • make features bump minor by @sermuns in b45f10e
    • allow dirty ci by @sermuns in 309bf8b
    • don't use cargo-dist for CLI by @sermuns in 1ec963b
    • skip pre-building.. by @sermuns in bd923e8
    • simplify dist by @sermuns in 8507648
    • name cli artifacts without version, as gui does by @sermuns in f96f199
    • add release notes to gui release too, cleanup.. by @sermuns in a7c0aee
    • stop releasing for i686 linux by @sermuns in abc0cb2
    • add rust-cache by @sermuns in 0945ba8
    • release v0.2.0 by @sermuns in 8a3db31

v0.1.6 2026/03/05

  • Features
    • add RCM payload injection by @sermuns in b5f0ef1
  • Bug Fixes
    • (ci) more robust RELEASE_VERSION parsing and release notes handling by @sermuns in a33f2df
  • Miscellaneous Tasks
    • release v0.1.6 by @sermuns in 5845411

v0.1.5 2026/03/05

  • Features
    • smaller binaries by @sermuns in d2f1756
  • Refactor
    • split lib into multiple modules by @sermuns in e9e5ec4
  • Miscellaneous Tasks
    • release v0.1.5 by @sermuns in 5d8ecbf

v0.1.4 2026/03/04

  • Features
    • add recurse flag by @sermuns in d649cb5
  • Documentation
    • update install instructions by @sermuns in 2b65ec2
  • Miscellaneous Tasks
    • simplify release naming by @sermuns in 9b12e01
    • add logo, media by @sermuns in dbf2693
    • add logo to README by @sermuns in bdf2305
    • update logo, hardcode text paths by @sermuns in d96dcd0
    • make banner transparent by @sermuns in d888462
    • release v0.1.4 by @sermuns in 41692f1

v0.1.3 2026/03/04

  • Miscellaneous Tasks
    • revamp how releasing is done by @sermuns in b56dae8
    • add Dockerfile, but remove workflow for now by @sermuns in 87da659
    • use correct token by @sermuns in 4887c2b
    • add write permission to workflow by @sermuns in 2047fa8
    • release v0.1.3 by @sermuns in 3765e2a

v0.1.2 2026/03/04

  • Miscellaneous Tasks

v0.1.1 2026/03/04

  • Miscellaneous Tasks
    • use correct syntax for selecting target.. by @sermuns in 5648271
    • do not publish by @sermuns in 2be90ab
    • Release by @sermuns in f68bb00

v0.1.0 2026/03/04

  • Features
    • first working implementation! by @sermuns in eeef3bd
    • add progress indicator by @sermuns in ff53d44
    • style the progress indicator by @sermuns in ef6355c
    • better user-facing error reporting by @sermuns in 8e2f90e
    • allow single NSP transfers by @sermuns in 22bf173
    • support XCI format by @sermuns in b02da39
    • support NSZ format by @sermuns in 65744f7
    • breaking create subcommands usb and network and add network transfer by @sermuns in 8303b52
  • Bug Fixes
    • use generic game backup name by @sermuns in 0f7882b
    • spawn thread for HTTP server by @sermuns in 70edf29
    • use cross-platform .len() instead of .size() by @sermuns in 0f1ac60
  • Other
    • use less features of color-eyre by @sermuns in 3e617dd
  • Refactor
    • minor changes and code comments by @sermuns in 167d3bb
    • remove unused import by @sermuns in 84f0d67
    • move some code, remove old comments by @sermuns in b073ad8
    • split code into crates core and cli #5 by @sermuns in 28d99a5
    • move crates from crates/ into root dir by @sermuns in be957dd
  • Documentation
    • create README by @sermuns in ae556cd
    • NSP, XCI and NSZ are supported by @sermuns in 564152d
    • add demo gif, rephrase README by @sermuns in 4259e16
    • update README by @sermuns in 4bea053
    • update install instruction by @sermuns in 9a35be1
    • update README by @sermuns in 309e9d5
  • Miscellaneous Tasks
    • initial commit by @sermuns in 91b36dc
    • add precommits by @sermuns in 561f852
    • update description and cli meta by @sermuns in 604a60a
    • update description by @sermuns in 3601d84
    • update README by @sermuns in 6a8c11a
    • update description in README by @sermuns in f5ae646
    • rephrase error by @sermuns in 17af04a
    • add license by @sermuns in 43ca476
    • remove unused imports by @sermuns in 7de47bb
    • rename project from ns-usbloader-rs to ironfoil by @sermuns in 52b5bcc
    • update GIF by @sermuns in 12c93cc
    • add CD and docker workflows by @sermuns in 772c725
    • fixes to crate metadata for publishing by @sermuns in 7cc31df
    • add release config by @sermuns in 19d6f9c
    • Release by @sermuns in 05985c5

External links

Advertising: