Skip to content

nozwock/yanu

Repository files navigation

yanu

Yet Another NSP Updater for Skyline

Consider starring 🌟 the project if it helped


About

download badge

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.

Screenshot screenshot

Supported File Types

  • NSP
  • XCI* (through XCI-NSP conversion)

Installation

Android w/Termux

Check out Video Tutorial by SmokeyMC for Android.

  1. Download & Install Termux from F-droid.
  2. 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:

Linux

  1. 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
  2. Download & give executable permission to yanu:
    chmod +x yanu-x86_64-unknown-linux-musl

Windows

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.

Docker

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' 

Usage (CLI only)

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.

Directories Used

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

Troubleshooting

  • 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

Special Thanks