How to Transfer Game Builds to a Steam Deck

This tutorial will teach you how you can push your game builds to your Steam Deck fast and automatically using Syncthing, a multiplatform file synchronization program. By Eric Van de Kerckhove.

Leave a rating/review
Download materials
Save for later
Share
You are currently viewing page 3 of 4 of this article. Click here to view the first page.

Auto Start Syncthing

In this optional section, I’ll explain how to make it so Syncthing automatically starts when you boot your Steam Deck, even in Gaming mode. The application hardly uses any system resources, so the impact while gaming will not be noticeable unless you’re playing an online game while syncing a huge amount of files. You can disable the auto starting or temporarily stop Syncthing via the terminal at any time.

Feel free to skip to the next section if you don’t want Syncthing to be running in the background or don’t want to bother setting that up now.

Note: The steps here will be a bit more advanced and involve manipulating files and executing terminal commands. I strongly recommend hooking up a keyboard and mouse for this part. Consider opening this tutorial in a web browser on your Steam Deck for easy copy-pasting.

To make Syncthing run after the system boots, it needs to be set up as a systemd service. Systemd is a popular Linux initialization system and service manager that provides system components for Linux operating systems like Ubuntu and SteamOS. It allows services to be set up using a systemd service file that contains information on what process to start. Systemd parses this file at startup and creates and supervises the process. In short, you need to tell systemd what to do by supplying a file with some information.

Luckily, Syncthing comes with a template systemd service file you can use. Open Dolphin and open the Syncthing folder. From there, open the etc/linux-systemd/user folder, inside of which is a single file named syncthing.service.

Syncthing service file

Double-click the file to open it in Kate (the KDE text editor) and find the ExecStart line in the [Service] section.

Exec start

This is the command that systemd will execute at startup. Right now it points to /usr/bin/syncthing, but it needs to point to the syncthing executable in the Syncthing folder you created earlier. To do that, replace this line:

ExecStart=/usr/bin/syncthing serve --no-browser --no-restart --logflags=0

With this:

ExecStart=/home/deck/Syncthing/syncthing serve --no-browser --no-restart --logflags=0

Save the file by pressing the Save button at the top or press CTRL+S and close Kate.
To make systemd use this file, you need to copy it to the systemd user folder. The easiest way of doing this is via the terminal, so switch to Dolphin and make sure you’re still in this folder: /home/deck/Syncthing/etc/linux-systemd/user/. Next, right-click on an empty space in the folder and select Open Terminal Here to open a Konsole window.

Open terminal here

To copy the syncthing.service file to its proper location, execute the following command:

cp syncthing.service ~/.config/systemd/user/syncthing.service

Verify that the file copied over successfully by running this command:

ls ~/.config/systemd/user/

The ls commands lists the contents of a folder, which should now contain syncthing.service:

Syncthing file ls

As a final step, enable the syncthing service by running this command:

systemctl --user enable syncthing.service

This in turn will return with this line:

Created symlink /home/deck/.config/systemd/user/default.target.wants/syncthing.service → /home/deck/.config/systemd/user/syncthing.service.

Congratulations, from now on Syncthing will start automatically whenever you boot your Steam Deck!
If you ever need to temporarily stop the service for some reason, you can do so with this command:

systemctl --user stop syncthing.service

If you ever want to disable the service, which prevents the automatic starting, use this command:

systemctl --user disable syncthing.service

Leave Syncthing running for now as you’ll need it further down.

PC Side Installation

Now that Syncthing is set up on your Steam Deck, switch over to your development machine. Just like on the Steam Deck, you’ll need to download the application and set it up.
Start off by opening a web browser and navigate to https://syncthing.net/downloads. Since your development machine can be running any operating system, here are my recommendations for what package to download depending on your OS:

  • Windows: Download and install SyncTrayzor, this is a wrapper for Syncthing that includes a desktop interface and a tray icon. It comes with the needed dependencies, which makes the set-up a breeze. You can find the installation instructions here.
  • macOS: Get syncthing-macos, a native macOS tray application bundle that wraps Syncthing. The instructions are detailed here.
  • Linux: For Linux distributions, I recommend following the same instructions as for the Steam Deck I laid out above.

Connecting Devices

After downloading and installing your flavor of Syncthing, start it up and navigate to the web interface on http://127.0.0.1:8384. Delete any default folders like you did on the Steam Deck. Next, you’ll need to create a connection between your device and Steam Deck. To do that, make sure the Steam Deck is powered on and connected to the internet first and then click the Add Remote Device button at the bottom right on your development device.

Add remote device

In the Add Device window, click on nearby device id, below the “You can also select one of these nearby devices” text.

Device nearby ID

If you don’t see a nearby device, make sure Syncthing is running on your Steam Deck and that’s it’s connected to the same Wi-Fi network as your development device. You can also manually input the device ID by clicking Actions ▸ Show ID on the Steam Deck and either copying it over by hand or sending it to yourself via email for example.
Once you have a Device ID filled in, click the Save button.

Save button

After doing this, an attempt to create a connection to your Steam Deck is made. Look at the Syncthing web interface on your Steam Deck, a prompt at the top of the page should ask if you want to add a new device. Click the Add Device button to confirm this.

New Device prompt

Next, you’ll be asked to rename the device. Fill in a different device name if you want and click Save.

Add device name

Your dev device and the Steam Deck are now connected to each other! In the next section, you’ll do the final part of the Syncthing setup: configuring what folders should be synced.

Folder Setup

The way Syncthing works is by reading any changed files (and folders) in a directory and sending those over the network to connected devices that have access to that folder.
Start by creating a new folder somewhere on your development device. In my case, I’ve created a new folder named Steam_Deck_Sync at the root of my U: drive.

Steam deck sync folder

Next, open the folder and copy the path to your clipboard, U:\Steam_Deck_Sync in my case. Now open the Syncthing web interface and click the Add Folder button below the Folders section on the left.

Add folder

This opens the Add Folder window. Give the folder a label in the Folder Label field and paste the path to the folder that’s in your clipboard in the Folder Path field. I chose Steam Deck Sync as the label and U:\Steam_Deck_Sync as the folder path.

Folder label and path

Now open the Sharing tab to choose what device(s) get access to this folder via syncing. Check the box before the name of your Steam Deck here and click the Save button.

Checkbox

On the Steam Deck side, you’ll get another prompt in Syncthing, this time asking if you want to add the folder you just created.

Add new folder prompt

Click the Add button to open the Add Folder window on your Steam Deck. All you need to set up here is the Folder Path, which points to a folder on your Steam Deck. You don’t have to create the folder first, as Syncthing will do this for you. I’ve changed my folder path to home/deck/Steam_Deck_Sync since I dislike spaces, especially on Linux. :] This will create a new folder named Steam_Deck_Sync in the home directory.

Folder path on steam deck

Click Save to create the folder and finish the setup. This new folder will now appear in the interface at the left, clicking it shows you more information about its status.

Steam deck folder info

Now the folder is set up on both devices, I think it’s time for a quick test run! You can drop any file in the folder on your development device and it should show up on the Steam Deck side. You can copy the two sample builds I provided in the materials zip file, any of your own builds or any random file. I put the sample build folders in there.

Sample build in windows explorer

After a few seconds, Syncthing will spring into action and start copying the files to the Steam Deck over the network. If you’re fast enough, you’ll be able to see this happening in the web interface as the folder information will change and the network rates will reflect the upload.

Syncthing during upload

After the sync is done, you can take a look at the synced folder on your Steam Deck and you’ll see the same folders and files.

Steam Deck folders

And there you have it, a two-way automatic sync between your devices that allows you to copy files with ease to your Steam Deck. By exporting builds from your favorite game engine to the synced folder, you can be testing changes in seconds as the sync will only upload changed files. All of that, without having to leave Gaming mode!

My preferred way of playtesting is adding the executable to Steam, switching to Gaming mode and test everything on the Steam Deck. If I need to push changes, I close the game on the Steam Deck, generate a new build over the previous one and start the game again. This allows for fast iteration without dropping a beat. If you’re in a team, you can even sync your new build across multiple devices at once after installing Syncthing on them. If you thought of another cool way to use Syncthing, be sure to share it in the discussion below.

If you already know your way around the Steam Deck and know how play games in Desktop mode and how to add Linux and Windows executables to Steam to play them in Gaming mode, you should be all set. To everyone else, stick around for a bit longer as I’ll show you how to test your builds.