Goldleaf - A Nintendo Switch multipurpose homebrew tool




Goldleaf is multipurpose homebrew tool for Nintendo Switch.​


Features

Goldleaf has a very similar concept to FBI, which is a similar tool for Nintendo 3DS homebrew.

These are its main features:

  • SD card browser: A simple but fully equiped file browser for the SD card, supporting several file formats (such as NSP, NRO, NACP, NXTheme, JPEG, tickets...), and with support for copying, pasting, renaming, deleting and creating files and directories.

  • Console memory browser: Same browser but to be used with NAND partitions, which also warns when writing or deleting content as it can be dangerous.

  • Remote PC browser: Via this feature, one can browse a PC's drives like any other filesystem, connected by a USB-C cable.

  • Content manager: Browse any kind of content in your SD card, console memory or game cartridge. You can browse all the NCAs, and as title options, you can remove the content, or export it as a NSP. NAND SYSTEM contents (system titles or contents) aren't allowed to be deleted. Invidual contents such as updates or DLC can be removed individually.

  • Ticket manager: Browse all tickets, both common and personalized. You can remove them, but an extra warning will be displayed when attempting to remove tickets being used by some content.

  • Web browser (web applets): Using the console's web applets, Goldleaf allows to search and navigate through web pages. If Goldleaf is launched through hbmenu as a NRO, WifiWebAuth applet will be used, which tends to fail sometimes, along with fewer features, such as lack of video support.

  • User account manager: Select a user account, and easily change things as the user's nickname or even delete it. Via the file browsers you can replace a user's icon with a JPEG image, but it can be a risky action. The icon needs to be a valid JPEG, with 256x256 dimensions. Goldleaf checks if the icon is valid to replace the other one.

  • Console information: Simple menu to see current firmware string, and the total free and occupied size on SD card and console memory.
Among all this features, Goldleaf is a very intuitive tool, with a fancy UI, and fully translated into 5 different languages: English, Spanish, German, French and Italian.

Common controls
  • (L-stick / D-pad) Move through the current menu

  • (R-stick) Move slightly faster through the current menu

  • (ZL / ZR) Show a dialog to shut down or reboot the console.
NRO version
  • (+ / -) Exit the application in order to return to hbmenu.
Disclaimer

NSP installs

Always keep in mind that installing NSPs can be a very easy way to get banned. If you use airplane mode and special DNSs like 90DNS, there is a smaller chance to get banned.

NEVER install untrusted NSPs. Goldleaf can identify (according to the NSP's application ID) whether the NSP is a homebrew NSP (IDs starting with "05", usually for forwarders), or a regular title (official ID range just allows IDs starting with "01")

Tickets

Tickets represent a game purchase, but technically speaking, you can't boot a title if the ticket isn't present (in case the title requires the ticket).

NSPs which don't have (nor require) a ticket are "standard crypto" NSPs. Standard-crypto titles aren't offical (usually reconverted content to avoid importing tickets).

Goldleaf will display whether a ticket is present or not, and if so, it's titlekey. Titlekeys are required to decrypt and access titles' content which require a ticket. Otherwise, they are undecryptable, hence unlaunchable by the system.

TL;DR: Always try to avoid untrusted NSPs, and if you go ahead and install CDN NSPs with tickets, avoid going online, or use special tools such as 90DNS, or you'll be banned for sure.

Forwarding

Goldleaf is released along with a NSP, in order to launch Goldleaf as an installed title, and take advantage of extra RAM and features such as web browsing.

The NSP is a forwarder since 0.6, what means that, instead of having Goldleaf's source inside the NSP, it simply loads the NRO from the SD card, meaning that only the NRO should be updated instead of having to reinstall the NSP.

Goldleaf's forwarding code tries to locate Goldleaf (Goldleaf.nro) in sd:/switch/ and sd:/switch/Goldleaf/. If it isn't found, an error message is displayed.

Settings

Goldleaf supports the customization of colors, assets and other options via a JSON file located at Goldleaf's folder: sd:/switch/Goldleaf/settings.json.

Sample

This is an example JSON for Goldleaf settings:

Code:
{
   "general": {
       "customLanguage": "es",
       "keysPath": "/switch/prod.keys",
       "externalRomfs": "/switch/Goldleaf/theme/rom"
   },
   "ui": {
       "background": "#aabbccdd",
       "base": "#aabbccdd",
       "baseFocus": "#aabbccdd",
       "text": "#aabbccdd",
       "menuItemSize": 80
   },
   "installs": {
       "ignoreRequiredFwVersion": true
   }
}

If a certain attribute isn't present Goldleaf will use default values. For colors, Goldleaf will initially load default light/dark themes according to the console's theme color, and later, colors present in the JSON will be used instead of default theme ones.

Notes

Via RomFs replacement, when Goldleaf tries to locate, for instance, romfs:/FileSystem/FileDataFont.ttf resource font, if romfsReplace is true and romfsReplacePath is, for instance, /switch/Goldleaf/testromfs, Goldleaf will look if sd:/switch/Goldleaf/testromfs/FileSystem/FileDataFont.ttf exists and use it if so, otherwise will use RomFs's one.

So, via this configurations, UI's images, resources, element sizes and even translations (using custom JSON translations) can be used, plus some more assets which will be added in future updates.

Known bugs
  • On Atmosphère and SX OS, exiting Goldleaf via HOME menu (as a NRO) seems to crash the system on 7.x firmwares.

  • Remote PC browsing in general seems to have several bugs, most of them related to the UI system.
Contributing

If you would like to contribute with new features, you are free to fork Goldleaf and open pull requests showcasing your additions.

If you just would like to suggest new ideas, but without actual code implementations, you're free to open an issue. Please try not to duplicate those, if the idea or problem is already reported in another issue.

Translations

Read this before making any new translations:

  • Goldleaf's aim is to, mainly, support languages supported by the console itself, so those not yet supported by Goldleaf and which aren't supported by consoles should have less priority and won't be probably accepted.

  • UI (Plutonium) lacks special UTF16 characters, so some languages like Russian or Korean will not work, at least on the UI's current state.
Credits and support

Credits

The main concepts of Goldleaf are and have been developed by me (XorTroll), but without the effort and support of many others, this project wouldn't have been a thing:

  • Adubbz and all the (old) Tinfoil contributors, for their huge work with title installing.

  • C4Phoenix, for his awesome work doing this project's logo, and the GIF displayed when launching the installed forwarder.

  • All the graphics except Goldleaf's logo (see credit above) were grabbed from Icons8.

  • 2767mr, for all the support given in Goldtree.

  • Simon for his libusbK implementation for C#, which has made Goldtree client possible.

  • shchmue and blawar for the system to get titlekeys without breaking processes, found in Lockpick.

  • Translators: unbranched and exelix for Italian, tiliarou and FuryBaguette for French, and LoOkYe and C4Phoenix for German.

  • All the testers, for reporting bugs and helping a lot with the project's development.
Discord server and beta testing

If you would like to be more informed about my projects' status and support, you should check my Discord server. It's a simple server for Nintendo hacking and homebrew, mainly focused on my projects. If you would like to be a beta-tester, then this is what you're looking for.

Enjoy this amazing homebrew!
 
Last edited by XorTroll, , Reason: 0.6 README changes

Dothackjhe

Writer by Day; Writer by Night.
Member
Joined
Dec 29, 2013
Messages
686
Trophies
0
Location
Philippines
Website
wise.com
XP
1,287
Country
Philippines
I just tried updating my old NSP installation of Goldleaf via Goldleaf.nro, the uninstallation of the pre-existing app and the subsequent re-installation all went smoothly.
 

LightBeam

Well-Known Member
Member
Joined
Oct 1, 2018
Messages
504
Trophies
0
XP
1,387
Country
France
Maybe the new protocol is slower or something like that, but at least it's more stable now. Didn't had any issue installing via USB for now while I had a lot with 0.3 and 4
 

blawar

Developer
Developer
Joined
Nov 21, 2016
Messages
1,706
Trophies
1
Age
38
XP
4,261
Country
United States
@hippy dave what transfer speed you get on USB with V5 I am getting 16mbps compared to TF where I get 25-30mbps

Ya i am seeing that as well. But is average speed though, maybe the calculation is wrong?

I transferred a 3.93GB NSP last night through USB it stayed at constant 16MB. Yet on a non gui connecter like TF it's faster is it the GUI that creating an overhead or is the usb side not optimized yet I saw the same speed on V3 as well.

I just did a installation with goldleaf 0.5 and NS-USBloader 0.4 instead of goldtree having the same speed as well around 15MB/s Maybe it got something to do with you the USB transfer protocol in goldleaf 0.5

PS Tried with USB A to Type C USB 2.0 and type c to type c 3.0



USB is in a better state now:

  • Installations are no longer handled by two different threads, which makes them more stable.


This is why the USB install speed is slower, its not a display bug or a USB bug.

I tried out the new 0.5 to install some games today, everything went smoothly. Nice job on the update.
 
Last edited by blawar,
  • Like
Reactions: Deleted User

whateverg1012

Well-Known Member
Member
Joined
Sep 23, 2016
Messages
573
Trophies
0
XP
1,405
Country
United States
Great job with this update, this is the only app which lets me install my NSPs via USB without crashing on 7.X. However, updates over updates via USB don't work, it says that content is already installed, so I have to delete the old update before I'm able to install it, please fix this when you can.
 
  • Like
Reactions: Deleted User

Picartman

Well-Known Member
Newcomer
Joined
Sep 29, 2016
Messages
61
Trophies
0
Age
30
XP
152
Country
United States
Hey guys, I've been using Dopus to install NSPs from 6.0 up to 6.2 since last October. I've been installing titles just fine with Dopus, but I'd rather upgrade to something that's still being updated. I've been researching on the latest installers, and I've had to sift through a ton of drama posts. I'm not trying to get into that discussion, I'm just trying to figure out what I should upgrade to from Dopus.

This is my usual process: NSP goes on SD card, put the card back into my Switch, boot up with ReiNX, then go to Dopus and install the NSP, and I can immediately play after (I don't do anything else like modifying tickets or converting stuff from xci to nsp, etc etc).

Would Goldleaf be an upgrade from Dopus? I just want to install titles like I have been doing, I don't mind the long process. I know network installs exist, but I'd rather just install directly from my SD card.

Thanks for any help/info.
 

mikifantastik98

Well-Known Member
Member
Joined
Dec 12, 2018
Messages
289
Trophies
0
Age
36
XP
1,304
Country
Italy
Great job with this update, this is the only app which lets me install my NSPs via USB without crashing on 7.X. However, updates over updates via USB don't work, it says that content is already installed, so I have to delete the old update before I'm able to install it, please fix this when you can.
try " Replace NCA " option
 

designgears

Well-Known Member
Member
Joined
Aug 8, 2016
Messages
289
Trophies
0
XP
630
Country
United States
I'm having issues compiling Goldleaf, I build libnx-goldleaf first, then compiled goldleaf nro, everything appeared to be fine but when I launch on the switch it goes to a black screen and eventually crashes with 2168-0002 (0x4a8), any idea what I'm doing wrong?
 

stick267

Well-Known Member
Member
Joined
Dec 17, 2018
Messages
598
Trophies
0
Age
30
XP
1,135
Country
United States
I'm having issues compiling Goldleaf, I build libnx-goldleaf first, then compiled goldleaf nro, everything appeared to be fine but when I launch on the switch it goes to a black screen and eventually crashes with 2168-0002 (0x4a8), any idea what I'm doing wrong?
Just grab the latest precompiled nightly build here:

https://bsnx.lavatech.top/goldleaf/
 

ZachyCatGames

Well-Known Member
Member
Joined
Jun 19, 2018
Messages
3,329
Trophies
1
Location
Hell
XP
3,564
Country
United States
I'm having issues compiling Goldleaf, I build libnx-goldleaf first, then compiled goldleaf nro, everything appeared to be fine but when I launch on the switch it goes to a black screen and eventually crashes with 2168-0002 (0x4a8), any idea what I'm doing wrong?
did you use “make install” in libnx-goldleaf or just “make”?
 

designgears

Well-Known Member
Member
Joined
Aug 8, 2016
Messages
289
Trophies
0
XP
630
Country
United States
did you use “make install” in libnx-goldleaf or just “make”?
You wouldn't want to do make install, the makefile for goldleaf is referencing directly from the libnx-goldleaf directory for the libs it needs.

Code:
LIBDIRS    := $(PORTLIBS) $(CURDIR)/../libnx-Goldleaf/nx $(CURDIR)/../libnx-Goldleaf/nx/fatdrive $(CURDIR)/Program/ExeFs/main/External/pu $(CURDIR)/Program/ExeFs/main/External/json $(CURDIR)/Program/ExeFs/main/External/hactool $(CURDIR)/Program/ExeFs/main/External/mbedtls
 

ZachyCatGames

Well-Known Member
Member
Joined
Jun 19, 2018
Messages
3,329
Trophies
1
Location
Hell
XP
3,564
Country
United States
You wouldn't want to do make install, the makefile for goldleaf is referencing directly from the libnx-goldleaf directory for the libs it needs.

Code:
LIBDIRS    := $(PORTLIBS) $(CURDIR)/../libnx-Goldleaf/nx $(CURDIR)/../libnx-Goldleaf/nx/fatdrive $(CURDIR)/Program/ExeFs/main/External/pu $(CURDIR)/Program/ExeFs/main/External/json $(CURDIR)/Program/ExeFs/main/External/hactool $(CURDIR)/Program/ExeFs/main/External/mbedtls
Oh, huh. Dunno what the issue is then :/
 

switshgam0r

Well-Known Member
Member
Joined
Jul 4, 2018
Messages
145
Trophies
0
Age
29
XP
205
Country
Germany
Is there a simple python script for install via usb on linux? Is there a simple python script to install over wifi on linux?

The old tinfoil was better for Linuxusers!
 

lettuce

Well-Known Member
Member
Joined
Jul 27, 2006
Messages
811
Trophies
0
XP
469
Country
Is there another way to exit out of goldleaf other than the home button as that way always crashes my switch!??
 

Asia81

Yuri Lover ~
Member
Joined
Nov 15, 2014
Messages
6,253
Trophies
3
Age
27
XP
1,910
Country
France
How do you install NSP from USB?
I don't see any client on windows.

NVM, I didn't see GoldTree in the release tab (using kozmos, that's why)... Srry.
 
Last edited by Asia81,

sTo0z

Well-Known Member
Member
Joined
Nov 28, 2004
Messages
308
Trophies
0
Age
38
Location
USA
Website
Visit site
XP
1,442
Country
United States
Cannot seem to have any luck with this anymore.. used to work pretty nice.

On 0.5 release, I always get the error that the title is already installed. Someone mentioned "Replace NCA" option, but I don't see anything like that anywhere, and no google search gives any results... what is this?

If I try latest nightly build as of now, I get error "Metadata could not be located in the NCA(3)"...

Anyone know what's going on?

EDIT: Forgot to say some details.

Switch is 7.0.1 using ReiNX.
 
Last edited by sTo0z,
General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: Lol maybe