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,

Askmin

Member
Newcomer
Joined
Apr 28, 2020
Messages
6
Trophies
0
Age
28
XP
41
Country
United Kingdom
I've had that problem in a couple of games. Compatibility is kind of hit-or-miss at this point, but there are some possible workarounds. If you right click on the game, and properties, you'll see the general tab. In the original post, there's a section that talks about "launch options". You can try using the "PROTON_USE_WINED3D=1 %command%" launch option (no quotes), and see if that works (or fool around with other launch options found in one of the links provided). There's also a compatibility tab, where you can try making that specific game run in another version of Proton. On that note you can also look into ProtonGE, which has other Proton versions that might work, though I'd recommend forcing compatibility rather than changing Proton's all-over version (just in case things don't work out). In all cases, your mileage will vary (in all honesty, some games will just not work, or be stuck in a "launching" loop). I think further down the road, the Switchroot group may find some more managable way(s), but until then, that's all I could find.
Okay, thank you very much for helping me!
I'll try some configs to see if I can get it to run.


Can you show me the logs?
Sure, but I don't know what logs you're talking about.
 

hippy dave

BBMB
Member
Joined
Apr 30, 2012
Messages
9,879
Trophies
2
XP
29,195
Country
United Kingdom
Thanks for this, I always thought running PC games through CPU emulation would be too slow to bother with, but having seen people have mild success with AAA 3D games, I decided it might be worth a go for the low-spec indie puzzle games I like to play.

I definitely didn't make my linux partition big enough :tpi: so I might have to redo it, but of the first few games I tried, some didn't start but the couple that did run really well, Stephen's Sausage Roll and Hue. I'm having a control issue with Hue, even once I've disabled the overlay thing by pressing the screenshot button (re: joycon section of this page), the right joystick only registers in up & down directions, not all around, which is needed for the game's colour wheel. Can be worked around by using the touchscreen as a mouse pointer, but hopefully I can find a fix.

The ones that didn't start were Recursed and Snakebird Primer, both 2D games but so is Hue. LMK if anyone has any ideas.

Oh yeah other little issue I noticed, at some point while running the nvidia update steps from the guide, the joycons icon in the menu bar at the top of the screen was replaced with an nvidia icon, and now its menu doesn't have the reboot to payload option. Any easy way to get that back? TY.
 

Randomguylol

Active Member
Newcomer
Joined
Aug 10, 2023
Messages
25
Trophies
0
Age
25
XP
103
Country
United States
Any interesting game that runs well?
Ultrakill?
Post automatically merged:

Thanks for this, I always thought running PC games through CPU emulation would be too slow to bother with, but having seen people have mild success with AAA 3D games, I decided it might be worth a go for the low-spec indie puzzle games I like to play.

I definitely didn't make my linux partition big enough :tpi: so I might have to redo it, but of the first few games I tried, some didn't start but the couple that did run really well, Stephen's Sausage Roll and Hue. I'm having a control issue with Hue, even once I've disabled the overlay thing by pressing the screenshot button (re: joycon section of this page), the right joystick only registers in up & down directions, not all around, which is needed for the game's colour wheel. Can be worked around by using the touchscreen as a mouse pointer, but hopefully I can find a fix.

The ones that didn't start were Recursed and Snakebird Primer, both 2D games but so is Hue. LMK if anyone has any ideas.

Oh yeah other little issue I noticed, at some point while running the nvidia update steps from the guide, the joycons icon in the menu bar at the top of the screen was replaced with an nvidia icon, and now its menu doesn't have the reboot to payload option. Any easy way to get that back? TY.
Restart your switch maybe 🤔
 
  • Like
Reactions: hippy dave

hippy dave

BBMB
Member
Joined
Apr 30, 2012
Messages
9,879
Trophies
2
XP
29,195
Country
United Kingdom
So I redid this with a bigger partition. I still lost the joycons icon with the reboot to payload menu option, but that's ok because now I used this which does the same thing, and locked its icon to the launcher on the left for easy access.

I'm having mixed success with which Steam games start or not, but the ones that do start have been running brilliantly, as mentioned they're indie puzzle games that aren't demanding on the CPU at all, so they might take a while to load but then happily run full speed. Stuff like Snakebird, Hexcells Infinite etc.

One game I tried that was technically a Steam game but I have a cracked Windows copy with supplied Steam emulator dll files, is Void Stranger. I tried adding it as an external game to Steam and running it that way, but it didn't start, however running it via wine from the command line (or script) works perfectly. I'm gonna try doing that or reading the links in OP for ideas about how to get other stuff running, but even if some stuff won't work, this has already proved worth doing for the stuff that does.
 

Alex_p

Member
Newcomer
Joined
Feb 16, 2020
Messages
10
Trophies
0
Age
29
XP
74
Country
Finland
thank you for the tutorial, it was fun. got to try out some Half Life 2 at least, even if doesn't run too well it was still interesting to see. hope we will get official ports of it soon
 

Gheovgos

Member
Newcomer
Joined
Sep 8, 2023
Messages
5
Trophies
0
Age
22
XP
32
Country
Italy
anyone had black screen issue? I tried to boot Oblivion, it runs but I see a black screen, how to fix that?

EDIT: fixed updating everything
 
Last edited by Gheovgos,

twisty24

New Member
Newbie
Joined
Dec 24, 2023
Messages
1
Trophies
0
Age
21
XP
3
Country
United States
Do you know if you can still retain the Nintendo switch software and do a dual boot, or is it just the Linux kernal?
 

TiredNModding7

Member
OP
Newcomer
Joined
Sep 3, 2023
Messages
19
Trophies
0
XP
65
Country
United States
Do you know if you can still retain the Nintendo switch software and do a dual boot, or is it just the Linux kernal?
If you're talking about the stock Switch firmware, custom firmware, or even Android, then the answer is yes. Linux (and the other custom images) can only work by launching via Hekate. In Hekate, if you go to the tools section, you will see a button that says "partition SD card". From there, you can choose to partition the SD card to include partitions for Android, Linux, etc. See the switchroot wiki for more info on partitioning and setting up various images:

https://wiki.switchroot.org/wiki/

After you partition the SD card and flash whatever you wanted on there, go back to the main Hekate screen. From there, select "more configs", and the other images you set up on other partitions should be there; all you have to do is tap on the one you want. If you want to go back to stock, go back into Hekate and tap "reboot"; there should be an option to reboot to stock. Also, rebooting from whatever OS/Partition you are in should work (and if not, holding the power button down for 12-13 seconds for a hard power-off and turning on again will do as a last-resort option). From my understanding, all of this takes place from the SD card; none of the stock firmware is overwritten (at least as as far as I know or have seen/experienced).
 

beanz00_

Member
Newcomer
Joined
Jan 9, 2024
Messages
6
Trophies
0
XP
14
Country
New Zealand
I followed everything here, and when i open steam it says "Verifying installation" and then closes and does not do anything. I waited like half an hour and nothing happened. Did i do something wrong?

Edit: I used a fresh install of ubuntu on my switch for this, there shouldn't be any other program that is messing something up.
 

Randomguylol

Active Member
Newcomer
Joined
Aug 10, 2023
Messages
25
Trophies
0
Age
25
XP
103
Country
United States
I followed everything here, and when i open steam it says "Verifying installation" and then closes and does not do anything. I waited like half an hour and nothing happened. Did i do something wrong?

Edit: I used a fresh install of ubuntu on my switch for this, there shouldn't be any other program that is messing something up.
Can you send me your terminal logs?
 

TiredNModding7

Member
OP
Newcomer
Joined
Sep 3, 2023
Messages
19
Trophies
0
XP
65
Country
United States
I followed everything here, and when i open steam it says "Verifying installation" and then closes and does not do anything. I waited like half an hour and nothing happened. Did i do something wrong?

Edit: I used a fresh install of ubuntu on my switch for this, there shouldn't be any other program that is messing something up.

Can you send me your terminal logs?

Actually, I was messing around with Jammy for a bit and decided to try my hand on Bionic again recently (I was going to try a specific work-around to get a certain game to work). Unfortunately, it seems that not only has support for Bionic ended for Pi-Apps, but the current version of the Steam installer on the L4T Megascript seems to hate Bionic. From my troubleshooting, it seems to specifically be the Steam installer. Your best bet at this point would be switching (no pun intended) to the new Jammy distro (unless someone can get the steam .deb/apt-get to work).
 

tsuneki0137

New Member
Newbie
Joined
Jan 14, 2024
Messages
3
Trophies
0
Age
21
XP
16
Country
Italy
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?
 

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