Steam Deck Emulation

Good morning friends! Friday and throughout the weekend I attempted to mark another thing off my Steam Deck ToDo list. This morning I am going to do a half-assed job of walking you through how I got a sizeable number of emulators up and running on my device. Essentially I am leaning heavily upon something called EmuDeck, which is less an emulator and more a series of scripts that configure emulators for you, and install what you need to add all of the individual games to steam. If things go successfully you end up with something similar to the above screenshot, with beautiful images representing each game and the ability to launch them directly from steam while in game mode. I am going to attempt to walk you through the logical order of getting things set up.

Installing EmuDeck

The first thing that you need to do is download EmuDeck. This is going to work much better if you launch your web browser of choice while in Desktop Mode on your steam deck. Visit https://www.emudeck.com/ and click on the download menu option, then the download app button. This will drop an executable package in your download folder by default.

Open up the Dolphin file browser and browse to your download directory. Before you can do anything you are going to need to open up properties on the item that just downloaded and click over to the permissions tab and make sure “Is Executable” is checked. Once you have done this double-click the file and this should begin the install process for EmuDeck.

I am not going to walk you through the entire setup process for EmuDeck, there are other guides out there like the above video that do a much better job of this. Essentially there are two choices that matter, the first is if you want to do the Easy setup or the Expert setup. The Easy setup will have very minimal options and largely just configure everything for you. It will however skip a few things that might be useful, like a drive for gyro controls that you can use with the switch/wiiu emulators. The expert mode will require keyboard input however so make sure you are at minimum remoting into your deck through the steam link like that I talked about last week. The other major choice will be if you want to install it to your local storage or an SD card. I chose the latter for reasons I will get into later, there can be significant problems if you fill up your internal storage.

Enabling SFTP for File Transfer

In theory, EmuDeck just installed a slew of folders and emulators on your device, but next, you are going to have to transfer some ROM files before you can make any meaningful progress. I am not going to tell you how to acquire ROM files, other than to say that you should dump your own ROMs for legal reasons. In order to get the files over to your deck, we are going to need some reliable method of transfer. I looked into a large number of options, but given that the Steam deck is just a Linux device, the most straightforward seems to be enabling SSH and then using SFTP. If you are following along my journey you should have set a password for your device. If you have not done that yet, please refer back to my previous article. Type the following command into Konsole:

sudo systemctl enable sshd

This will prompt you to enter the password for your account, and when you do so it will enable the SSH daemon to start on boot. However, in order to get this running the first time, you will need to restart your steam deck and we have one step to check while we are in Game Mode, so don’t go right back into Desktop Mode quite yet.

You should know your password, but we need to verify while in game mode what your console hostname is set to. The default for this is “steamdeck” but in theory, while you were configuring other options you might have changed this not understanding what it is used for. To check what your hostname is go to settings > system and scroll down until you find an argument called hostname. You can see in the above screenshot that mine is still set to the default which is “steamdeck”.

Next, you are going to need an SFTP client, and this is entirely your choice. There are many options, but I just happened to have Filezilla because I have been using it for decades. Ultimately in order to connect to your Steam Deck you need the following information:

  • Host – you should have just seen that in the previous step
  • Port – you should be able to leave this blank, but if your client requires this set enter port 22.
  • User – you should enter “deck” for your username.
  • Password – the system password that you configured previously in Konsole.

If this works you should be connected to the filesystem of your steam deck remotely. By default, you will be in the /home/deck/ directory, but you should be able to change this to wherever you need to go. If you chose to install EmuDeck to your SD Card and formatted your SD Card in the steam deck… you should be able to reach those files from the following path:

/run/media/mmcblk0p1

If you chose to install EmuDeck to your local storage, then the path for you should be the following:

/home/deck/emudeck/backend

In theory, you are going to be spending all of your time in either /roms or /bios and in the ROMs directory EmuDeck will have stubbed out the correct folder structure for each system. Copy your legally obtained ROM files into these directories and we can proceed with the next steps. If you are using the internal storage of your device, please be careful not to copy too much data during this process. Keep a close eye on the storage limits for your device. If you fill the internal storage and the system does not have enough room to write temporary files, it will appear bricked and go into a bootup loop. I will talk a bit about that later, this is fixable.

Configuring your Games

Boot back into Desktop Mode, and EmuDeck should have dropped a shortcut to something called the Steam Rom Manager onto your desktop. For this step, I had to find a screenshot from the internet because running the Rom Manager will disconnect Steam LInk. You will need to complete this step on the physical hardware or through some sort of port replicator that doesn’t rely on Steam Link. Essentially you want to click the Preview tab in the sidebar, then click the Generate App List button that appears at the bottom of the screen. At the top of the screen, there will be a countdown of sorts for “Remaining Providers” once this reaches zero you can click the “Save App List” button at the bottom and every game that the Rom Manager has found will be registered with Steam as a new game.

At this point, I suggest you close the Rom Manager and open Steam while in desktop mode on your device. This will re-enable Steam Link and allow you to connect back in remotely again, which is highly suggested for this next step. We are going to return to our old friend Boilr, that I talked about in the previous article. It is my experience that the results of what Steam Rom Manager files for images, is going to be very hit and miss. As a result, I used Boilr to plug any gaps that the Manager failed to find images for. This is going to be very time-consuming because each time you set an image and go back to the listing of games… it will reset your position back to the top of the list causing you to endlessly scroll to find where you left off. However, the end result was very “worth it” for me because it gives me pretty images for each game on my list.

Once you have finished setting all of the game images, click the button at the bottom of the screen with the Controller and Steam icon. This will export all of your game data to Steam so that it shows up correctly when you are in game mode. If you boot back into Game Mode, you will in theory see a bunch of grid images in place of the ugly grey rectangles and get an interface that looks something like the image at the beginning of this post. Now you should be able to sit back and enjoy the fruits of your effort.

Troubleshooting Issues

Ultimately you are going to get some games and more specifically platforms… to work without any issues. Others are going to require a lot of troubleshooting to get working correctly. Currently, I have the following platforms working under the combination of emulators that this process installs.

  • Dreamcast
  • Gameboy Advance
  • Genesis
  • Nintendo
  • Nintendo 64
  • PlayStation
  • PSP
  • Super Nintendo
  • Turbografx 16

Of the emulators that I have moved data over to the SD Card for, I cannot seem to get 32X and Sega CD working, but have also not spent a ton of time troubleshooting those. Thankfully on the EmuDeck GitHub page, there is a cheat sheet of sorts that lists what types of ROMs and Archives each emulator will support. This is not 100% correct at all times, however, because for Dreamcast it clearly states that it will support 7zip archives, and the Rom Manager identified those games… but I could not get ANY of the Dreamcast games to load until I extracted them to individual directories.

The biggest thing that you will run into with any of the semi-modern consoles is that they require a BIOS image in order to work. This is essentially how emulator developers get around the copyrighted portions of code, but rely on you to acquire a legally dumped boot image. You will have to research what is needed for each system, but once I supplied the correct BIOS for Dreamcast and Playstation those games started working beautifully. I need to put in some research into how DuckStation handles multidisk games, because right now the only PS1 game that I have copied over that is working, is Castlevania Symphony of the Night.

So You Bricked Your Steam Deck

This is not my image, but I absolutely went through this when I copied files to the wrong location. Essentially it is possible to get into a boot loop where you just see a cursor… before rebooting again and it goes on forever. Essentially in my case, this was caused by getting confused and accidentally flooding my internal storage with ROMs… eating up all of the remaining space. As I said earlier if you fill your internal storage too full and the system cannot create certain temporary files on boot… it will get stuck in this loop.

Thankfully Valve foresaw this happening and has provided bootable media that can fix it. The Steam Recovery disk is in theory designed to allow you to reinstall the operating system or nuke your home directory, but it is so much more valuable than that. It is essentially a “live” version of SteamOS that boots from removable storage. Thankfully I had spare SD Cards laying around, and in order to use that method, it requires at least 8GB of storage. You can in theory also do this off a bootable thumb drive connected to the USB C port via an A to C adapter of some sort.

How I got around NOT deleting all of my progress, was that while in the Live OS I just opened up Dolphin and browsed to the directory where I had copied the ROMs… then deleted them. After doing this make sure you also remove them from the Trash as they will still be taking up disk space until you have done this step. In theory, you should be able to reboot and your pricey toy comes back to life. If you did something more severe to bung up your system, you can use the disk to reinstall the base operating system from scratch. As I said I did not want to take this step if I could help it, because it would have undone all of the work I had already finished on getting things running on my device.

What’s Next?

I think the next big thing that is on my radar is getting both PlayStation remote play and Xbox remote play working. Other than that, however, I think my Deck is in a pretty good state. I want to fiddle around a bit more with the emulators that I technically have installed but are not working for whatever reason. The big one for me would be able to get Breath of the Wild working with durability cheats, and maybe work a bit on getting some 3DS games loading successfully.

I think everything else is probably going to wait until I get my 1TB m.2 drive from eBay. I picked up an M.2 to USB adapter and I have high hopes of using it and Clonezilla to effectively clone all of my progress from my 64GB internal drive to the new 1TB internal. I mostly don’t want to do too much effort if I know I might possibly have to start over from scratch again with a fresh operating system install. Thankfully however I already have the recovery disk primed to install the operating system fresh on the new drive if it comes to that.