Here’s my adventures of getting a Linux distro running on my Nintendo Switch!
Full credit to the Hekate team here and the L4T Switchroot team here for helping make this possible.
February 15th 2023 - My first steps were to go check if my switch was hardware-patched, and then follow some directions from the Switchroot directory. As I no longer run my Nintendo Switch for any games, as I play practically everything on my Steam Deck and lighter stuff on my Miyoo Mini, I thought it would make a fun little Linux handheld. Looks like it still needs to charge for a little bit before I get going on this, so I’ll let it sit.
February 15th 2023 - Looks like my original Nintendo Switch is one of the few originals that isn’t hardware-patched! Here’s a link to the site I used to check that. My next point of business was to then, once the Switch charged up a bit, use my little RCMLoader dongle to get Hekate installed. I did this by reading through the steps outlined on the Switchroot wiki here starting at “setting up your SD Card” which I used to set up the 256gb MicroSD card I have on this little guy.
After running through the guide here, specifically for Linux users flashing payloads (when you get to the Sending A Payload step) I made sure to set up the MicroSD card properly once it was formatted from TegraExplorer. Please note that my Nintendo Switch was an original 2017 edition, so no custom patching was required to get custom firmware installed.
Feb 15th 2023 - After I got to the point where I had that MicroSD prepared with the required files and folders, per that guide I’ll link again here, I injected a Hekate payload to boot into. I then partitioned the MicroSD card to give around 152gb to the Linux partition and the rest to the original files/folders that I put on there.
Next, per the instructions here at the switchroot website, I mounted the MicroSD card on the Switch to be readable by the computer while the Switch was still plugged in, and then extracted all the Ubuntu files to the root of the MicroSD card.
That first boot image looked pretty cool, in my opinion.
February 20th 2023 - Now that ye olde Ubuntu is up and running on the Switch, I wanted to get Steam installed. I went through compilation and installation steps for box86 and box64 respectively to get x86-oriented Steam to run on this ARM handheld. Looks like I was going about this the completely wrong way, as there was apparently a wiki on the switchroot page for installing box86.
Below, you’ll see me running through the installation steps from that switchroot wiki on installing box86 by doing some compiling etc in the terminal. Looks like I have a bit more to learn though. Let’s see how things go!
February 24th 2023 - Now I work on getting further via the Switchroot wiki on box86 to see if I can make any headroom. Looks like there’s some annoying dependency issues in the chroot I’m trying to install box86 and then Steam in. Looks like this may be an ongoing effort, as packages/sources change and things can get broken by little upstream changes.
Let’s get the Switch back into RTL mode by removing the right joycon and using the Jig I got with my RTLLoader off of Amazon, then use Fuse-as-mentioned-by-that-guide-here to inject the Hekate payload and boot back into Ubuntu! Once booted back into Ubuntu, I’ll open the terminal and make a new recording and attempt here on getting the chroot fixed up.
Hmm, looks like even though I redid the chroot this time around, and got a little further, there’s still some annoying package and dependency issues.
Feb 27 2023 - I finally realized that I just needed to change an entry in the sources.list file for this debian chroot we’re installing Steam into. For those that don’t know, the sources.list tells most debian-based linux flavors (such as Ubuntu) where to look for package updates, kernel updates etc. Seems to have had an invalid entry, so I corrected it to the proper armhf entry in this terminal session, so we can move further.
Now, let’s get to building box86, needed to installing Steam, and see about getting Steam installed!
March 6th 2023 - Tried installing the good ol OpenRA game via flatpak on here, but it looks like that didn’t work out. Then, tried starting Steam up from the swchroot using setarch -L linux32 steam -no-browser -noreactlogin -no-cef-sandbox steam://open/minigameslist
however it didn’t work out this time, as I apparently get a browser disabled error.
Now I’m just figuring out how I can get Steam up and running to open something like Factorio…
March 6th 2023 - I’m now utilizing the included-with-Ubuntu-image L4T Megascript to see if I can get box86 and box64 preconfigured to get Steam installed and running. More info about that megascript here.
March 8th 2023 - While the script didn’t seem to help in getting Steam installed, as it seems installing it via the switchroot wiki here and then running the box86 script for installing Steam will “succeed”, it seems to also move the Steam binary.
From the look of things, though, it seems installing Veloren via their official Airshipper Flatpak seems to work fine! I’ll test other FOSS software soon. Steam is still behaving oddly, so may as well test Veloren/openRA/unvanquished etc while working on figuring that out.
March 15th 2023 - I’ve gone ahead and given Steam on Switchbuntu another try, but it seems we’re still running into that browser issue. I think I’ll pause this for a bit and see what else we can get running. Open source games like Veloren or Open Red Alert are running fine, though!
May 8th 2023 - I’ve gone ahead and installed the Minecraft Prism Launcher through the Pi-Apps GUI. I’ve also linked the webpages for both of those in that previous sentence. When playing Minecraft on the Unofficial Framework Minecraft Server as a benchmark, utilizing Prism Launcher on the Switch, I was getting around 10-15fps on a good day. I went ahead and installed the Fabulously Optimized modpack as a new Instance in the Prism Launcher, then reconnected to their server. Looks like Java Minecraft is perfectly playable at 25-30fps when docked to a 1080p display and using that modpack!
It was a bit difficult to get screenshots to go at the right time, using the built-in screenshot tool. It was a bit laggy, but at least I got some!
January 2024 - My Nintendo switch has dead memory chips now, so I won’t be able to work on this anymore.