Last Modified: 2020-08-06
For the Users is a group dedicated to making homebrew easier to run, and contributing to some open-source projects. We run the hb-appstore project, a GUI for downloading/managing homebrew apps for video game consoles. We also host a DNS service for accessing the Internet on the Nintendo Switch.
You can check our Members page on Gitlab! We come from all over the place, but a good number of us are coming from the Wii U scene, where we hosted homebrew, exploits, and forums on “wiiubru.com”. We changed our domain name to 1) be more generic and 2) not to be confused with (and to be respectful of) the homebrew env groups named wiiubrew/switchbrew.
We view our two primary services as being “for the user”, as in, they help facilitate the device’s user ability to accomplish a task that they want to do. This could be convenience (as in hb-appstore) or practicality (as in the DNS server), or any in-general move that increases the users rights on how they use their device.
Nintendo for instance hides access to the filesystem to the user, and also hides the web browser. We would consider these to be anti-features, and actively hostile decisions towards the user. Nintendo does perform some pro-user stuff of course too, such as the input mapping that was added in 10.0.0.
Defining what is and isn’t “for” the user is a little subjective, but in our opinion tends to be pretty clear cut upon inspection when comparing a device’s functionality to a regular personal computer’s functionality. For this reason, most if not all homebrew apps, libraries, toolchain libraries, environments, and developers, by virtue of being homebrew, are of course “for the user”!
We originally uploaded all of our stuff to Github (fortheusers), but recently moved primary development to Gitlab (4TU). We have continued to update Github as there is a larger user-base on Github and the overhead of also updating it is small. In general, if you make an issue somewhere we can handle it / get it to the right spot.
The move to Gitlab is motivated by a preference for Gitlab’s open-source core platform when compared to Github. The article Why not GitHub? touches on some things that we don’t like about GitHub.
Homebrew App Store is a homebrew app that runs on Switch, Wii U, and PC. It is the frontend to the libget package manager, which itself was designed as a lightweight, scaleable way to install, organize, and upgrade files on the SD card.
Apps can be submitted at submit.fortheusers.org. Thank you!
The design of how libget works is detailed on this wiki page. At a high-level, the app launches and fetches a big json summary of every package on the server. It then asynchronously downloads icons for each app in the listing for the user to browse/choose. Any previously installed apps will have their version codes checked against the ones on the server to notify the user of an update or not.
When a package is installed, the files within that package are compared to the ones on the filesystem, and certain decisions for each file determine whether or not existing files will be overridden, deleted, or left alone. This is to allow for user configs to persist, and for old file paths to e cleaned up.
These are files that are used internally by hb-appstore to track the version and contents of the package that you downloaded. When using the homebrew app you should never see these files. When using the web frontend, they happen to also be in the zip as of this time of writing.
If you downloaded from the web, you can completely ignore these files and don’t have to extract them to your SD card.
If you’re poking around your SD card and you find these files inside a folder named
appstore/.get, these are important and used to track the state of the packages that you’ve installed. If you delete this directory all info about currently installed packages will be deleted.
This is an ongoing issue that we have been slowly working on, but hasn’t been a primary focus compared to other things. The short answer is that it’s complicated due to the different places that homebrew can be installed and the different forms it appears in.
The long answer is here and also here. Currently, the problem is analogous on a computer to: manually copying over a binary on linux, and it doesn’t appear in your distro’s package manager. But there are some approaches!
Our current qualifications are non-destructive apps that 1) serve a purpose, 2) have source code available and 3) aren’t just clones without major features of other apps. In the past, we wanted to collect as many homebrew apps as possible, but as the store has grown, we have updated our definitions to be a bit more selective.
In general, you’re a developer and your app is open-source it is likely to be approved. If it’s popular enough to have been requested by other users it may have been added already without your explicit sign-off by virtue of the open-source license. We are doing this automatic-adding less however following developer feedback.
On Profanity/Nudity, currently we do not have any major restrictions on this, although down the road we are interested in adding some NSFW controls.
Most apps are submitted. Other times a developer is contacted by us. On some occasions, we have taken the liberty of re-hosting apps on our own (given that we have the license to rehost them).
When a developer updates an app, and that app is updated on Github, we have our bot Dragonite alert us of the update and it should be expected to be seen on the store anywhere between a few hours to a few days. At the time of writing this process of approval happens in a maintainers backroom channel, but in the future we would like the metadata surrounding the contents of the store to be visible/shareable in a public git repo.
The tool Spinarak is under development to make this process easier / more transparent.
This has been a bug we’ve had for a few months that we need to get around to fixing. We have the stats still but our method to surface them broke as we scaled more and as of this time of writing we have not fixed it yet.
We have a work-in-progress port to these consoles using SDL1. We are looking for repo maintainers and also still working on the ports. To see the progress, check hb-appstore’s README.
Crashing can sometimes be caused by running out of memory. Although we’ve tried to address these issues, if present, they can usually be solved by running the app in Title-Override mode (Holding L+R while launching a title within AMS).
If you continue to have problems when the app launches, something may be corrupted within your config files. You can try to address this via Homebrew App Store’s recovery mode. (Detailed below)
Repeatedly pressing L and R while Homebrew App Store is launching from hbmenu will bring up the recovery menu. This is a text-only mode that doesn’t use as many network calls, and also provides an option to reset configuration data in case some issues are being experienced with the regular GUI.
You can also try downloading an app from within recovery mode and seeing if that solves the problem, or if you’re still experiencing it.
You should try to perform a connection test in settings and see if you’re able to get online. In general, if the console can connect and our servers are up, you shouldn’t see any issues. You may want to check if our website at
apps.fortheusers.org is reachable or not on a PC on the same network.
In some cases, when you go to download an app, rather than showing a progress bar it will just kick you back to the homescreen. This can either indicate an issue with writing to the SD card or that the network connection was lost. In a future build we will have a specific error message.
For the SD card, if on Wii U, you should ensure that the write lock isn’t flipped. This is a physical switch located on the SD card.
These should be fixed in the latest hb-appstore. If you are still having issues with your controller input, please file an input against the hb-appstore repo!
The DNS service is a custom DNS server that takes advantage of the Nintendo Switch captive portal functionality. Nintendo uses this feature normally to allow the user to sign in / authenticate to hotposts such as on airplanes or in hotels.
The captive portal logic has the Switch request the URL
ctest.cdn.nintendo.net over the Internet. If it does not receive the expected result, it pops up a web browser pointing to that page. Our DNS server reports every domain->IP mapping correctly, except for the one that the Switch is requesting we redirect to ourselves, and then redirect out to our landing page.
The landing page itself is just a regular website with some workarounds in order to function on the Switch!
In general, you should not go trusting random DNS servers to not be snooping on your data. In our case, we are not inspecting the traffic that you generate. (But of course we’d say that!)
Fortunately, the Switch respects SSL certificates, so even if we were malicious and mitm-ing/removing SSL from pages, you are able to verify that we aren’t by pressing Plus while the browser is open to view the page’s URL and certificate. If the certificate is valid, all of the traffic/information on that page is encrypted between you and the target website, and even if we were trying something shady we wouldn’t be able to see any data on the page (beyond the actual domain name itself).
We hope that our reputation hosting other services alongside our public statements / track record does give you peace of mind beyond checking the SSL certificate, but definitely understand this concern and if you find it unacceptable, self-hosting your own server may be a preferred option.
Nintendo explicitly disabled video playback in the web authlet. This is ostensibly a security feature, however it’s more of “security by obscurity” as there are other ways to access this type of content on other applets as of this time of writing.
If you’d like to see Nintendo release a real browser with more fleshed out features, let them know by signing our petition! We do not have control over any of the specific features of the browser, and are only able to display the hidden one Nintendo shipped with the OS.
Yes, our DNS server will block Nintendo Wii U and Switch update domains. However, it is not explicitly for this purpose!
If you enter the IP of 18.104.22.168 and no web browser pops up, it’s possible that your custom DNS settings are being ignored by your router/ISP. DNS is inherently an insecure protocol (which allows us to override it in the first place), so your ISP/router has the ability to override our overriding. This is generally known as DNS Hijacking.
One quick workaround is to try a phone hotspot, another router, or access point.
If you’d like to confirm that it’s your network and not your Switch, you can try to run the following terminal/cmd commands on a PC on the same network:
nslookup conntest.nintendowifi.net 22.214.171.124
If this returns anything other than 126.96.36.199, it implies that your network stack is overriding DNS packets somewhere and won’t allow it to be overridden. Sometimes routers have this as a feature, and it can be disabled in the Admin panel of your router. In general though, if the computer doesn’t resolve the DNS properly, and you don’t have another hotspot, you’re going to have to look at self-hosting if you want to use the browser.
If you check your DNS settings and restore it to “Automatic”, but the web browser keeps popping up, try some of the following things:
In general, this should never happen unless there’s some funny-business going on within your network stack, and the DNS is being both poisoned and overridden. We have not seen this happen where steps 1 or 2 didn’t resolve the problem, and if they don’t please let us know.
If step 3 isn’t feasible for you, and nothing else fixes the problem, you may unfortunately have to wait until your network stack (any one of the computers between you and your ISP) flushes out the bad data. This shouldn’t be happening as our TTL is extremely short, but some DNS servers will incorrectly disregard this.
Please contact us at our discord server (see below) and we will send you a recovery email. At this time we do not have a place to request this online.
Our Discord server is used primarily by developers to talk about Wii U / Switch homebrew, and also by users to talk about app store / DNS issues and feedback. For more general CFW / Homebrew support, we recommend going to a place like Nintendo Homebrew.