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.

Important

Yanu doesn't support DLCs as of yet

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

Note

If for some reason, the backends are not compiling properly for you on Linux, you could always use the docker builds.

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.

Tip

  • 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