Steam Deck

Sync RetroArch saves on Steam Deck.

Play on your Steam Deck, pick up on your Android handheld or PC. RetroArch's Cloud Sync and SaveSync keep your saves and states the same on all of them.

Which RetroArch you have

There are three common ways to run RetroArch on a Steam Deck, and Cloud Sync works in each:

  • RetroArch from Steam. Turn off Steam Cloud for it (RetroArch in your library, the cog, Properties, General, untick Keep game saves in the Steam Cloud), or Steam Cloud and Cloud Sync will fight over the same files.
  • The Flatpak from Discover (desktop mode). Its config is in ~/.var/app/org.libretro.RetroArch/config/retroarch/.
  • EmuDeck, which installs the Flatpak. Its saves are in ~/Emulation/saves/retroarch/. Leave EmuDeck's own cloud sync off for RetroArch if you use SaveSync.

EmuDeck turns off RetroArch's Sort Saves into Folders by Core Name, and RetroDECK sorts by the ROM's folder instead. Whichever you use, set the same sorting on your other devices (see below), or they won't find each other's saves.

Make a SaveSync key

  1. 1Create a SaveSync account, or log in with your Fastwater account.
  2. 2Open Set up a device, give the device a name (such as "Steam Deck"), and press Make a key.
  3. 3Keep the page open: you'll copy the URL, username, and password into RetroArch. SaveSync shows the password once. Each device gets its own key, so you can turn one off without touching the others.

Turn on Cloud Sync

  1. 1In RetroArch, open Settings, then Saving, then Cloud Sync.
  2. 2Turn on Enable Cloud Sync.
  3. 3Set Cloud Sync Backend to WebDAV.
  4. 4Set Cloud Storage URL to https://savesync.fastwater.app/saves/, with the slash at the end, then enter the Username and Password from SaveSync.
  5. 5Leave Sync: Saves/States on. Sync: Configuration Files is up to you: it syncs core options and shader presets, which you may want different on each device.
  6. 6Leave Destructive Cloud Sync off. RetroArch then moves a file to its cloud_backups folder before it overwrites or deletes it.
  7. 7Leave Sync Mode on Automatic, then restart RetroArch so it does its first sync.

Type it in desktop mode

The settings are quickest to fill in from desktop mode with a keyboard: open RetroArch there, enter the URL and password, and quit RetroArch to save them. Game mode then uses the same settings. Or press Steam + X for the on-screen keyboard in game mode.

Use the same folder settings everywhere

RetroArch syncs saves by their path inside its saves folder. Two devices only share a save when the path matches, so check these settings in Settings, Saving on every device:

  • Sort Saves into Folders by Core Name and Sort Save States into Folders by Core Name
  • Sort Saves into Folders by Content Directory and the same for save states

The game's file name matters too: Pokemon Emerald (USA).srm only matches a ROM with the same name. Rename the ROM on one device if they differ. Use the same core for a game on each device as well, since a core's saves sit in its own folder when sorting by core name is on.

Play on one device at a time

RetroArch syncs when it starts and when you close a game, not while you play. Close the game before you put a device down, and let RetroArch start on the next one before you load the game there.

If two devices change the same save between syncs, RetroArch skips that file and says "Cloud Sync finished with conflicts". To keep the copy in the cloud, delete the save on the device and sync again (in Settings, Saving, Cloud Sync, Sync Now). SaveSync keeps the 20 newest versions of every save either way, so you can restore one from the dashboard.

Skip the on-screen keyboard

Typing a URL and a long password with a controller is slow. Instead, with RetroArch closed (it rewrites its config when it quits), open retroarch.cfg (~/.var/app/org.libretro.RetroArch/config/retroarch/ for the Flatpak and EmuDeck, or the Steam version's folder) and set:

cloud_sync_enable = "true"
cloud_sync_driver = "webdav"
webdav_url = "https://savesync.fastwater.app/saves/"
webdav_username = "savesync"
webdav_password = "<your SaveSync password>"
cloud_sync_sync_saves = "true"
cloud_sync_destructive = "false"

Not sure where the file is? In RetroArch, Main Menu, Configuration File, Save Current Configuration shows its path.

Check that it works

  1. 1Load a game, save in it, and close the content to go back to RetroArch's menu. RetroArch syncs then.
  2. 2Open your saves on the dashboard: the save is there, under the same folders as on the device.
  3. 3On your second device, set up Cloud Sync the same way with its own key and restart RetroArch. Load the game and pick up where you left off.
Something went wrong? Every upload is kept. Open the save on the SaveSync dashboard and restore the version you want; RetroArch gets it on its next sync.

Questions

Does Steam Cloud sync RetroArch saves?
Steam Cloud covers some of RetroArch's folders, but players report it missing saves, and it only reaches other Steam installs. Turn it off for RetroArch and use Cloud Sync, which also reaches Android and iPhone.
Does it work with EmuDeck?
Yes. EmuDeck installs RetroArch's Flatpak, which has Cloud Sync. Point it at SaveSync and keep EmuDeck's own cloud sync off for RetroArch so the two don't overwrite each other.
Does it work with RetroDECK?
RetroDECK ships its own RetroArch. If its Settings, Saving menu shows Cloud Sync, the same steps work.
Are save states synced too?
Yes. Sync: Saves/States covers both. A save state only loads in the same core, and sometimes only the same core version, so use the same core on each device. In-game saves (.srm) are more forgiving.
What if something goes wrong?
SaveSync keeps the 20 newest versions of every save, deleted ones included. Restore any of them from the dashboard, and RetroArch gets it on its next sync.
Can a SaveSync key reach anything else in my account?
No. A SaveSync key reads and writes saves only. Turn a key off on the Set up a device page, and that device stops syncing at once.

Pick up where you left off.