Tutorial  Updated

An Extremely Noob-Friendly Guide to Playing Steam Games On Switch (Please Read The Forward)

Foreword:
Okay so I know there's already a guide posted for this by Randomguylol, but I noticed several things missing, and there was confusion on the part of the people attempting to do this. Since I had already done this myself, and had experience with the confusion moving from mainly using Windows to using an aarch64/arm64 build of Linux, I though I may be able to create a more noob-friendly guide based on what I already had done with my Switch. Mind you, by noob-friendly I mean I get as specific as I can so there's no confusion as to what needs to be done, so this is going to be really long. That being said, this will be an easy-as-possible-to-follow guide on how to install and play Steam games on Switch. Credit to Randomguylol for the upgrade fix found in their version of the guide, and Geekerwan for some extra stuff I didn't know about upgrading on Switch.

If you want to look at Randomguy's version (it's a lot shorter), here's the link:
https://gbatemp.net/threads/how-to-run-steam-on-the-nintendo-switch.638062/

Addendum - (1/16/2024): It looks like it is not so much that support has ended for Bionic, but that there is a bug that is causing a problem with Steam on both L4T Bionic and Jammy. Someone had opened an issue report 4 days ago on github for box86; it seems to be almost (if not exactly) the same issue that many are running into. For the time being, though, it looks like we're stuck for now (or at least until the dev finds a fix or work-around).

EDIT/UPDATE (1/12/2024): It seems that (at least from what I've seen from my own attempts and at least one other person's account) the L4T installer for Steam is no longer compatible with Ubuntu 18.04 Bionic. It is very likely that you will need to switch to the new Jammy distro the switchroot group has created. If anyone has an idea on how to circumvent this issue, please feel free to share. Unfortunately, upgrading to 32.4-32.7 seems to be at the least extremely troublesome and at the worst borderline impossible on Jammy (at least with my limited skillset). From my own observations, while Vulkan 1.3 is installed on Jammy, the driver for the Tegra X1 is still at 32.3.1, which only supports 1.1. This will make it that, unfortunately (and again, from personal experience), some games will not recognize the installed version of Vulkan (you may get a warning in proton logs about "skipping adapter Vulkan 1.1", or "no available plugins" or something similar).


EDIT/UPDATE (12/24/2023): The Jammy version of Linux appears to be more stable than it once was, and the "beta" label has been removed from the wiki page. While you may find a few issues here and there, my experience with it so far has been pretty good. My opinion of it so far is that it is more efficient than the old 18.04 Bionic Beaver version, since it is already packaged with an updated version of Vulkan (1.3.204 according to what I got from running vulkaninfo) and requires less setup. Basically, all you have to do is the following:
  • install Jammy as per the switchroot wiki's guide and boot to Jammy (you may get a couple of error messages once you're in, but you can either ignore them or ask to send info)
  • connect to your internet/wifi connection (click on the bar in the top-right in Linux, there should be a network section to click on)
  • do sudo apt update and sudo apt upgrade from terminal
  • run the L4T Megascript, install pi-apps, run pi-apps, and install Wine64 (the version of Box64 it comes with has worked better for me)
  • run the Megascript again and install Steam
  • restart Linux, and start Steam.
  • See the guide below on minimizing steam resource use and other requirements such as Proton and ProtonGE
As I said, there seems to be less hoops to jump through with this, and it seems stable enough, so it wouldn't hurt to try if you haven't already done 18.04 (or if you're curious). There are still a good amount of compatibility issues, though. Anyway, if you want to still try 18.04 (or need something from the guide), feel free to continue reading:

Other sources of help were:
  • Nvidia for keeping pretty good records of different issues and tickets that were sent concerning problems with L4T, and how to upgrade/fix it.
  • GBATemp for some other pieces of info that helped move this along; thanks everyone!
There are a few prerequisites that you'll need, and a few things to go over:
Warning: This is going to be a looong one.
This guide was created by me messing with my 2017 launch version of the Nintendo Switch, and may not work for the OLED model.

Common terms to know:
1. Terminal: a command line for Linux, somewhat like Powershell is for Windows
2. nano: a text editor
3. sudo: the administrator privileges command, allows running commands as "admin" (or rather, the Linux equivalent)
4. apt, apt-get: allows using commands related to sources (where you get drivers/software from), with varying degrees of utility (we'll be using apt for the most part here)
5. swapfile: a file used to supplement ram/memory, albeit much slower than ram. Similar in function to (if not outright the same as) the pagefile in Windows


Early Note: You will be using Steam Proton which to my understanding, already has DXVK, so you may not need to install it (I didn't, at least)

Final thoughts before moving on: If anyone has fixes, or anything to add that will help in making Steam games work on Switch, feel free to mention them! Every bit helps. Although a long-shot, if enough work is put in, I can see the switch becoming a budget alternative to the other more capable (and expensive) steam deck competitors. Again, it would take a lot of work, and it would be a longshot, but it would be nice.

What you'll need:

Hekate bootloader for switch (latest version preferred)
Git Page: https://github.com/CTCaer/hekate

Switchroot Linux 18.04 Bionic
Install directions: https://wiki.switchroot.org/Linux/Ubuntu-Install-Guide
Linux Distros: https://wiki.switchroot.org/en/Linux/Distributions

Note: The reason I'm not suggesting Jammy is due to it being in beta. Focal is also unsupported/discontinued. You can try Focal, but Bionic is the most stable supported distro.
An SD card to run all of this stuff (16GB is said to be the minimum for Linux; I'd recommend 128GB if you're going to experiment with games)
Patience; sometimes Linux on aarch64/arm64 can be frustrating; especially for those new to Linux.


Directions (Initial Setup):

1. Set up Hekate as per the guide on the git page
2. Set up Switchroot Linux as per the Switchroot Wiki's install directions
Optional, Recommended: Dock your switch once Hekate and Switchroot initial setup is done, and once you attempt to boot into Linux (Select the "more configs" option in Hekate).
Plug in a usb hub with mouse and keyboard connected; it makes it easier to work with.

3. Once set up, boot into Linux and set up your user account
4. Once finished, go through the "Welcome" popup (I recommend not sending anything to Canonical).
5. Look on the left side. There should be an icon called "Terminal" (hover over for names, for non-linux users, it's sort of like powershell). Click it.
6. Type in the following "sudo apt update && sudo apt upgrade"; this will update and upgrade the system to the latest it can be at present. Just type y and press enter for any choices. Go to the top right and restart the system (power icon).
7. On the top left, there is an icon that allows for searching apps. Search for L4T. The L4T Megascript should be present. Click it. This will have a lot of what we will need.
8. Allow it to go through it's usual stuff, answer prompts when asked. Go to the selection, and choose Pi-Apps and the auto-updater if they aren't already selected. Install them. You will also get 2 prompts when attempting this; remove unused apps and remove canonical's proprietary store. These are up to you, but I usually say yes to both.
9. Look for Pi-Apps (either on the desktop or the top left search icon) and open it. It will likely ask for your password for security reasons. There should be a search icon on the interface. Use it, and search for wine. Install wine64 when you get the chance. This will install a version of Wine64 for tegraX1, along with box64.
Note: From my understanding, you can also just install steam from the L4T Megascript first, but I've had compatibility issues when doing that.
10. Once finished, go back to the L4T Megascript. Deselect Pi-Apps, and search and select Steam. Install it as you did the other L4T Apps. DO NOT RUN STEAM WHEN IT IS DONE! RESTART YOUR SYSTEM FIRST!


Directions (Steam)

Technically at this point you can run Steam and have it play some games, but you will be doing so with an old Nvidia driver and version of Vulkan. There is a way to update these, but there are some stability issues that may pop up. For those who want to try, and this is their first attempt, please use version 32.4 when going through the guide (you'll see what I mean). Every time I tried 32.7 (including Randomguylol's directions), it caused my screen to freeze on reboot, so keep that in mind if you attempt to use 32.7.


Initial Steam Setup: Upgrade Drivers and Vulkan (optional, highly recommended):

1. Go to terminal again. Type in the following: sudo apt install nano (if your updates and previous installs didn't add it, this will)
Q: What is nano?
A: Nano is a text editor that is a bit easier to use than others on Linux. You'll need it to alter specific files for the upgrade.

2. When finished, type in the following: "sudo nano /etc/apt/preferences.d/00-switch-bsp-restrictions". Entering this will allow you to edit the "00-switch-bsp-restrictions" file placed by the Switchroot group. This file disallows upgrading since it has a negative effect on stability, depending on which one you do. Erase the lines pertaining to 32.4 (Note: starting at 32.5, there is a file that may be needed, but not present on the system. You will need to add this file if you are upgrading past 32.4, or your system will break). Hold control and s. Then control and x. This will save the file, and then exit.

3. Next, type in "sudo nano /etc/apt/sources.list.d/nvidia-l4t-apt-source.list". This details the version that's used for the upgrade. Add ".4" to the end of 32 in both lines. ex: 32--->32.4, easy enough. Save and exit.
4. This next part is owed in thanks to "Randomguylol" on these boards; not sure, but I think they found a fix to a persistent problem I had that I was only partially able to fix at the time:

Now we need to make so files so WE DON'T break the system :D
(Tbh idk what it does)
# create a few files to skip some stuff
sudo touch /etc/nv_boot_control.conf
sudo mkdir /opt/nvidia/l4t-packages
sudo touch /opt/nvidia/l4t-packages/.nv-l4t-disable-boot-fw-update-in-preinstall

5. Update using sudo apt update. There shouldn't be any prompts, but say no to any that may show up.
WARNING: The following is one of the missing pieces I mentioned earlier, and is essential to the upgrade:

6. In order for the upgrade to properly take place, you need to use this command: "sudo apt dist-upgrade". I believe this step was accidentally skipped over in the other guide by Randomguylol. Answer "n" to all prompts (I say this in case the system tries to replace something, and that causes an issue. I didn't notice anything when i answered y, but it's best to be safe. )

7. IMPORTANT: If afterward, even after you apply Randomguylol's fix you get many errors, apply the following commands:

1. sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/backup/
2. sudo mkdir /var/lib/dpkg/info/
3. sudo apt-get update
4. sudo apt-get -f install
5. sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/backup/
6. sudo rm -rf /var/lib/dpkg/info
7. sudo mv /var/lib/dpkg/backup/ /var/lib/dpkg/info/

Restart the system; it should be mostly fixed now, with at least far fewer error messages.
Next, we need to add tegra stats. This will allow you to check the version of Vulkan, as well as see some other statistics (this can be installed at any time, really):

1. sudo apt install python3-pip (note: if you've followed the guide until now, python3-pip may already be installed)
2. sudo pip3 install jetson-stats

To check if it's installed properly, enter the following command: sudo jtop. A gui should appear. To check the Vulkan version, go to the Info tab (number 7). The initial version is 1.1.7x, so you should now have a later version (1.2.7x, or something similar).

When you want to max out the fans and cpu cores, and you have not upgraded, use this command: sudo jetson_clocks
Otherwise, use the same command for cpu cores, and this command to max out the fans: sudo jetson_clocks --fan

jetson-stats (jtop) will keep track if it has been activated or not.

Finally, so that Steam and the games do not eat into the Switch's resources too much, you need to create a swapfile. Enter the following commands:
(note, the letter is a lowercase -L, not uppercase -i, and the letter x is the size you want the swapfile to add to the default. I recommend a value of 7)
1. sudo fallocate -l xG /swapfile
2. sudo chmod 600 /swapfile
3. sudo mkswap /swapfile
4. sudop swapon /swapfile

This will make and activate the swapfile, but it will not be permanent/retained after restart. To make it permanent, type this command:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Restart one last time to ensure it changed. Go to system monitor (search in upper left), and go to resources. The swapfile should be marked by a green square on the left. Now, you can get to setting up Steam.

Setting Up Steam (Proper):


Wine will have already installed box64, and the L4T installer for Steam will have already installed box86 at this point, so no need to worry about those. On first startup, it will likely try and install some stuff that is only available to x86 systems. If it does, let it attempt to and fail (this may happen on more than one startup, if not, lucky you!). Then, using the top left icon, look for system monitor and open it and go to resources. If the memory in use starts climbing, that means steam is starting up in the background; just wait for it.

On the first startup, Steam will attempt to open in the store, and with all of its notifications and stuff. This is pretty bad, since the switch has only 4GB of memory and Steam is a ram hog when it's run through an emulation/compatability layer like box86/64/wine64. Close out the notifications. Steam is going to be a bit laggy, so you're going to need some patience for the next part.


1. Go to view, and click small mode. Wait for small mode to pop up; it may take a while.
2. Go to steam, and then settings.
3. On the interface tab, change startup location to library (this will help keep Steam in small mode). Deselect/disable the following, but do not restart yet if it asks:
  • Enable smooth scrolling in web views
  • Enable gpu accelerated rendering in web views
  • Enable hardware video encoding, if supported
  • Notify me about additions or changes to my games, new releases, and upcoming releases
  • Ready to play should include streamable games (only de-activate if you want to test local-only gameplay so that your pc won't interfere if you have one)

4. In the library tab, select small as the library size, and enable low performance mode
5. In the compatibility tab, activate "enable steam play for supported titles" if it is present, as well as "enable steam play for all other titles". Steam will ask to restart. You can allow it to now.
6. Unfortunately, it will actually shut down completely. Open steam up, ignore warnings, etc.
7. At this point, you should be able to play pc games on Switch. Steam Play uses Steam Proton, so you shouldn't need to install DXVK for games to work. Unfortunately, it has been brought to my attention that x86 (32 bit) games don't work for the most part, but might be coaxed to by using Steam launch commands. I'll leave a site with the commands here:

https://simpler-website.pages.dev/html/2020/12/proton-troubleshooting/

(search for launch options on the page)

Another good tool would be ProtonGE, but your mileage may vary:

https://github.com/GloriousEggroll/proton-ge-custom

There are also some compatibility issues with other x64 games that I couldn't resolve. I'll attach a list of games I've had the time to test, along with launch options and other fixes that may make them work. Many have issues, but the games that work best so far are (in no particular order):


1. Hollow Knight (works off bat althogh controller support is iffy)
2. Cuphead (works with WINED3D launch option)
3. The Talos Principle (Works pretty damn good with keyboard and mouse, and okay with joycons. You need to modify mouse speed and graphics options though, or else the visuals might make you sick)

I'm going to attach the early version of this guide that I made a while back, along with the compatibility list.

ETA: If you're looking for your games in the file explorer, they're in a hidden file. Pressing control-h is the simplest way to view hidden files. The full directory for your games will be (from your home folder) "/.steam/steam/steamapps/common". Also, "flags" can just be added to the launch options section by right-clicking the game you want to add a flag to, and selecting properties. Launch options will be at the bottom of the "general" tab.

Anyway, that's it! For the time being, this seems more a hobbyist sort of thing, but it's still pretty cool to me. Too bad Valve never made a version of Steam/Proton aimed at aarch64/arm64 systems. If they did, we could just use our phones instead.
 

Attachments

  • Compatibility List.txt
    3 KB · Views: 21
  • tegra and steam guide.txt
    10 KB · Views: 50
Last edited by TiredNModding7,

Randomguylol

Active Member
Newcomer
Joined
Aug 10, 2023
Messages
25
Trophies
0
Age
25
XP
103
Country
United States
i followed the steps for the jimmy version (22.04) but when i run steam, it will close and give this error:

"X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 150 (GLX)
Minor opcode of failed request: 26 (X_GLXMakeContextCurrent)
Serial number of failed request: 69
Current serial number in output stream: 69"

there's a way to fix this?
Not sure i don't use version 22.04
Post automatically merged:

How do i read the terminal logs? I am kinda new to this stuff.
try typing steam in the terminal
Post automatically merged:

r Steam is no longer compatible with Ubuntu 18.04 Bionic. It is very likely that you will need to switch to the new Jammy distro the switchroot group has created. If anyone has an idea on how to circumvent this issue, please feel free to share. Unfortunately, upgrading to 32.4-32.7 seems to be at the least extr
ahhhh shit
 

tudorcraft

New Member
Newbie
Joined
Jan 15, 2024
Messages
3
Trophies
0
Age
20
XP
18
Country
Romania
are you using the 18.04? one friend of mine tries to install steam on that version but he has problems while try to upgrade nvidia drivers
I'm having the same problem as the other guy, exact same error message, with the "X Error of failed request...", but I'm on a fresh install of 22.04
I'm not a noob with linux, but I still couldn't figure out what was going wrong because I am a noob with arm linux, and especially debian-like stuff
(It's a lot more different than I expected from what I normally use)

If it's important, I have a Mariko Switch V2, with a picofly modchip, maybe it could be causing compatibility problems, compared to doing this on an Erista.
 
  • Like
Reactions: TiredNModding7

TiredNModding7

Member
OP
Newcomer
Joined
Sep 3, 2023
Messages
19
Trophies
0
XP
65
Country
United States
Well, just got done trying to see if I can get Bionic's version of Steam up and running; no dice. Unfortunately, now I'm running into issues with Jammy too. It's freakin' weird; both of these were working perfectly fine beforehand on previous flashes. As for right now, I've gone through every fix I can think of and searched for, and I'm stumped. I'm gonna try a couple of other things, and if they don't work, I think I'm gonna bring the issue to the L4T Megascript github page. Maybe the devs can point out what got messed up. I'm gonna give it one more go from a clean install on both before I do, though. Looks like it's not just a compatibility issue with Bionic; this might be a just be an issue in general.
 

tudorcraft

New Member
Newbie
Joined
Jan 15, 2024
Messages
3
Trophies
0
Age
20
XP
18
Country
Romania
Well, just got done trying to see if I can get Bionic's version of Steam up and running; no dice. Unfortunately, now I'm running into issues with Jammy too. It's freakin' weird; both of these were working perfectly fine beforehand on previous flashes. As for right now, I've gone through every fix I can think of and searched for, and I'm stumped. I'm gonna try a couple of other things, and if they don't work, I think I'm gonna bring the issue to the L4T Megascript github page. Maybe the devs can point out what got messed up. I'm gonna give it one more go from a clean install on both before I do, though. Looks like it's not just a compatibility issue with Bionic; this might be a just be an issue in general.
I'm guessing you also tried it on fresh installs?
Did you try downgrading some packages? You said it worked fine before, on Jammy, maybe some update broke something.
I'm going to try downgrading a couple things that I see had updates relatively recently. When's the last time it worked for you?
 

TiredNModding7

Member
OP
Newcomer
Joined
Sep 3, 2023
Messages
19
Trophies
0
XP
65
Country
United States
I'm guessing you also tried it on fresh installs?
Did you try downgrading some packages? You said it worked fine before, on Jammy, maybe some update broke something.
I'm going to try downgrading a couple things that I see had updates relatively recently. When's the last time it worked for you?
I took a hiatus in screwing with this, so I'd say roughly two to three months. Something may have changed in that time. Anyway, I just posted an issue report to the L4T Megascript github page, and they said it might be something to do with box86. I'm going to post on that github page and see if I can get some guidance, because I'm fresh out of ideas. I've flashed/installed, re-flashed/installed, installed everything (box64, box86, Steam) from the L4T installer only, installed box64 from Pi-Apps and the Megascript on separate re-flash/installs, scoured google for anything having to do with the errors and tried what I could find, did all of these with both distros, and even tried installing Steam from the deb package after installing box64/86. Nothing I've done on my end has worked so far. At this point, having the dev respond is likely the best shot I've come up with on how to solve this.

Edit: I'm a moron. I just realized that the dev's "highlighted" suggestion of it being Box86 was also a link to the git page (how long have I been on the 'net again lol?). Four days ago, someone posted a near-identical issue report to the box86 page (no idea why it didn't pop up in my google hunt). I'll keep an eye on it, unless that was someone here who posted it. If anyone else wants a peek (not much there right now, honestly) here's the link:

https://github.com/ptitSeb/box86/issues/920
 
Last edited by TiredNModding7,

tsuneki0137

New Member
Newbie
Joined
Jan 14, 2024
Messages
3
Trophies
0
Age
21
XP
16
Country
Italy
I took a hiatus in screwing with this, so I'd say roughly two to three months. Something may have changed in that time. Anyway, I just posted an issue report to the L4T Megascript github page, and they said it might be something to do with box86. I'm going to post on that github page and see if I can get some guidance, because I'm fresh out of ideas. I've flashed/installed, re-flashed/installed, installed everything (box64, box86, Steam) from the L4T installer only, installed box64 from Pi-Apps and the Megascript on separate re-flash/installs, scoured google for anything having to do with the errors and tried what I could find, did all of these with both distros, and even tried installing Steam from the deb package after installing box64/86. Nothing I've done on my end has worked so far. At this point, having the dev respond is likely the best shot I've come up with on how to solve this.

Edit: I'm a moron. I just realized that the dev's "highlighted" suggestion of it being Box86 was also a link to the git page (how long have I been on the 'net again lol?). Four days ago, someone posted a near-identical issue report to the box86 page (no idea why it didn't pop up in my google hunt). I'll keep an eye on it, unless that was someone here who posted it. If anyone else wants a peek (not much there right now, honestly) here's the link:
from ptitSeb:

Can you create if needed ~/.box86rc and put inside this:

[steam]
BOX86_EMULATED_LIBS=libudev.so.0:libSDL2-2.0.so.0
BOX86_NOGTK=1
BOX86_DYNAREC_STRONGMEM=1
BOX86_X11COLOR16=1
BOX86_DYNAREC_CALLRET=0

it takes a bit to starts up
 

TiredNModding7

Member
OP
Newcomer
Joined
Sep 3, 2023
Messages
19
Trophies
0
XP
65
Country
United States
from ptitSeb:

Can you create if needed ~/.box86rc and put inside this:

[steam]
BOX86_EMULATED_LIBS=libudev.so.0:libSDL2-2.0.so.0
BOX86_NOGTK=1
BOX86_DYNAREC_STRONGMEM=1
BOX86_X11COLOR16=1
BOX86_DYNAREC_CALLRET=0

it takes a bit to starts up
He's pushed the change! I just started a fresh install of Steam using only the Megascript and the versions of Box64 and 86 that install with it, and it started up! Looks like we're back in business! Thanks for providing the debug feedback, tsuneki0137! I'm still learning when it comes to Linux, so I wasn't 100% on how to use those options (I thought you'd have to use them as options after typing in Steam). Either way, it's running again on Jammy. I'll see if I can confirm on Bionic when I get the chance, unless someone else wants to. It should though; I can't think of a reason off the top of my head that it wouldn't.
 
  • Like
Reactions: tsuneki0137

The Official GMan

Well-Known Member
Newcomer
Joined
Jan 16, 2016
Messages
48
Trophies
0
XP
339
Country
United States
This is a request from the Switchroot Ubuntu Jammy maintainer to remove this guide. It causes great confusion from users and includes dangerous commands.

The only guide necessary is
1. Install Switchroot Ubuntu Jammy
2. Open the L4T-Megascript and install Steam
3. Reboot and then start Steam from the applications list.

Nothing else is needed.

If you want to upgrade the BSP, follow the pinned messages in the official Linux 4 Switch discord for doing so as it differs depending on the distro and the commands here are WRONG for Switchroot Ubuntu Jammy.
 
  • Like
Reactions: hippy dave

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: Lol rappers still promoting crypto