Yanu is a Nintendo Switch ROM updater designed to work with Skyline on Android w/Termux, Linux, and Windows, as well as other platforms with the help of Docker images. It serves as a temporary solution until Skyline supports Updates/DLCs natively.
Warning - Doesn't support DLCs.
Precompiled binaries are available from the GitHub releases page.
- NSP
- XCI* (through XCI-NSP conversion)
Check out Video Tutorial by SmokeyMC for Android.
- Download & Install
Termux
from F-droid. - Copy-paste the following in
Termux
and hit enter:
bash <(curl -L https://raw.githubusercontent.com/nozwock/yanu/main/scripts/yanu-bootstrap-termux.sh)
Relevant resources:
- MiXplorer XDA Forum
- MiXplorer GDrive download link
- Ensure that your system has all the necessary dependencies installed to build hactool/hacPack/etc. For example:
sudo apt -y install gcc-12 g++-12 make git libjpeg-dev binutils-dev libicu-dev
- Download & give executable permission to
yanu
:chmod +x yanu-x86_64-unknown-linux-musl
- Just download & run.
Note
Due to the lack of code-signing, some anti-virus programs may falsely identify the program as malicious. I cannot afford expensive certificates to prevent this. Exercise caution if concerned and consider using tools like virustotal.com or hybrid-analysis.com.
Go here to pull the container you wish to use. Once you have the container, you can use it like this:
# Expecting 'prod.keys` in pwd
docker run -v $(pwd)/prod.keys:/root/.switch/prod.keys -v $(pwd):/work ghcr.io/nozwock/yanu update --base '/path/to/base' --update '/path/to/update'
View CLI help with:
yanu-cli --help
For updating a ROM:
yanu-cli --keyfile '/path/to/keyfile' update --base '/path/to/base' --update '/path/to/update'
Set a new Yanu Directory
(Used in tui
) with:
yanu-cli config --yanu-dir '/new/path/here'
For unpacking ROMs:
yanu-cli unpack --base '/path/to/base' --update '/path/to/update'
OR, for only unpacking a single ROM:
yanu-cli unpack --base '/path/to/base'
For packing unpacked ROM data (both base+update were unpacked):
yanu-cli pack --controlnca './base+update.xxxxxx/patchdata/control.nca' --titleid 'xxxxxxxxxxxxxxxx' --romfsdir './base+update.xxxxxx/romfs' --exefsdir './base+update.xxxxxx/exefs'
If only base was unpacked, get the control NCA from basedata
.
Note
- For Windows, adapt the above examples by replacing
/
with\
and using the appropriate path to the executable.- Control NCA is typically around 1MB in size.
- Yanu only accepts Control Type NCA. If unsure of the Type, trial and error can help narrow down the options.
- Check the logs for guidance on which TitleID to use if using the wrong one.
Used for | Windows | Linux |
---|---|---|
Keys | %USERPROFILE%\.switch |
$HOME/.switch |
Cache | %LOCALAPPDATA%\com.github.nozwock.yanu |
$HOME/.cache/com.github.nozwock.yanu |
Config | %APPDATA%\com.github.nozwock.yanu |
$HOME/.config/com.github.nozwock.yanu |
-
Newer games failing to update.
Before applying the update, it is necessary to either use the latest product keys or perform a downgrade of the base and update the ROM files firmware using NSCB. This approach has proven to be effective. -
If you encounter errors such as 'Failed to sync package repos' while installing yanu on Termux, try updating your outdated repositories using:
termux-change-repo
- hactool, hacPack, hac2l, hactoolnet, and 4NXCI are used internally for the heavy lifting.
- @Pipetto-crypto for the
aarch64-linux
hac2l
binary. - Willfaust's script for reference.