Homebrew Release: Introducing NUSGet!

  • Thread starter Thread starter NinjaCheetah
  • Start date Start date
  • Views Views 8,694
  • Replies Replies 20
  • Likes Likes 22

NinjaCheetah

Member
Newcomer
Joined
Aug 20, 2020
Messages
23
Reaction score
100
Trophies
1
Age
18
Location
Space
Website
ninjacheetah.dev
XP
576
Country
United States
NUSGet logo, black arrow with a blue border and the text NUSG overlapping it at the bottom

NUSGet
"It's like NUS Downloader but new!"
By NinjaCheetah
GitHub
Latest Release

Hello fine GBATempers! It's time I finally stop sleeping on my account and actually use it for something. Today I'd like to announce the release of a project I've been working on for quite some time now: NUSGet!

What is NUSGet?
NUSGet is an application for downloading titles from the Nintendo Update Servers, like NUS Downloader. This project initially started as an attempt at making a modern clone of NUS Downloader in Python with a Qt interface, but then expanded to instead be an entirely new application with more features than its predecessor. On top of this, NUSGet is also fully cross platform, and has binaries available for macOS, Windows, and Linux.

Features
NUSGet has a large variety of features, and is designed to expand upon the offerings that NUS Downloader had.
These features include:
  • Downloading titles from the Wii, vWii, and DSi update servers​
  • A title database to allow for easily selecting what title you'd like to download (currently only offers system titles for all platforms, preinstalled titles for all platforms, and all Wii Channels for Wii/vWii; no WiiWare, DSiWare, or Virtual Console titles are listed because those are massive lists that I have not had the time or patience to input into a database yet)​
  • The ability to save encrypted contents for a title, as well as decrypted contents if a common ticket is available (titles are denoted with a checkmark if they have one, and an X if they do not)​
  • The ability to pack WADs for Wii and vWii titles, and TADs for DSi titles, as long as a common ticket is available​
  • The ability to re-encrypt vWii titles with the standard Wii common key, which allows for editing these WADs with conventional tools, installing them directly from vWii mode, and installing them directly into Dolphin without needing a Wii U NAND dump, since the vWIi keys are no longer required​
  • A toggle for switching between the standard Wii CDN and the Wii U CDN (which is faster) for Wii titles​
  • Supports Windows, macOS, and Linux​
A General Warning:
You should not modify or install crucial system titles unless you know what you're doing, you have backups, and you have brick recovery such as BootMii or Preloader in place. I am not responsible for any bricked consoles. Use this program at your own risk.

Going hand-in-hand with this release, this is also the soft-launch of my library libWiiPy!
libWiiPy is a modern Python 3 library for handling the various files and formats found on the Wii. It's what powers NUSGet's download operations, and was key to making a Python-based NUS downloader. It's going to have a proper announcement of its own, but I figured since it's the real magic that makes this all work, it would get a little sneak peek here. In the meantime, you can read more about it on the libWiiPy GitHub page.

By design, NUSGet is meant to replace the three major variants of NUSD that are available, those being the original, the version that was modded to use the Wii U CDN (which in NUSGet is just a toggle), and the version modded to download vWii titles. Unlike the NUSD vWii mod, testing has been done on my real Wii U to ensure that titles downloaded for the vWii using this tool (when re-encrypted) are safe to install.

I do want to provide a warning that there are likely to still be some bugs here and there! I can't test everything, and I'm still getting to know Qt. Feedback both here and on the GitHub issues page is very much appreciated.

I'm not the greatest at this type of release announcements, so I know things may not be clear and will happily answer any questions about the features described and how they work. No files are attached here by design so that you go and download the latest release from GitHub.


Please pardon the mediocre Fusion theme. PySide6 gets a little temperamental when it comes to loading external themes, so Breeze isn't quite working yet for those on KDE. Oh and Plasma just refuses to use the window icon for some reason? It works on other DEs and is fine on macOS/Windows though.
Screenshot_20240626_220615.png
Screenshot_20240626_220757.png

Special Thanks
Special thanks to my girlfriend (who is not on GBATemp) for making the super cool icon for me and for keeping me sane during the development of both this and libWiiPy as a whole, and also to @rvtr, whose DSi knowledge was crucial to adding proper DSi support into NUSGet.
 
Last edited by NinjaCheetah,
I tried it out and it works great.
Does this use the original servers for wii or the rc24 backup servers?
hope you keep up with it .
Thanks! I definitely plan to keep working on it.

By default, it uses the Wii U servers, but by disabling the checkbox for that you can instead use the original Wii servers. I would possibly consider adding backup servers in the future, but I’ve found the Wii U servers to be very fast and reliable, so that’s what I’d recommend (and why that’s the default).

The checkbox to disable the Wii U servers is really just there in case someone really wants to use the Wii servers, but it probably isn’t necessary for most people.
 
This looks neat I will check it out later! Any hope for cmd line support (without having to install dependencies like Python)
Yes! You’ll probably want to check out my other libWiiPy-based project, WiiPy.

It’s also a Python program, but like NUSGet it has binaries for macOS, Windows, and Linux so you don’t need to install anything.
 
New Bugfix Release!
NUSGet v1.1.0 has just been released, and includes some minor updates and fixes. The changelog can be found alongside the release over on GitHub, as well as right here.

Changelog:
  • Minor database corrections (Demae Channel TID was fixed, Set Personal Data Channel was added, some warning strings were made more clear).
  • Wording of the re-encryption option was made a little more clear, now says "Re-encrypt title using the Wii Common Key" instead of "Pack for vWii mode instead of Wii U mode".
  • Added Norwegian translations, thanks to @rolfiee (@Rolfie on GBATemp). This is mostly a test of utilizing Qt Linguist, and there are still some issues with how it's implemented. Once these are addressed, directions on how to contribute translations will be added and more languages will hopefully become available.
  • libWiiPy change: All WADs packed use adjusted calculations for the content region size in the WAD header, creating consistency with legacy tools. This especially means that IOS WADs from NUSGet will now match the expected outputs from legacy tools.

These updates should bring NUSGet in line with WiiPy when it comes to WADs, as WiiPy was my initial testing ground for some libWiiPy fixes. WADs from NUSGet and NUSD should now match in most cases, except for some strange exceptions where NUSD actually changes data it isn't supposed to.

Translations:
As stated in the changelog, translations are still a work in progress, and I'm not quite ready to implement them yet, but when I get things fixed up, I would very much appreciate the help with that! I only speak English, so if there are people who speak other languages who'd like to help translate NUSGet's interface, keep an eye out for future updates here.

The Norwegian translations will be used if your system language is set to Norwegian, but there are still some spots that for right now are only going to display in English.



As always, if anyone has any questions/comments/bugs to report, I'm here! Enjoy!
 
New Bugfix Release!
NUSGet v1.1.0 has just been released, and includes some minor updates and fixes. The changelog can be found alongside the release over on GitHub, as well as right here.

Changelog:
  • Minor database corrections (Demae Channel TID was fixed, Set Personal Data Channel was added, some warning strings were made more clear).
  • Wording of the re-encryption option was made a little more clear, now says "Re-encrypt title using the Wii Common Key" instead of "Pack for vWii mode instead of Wii U mode".
  • Added Norwegian translations, thanks to @rolfiee (@Rolfie on GBATemp). This is mostly a test of utilizing Qt Linguist, and there are still some issues with how it's implemented. Once these are addressed, directions on how to contribute translations will be added and more languages will hopefully become available.
  • libWiiPy change: All WADs packed use adjusted calculations for the content region size in the WAD header, creating consistency with legacy tools. This especially means that IOS WADs from NUSGet will now match the expected outputs from legacy tools.

These updates should bring NUSGet in line with WiiPy when it comes to WADs, as WiiPy was my initial testing ground for some libWiiPy fixes. WADs from NUSGet and NUSD should now match in most cases, except for some strange exceptions where NUSD actually changes data it isn't supposed to.

Translations:
As stated in the changelog, translations are still a work in progress, and I'm not quite ready to implement them yet, but when I get things fixed up, I would very much appreciate the help with that! I only speak English, so if there are people who speak other languages who'd like to help translate NUSGet's interface, keep an eye out for future updates here.

The Norwegian translations will be used if your system language is set to Norwegian, but there are still some spots that for right now are only going to display in English.



As always, if anyone has any questions/comments/bugs to report, I'm here! Enjoy!
Awesome work! I'll follow this thread so when the translation feature is ready, I can help with one! 😁👍🏻
 
  • Like
Reactions: XFlak
New release!
NUSGet v1.2.0 has been released, and includes some improvements and new features. The changelog can be found over on GitHub, as well as right here.

Changelog:
  • Script support from NUSD returns! NUSGet now accepts NUSD-format scripts, which can be loaded using the "Run Script" button. This script format is a bit old, and will likely be phased out for something newer in the future, but using it for now allows for batch downloads.
  • "Hidden Channels" is now its own category in the database.
  • Several misplaced titles have been relocated to the proper categories, and missing titles have been added.
  • NUSGet now automatically checks for updates on startup, and notifies you if a new version is available.
  • The database and database loading code have been changed to hopefully speed up app loading. Titles are loaded from the database in a much more efficient way.
  • Patches can now automatically be applied to IOSes during download by enabling "Apply patches to IOS" (this works the same way that it did in NUSD).

Translations:
New translations are available! NUSGet is now available in both German and Romanian, in addition to the existing translations for Norwegian and Italian. I'm still looking for some people to help with translations, especially if you speak Spanish or French. If you speak one of those languages and have a little free time to lend, you can follow the translation instructions on on GitHub, and if you have any questions then feel free to shoot me a PM!


Additional update for macOS users: I realized after publishing this release that a recent change to my workflows made it so that the macOS binaries were arm64, rather than x86_64 like they were for v1.0.0 and v1.1.0. To accommodate non-Apple Silicon users, there is now a "NUSGet-macOS-x86_64-bin.tar.gz" binary alongside the old binary, which has now been renamed to "NUSGet-macOS-arm64-bin.tar.gz". No other changes have been made.


As always, if anyone has any questions/comments/bugs to report, I'm here! Enjoy!
 
Last edited by NinjaCheetah,
Hi there,
I have been trying to download a system menu version, however, the download would simply not start. Have the same issue with the NUSDownloader. Any idea why that could be?
 
Not sure if you're the same person reporting the same issue on discord, but if nus download, nusget, and modmii (which uses nusd cli) all don't work, it's likely an issue with your ISP or DNS or firewall settings. Try connecting to a dif network
 
  • Like
Reactions: andreiarturo
Didn’t get the chance to respond but that was going to be my suggestion as well. If multiple tools can’t download anything, unfortunately you might just not be able to access the NUS directly.
 
New release!
NUSGet v1.3.0 has been released! This update includes some major backend changes and some fancy new features. I'm a little late with my post here, so those running v1.2.0 who've opened NUSGet in the last day might've already been informed about this release. The changelog can be found over on GitHub, as well as right here.

Changelog:
  • Support for a new JSON-based script format has been added! This format makes it much easier to keep track of what titles and versions are being downloaded, and allows for mixing Wii, vWii, and DSi titles with an optional `Console:` key. You can look at `example-script.json` in the root of the repository as an example of how these new scripts should be formatted.
  • Titles in scripts no longer have to exist in the database.
  • Script error handling is now more robust. Scripts will now continue even when errors are hit, and a summary of issues encountered will be displayed at the end of the downloads.
  • Support for the NUSD script format, introduced in v1.2.0 as a stopgap, has been entirely removed due to the introduction of the new format.
  • All WiiWare and Virtual Console titles (at least those listed on WiiBrew) are now present in the database! Note that because these titles are not free, you will only be able to download their TMDs and encrypted contents, as there are no Tickets available for them on the NUS.
  • The backend for the title database tree has been entirely rewritten! This should increase performance, and also resolves some visual issues that were a result of the previous system.
  • A search bar has been added above the title tree, allowing you to filter the titles shown. This should make finding a particular title in the tree much faster.
  • Clicking the labels next to the checkboxes now toggles the checkboxes again (this was not the case in v1.2.0 due to a change in how the labels were included in the UI).
  • Titles will now be downloaded to a folder named `NUSGet Downloads` instead of `NUSGet`. This folder will still be inside of your local downloads folder. Proper support for choosing a download location will be added in the future, but for now this resolves the issue where the binary `NUSGet` conflicts with the directory `NUSGet` when running the application from within your downloads folder on Linux.

Translations:
New translations are available! Besides English, this release of NUSGet is available in German, Italian, Korean, Norwegian, and Romanian.

If you speak a language that NUSGet doesn't and want to help me out, translation instructions are on on GitHub, and you can PM me with any translation-related questions you might have.


As always, if anyone has any questions/comments/bugs to report, I'm here! Enjoy!
 
New major release!
NUSGet v1.4.0 has been released! While this update doesn't come with a lot of changes to NUSGet's functionality, it does include a massive visual overhaul. NUSGet now has a custom Qt theme that will be used across macOS, Windows, and Linux that I think looks far better than any of the system themes did. The changelog can be found over on GitHub, as well as right here.

Some people may also notice that I never posted here about v1.3.1. Oops. Fortunately, there wasn't a lot to say, as v1.3.1 primarily just added French language support and fixed a Qt library bug on Linux.


Changelog:
  • NUSGet now uses a new custom stylesheet that provides a cleaner look across all platforms.
  • "Pack Installable Archive (WAD/TAD) is now enabled by default on launch.
  • NUSGet now has support for saving settings to `config.json`, allowing for more configuration.
    • Automatic updates can now be disabled, so the app won't prompt you to update on launch.
    • A custom download directory can now be specified, so that your downloads don't have to go to `~/Downloads/NUSGet Downloads/`.
  • Added a separate about screen that lists the NUSGet, libWiiPy, and libTWLPy versions, as well as credits for all of NUSGet's translators.
  • Going hand-in-hand with the about screen, version numbers are no longer shown in the log on launch.
  • Added the stock "About Qt" screen for all of those Qt nerds out there who want to know what version NUSGet is using.
  • Minor database fixes, a handful of names and warning strings have been corrected.
  • WAD names are now generated from the title names displayed in the tree. This should have essentially no visible effect, but it cuts down on the database sizes by a substantial amount.
  • Fixed an issue where translations for a language may have only loaded for specific locales on Windows (ex. French translations would only be loaded if you used the `fr_FR` locale, and not any other `fr_XX` locale).
  • Fixed an issue where using a language other than English could cause the widths of the settings columns to change.
  • Some special characters are now automatically removed from archive file names to prevent issues where the file can't be created because your OS or filesystem doesn't allow a character present in the file name.

Translations:
NUSGet speaks another new language! Spanish language support has been added in v1.4.0, alongside existing support for French, German, Italian, Korean, Norwegian, and Romanian. Credits for these translations can be found in the README.

If you speak a language that NUSGet doesn't and want to help me out, translation instructions are on on GitHub, and you can PM me with any translation-related questions you might have. These directions have been overhauled since the previous release, and should be much more detailed and hopefully easier to follow now.


As always, if anyone has any questions/comments/bugs to report, I'm here! Enjoy!

The dark variant of the new NUSGet theme, as seen on macOS. A light variant is also available and will be selected based on your system theme.
Screenshot 2025-05-21 at 2.00.23 PM.png
 

Site & Scene News

Popular threads in this forum