Synchronizing files between devices with Syncthing on Android

  • Syncthing allows you to synchronize folders in an encrypted and direct way between Android, PC, Raspberry Pi and other systems, without depending on the cloud.
  • The configuration by folders, devices and flow types (send/receive, send only, receive only) offers very fine control of games, photos and documents.
  • The versioning system and conflict management protect against accidental deletions or overwrites, although it does require monitoring the space occupied.
  • Using a permanent node like Raspberry Pi or NAS improves data availability and makes it easier to centralize backups of saves and other files.

Synchronizing files between devices with Syncthing on Android

If you have multiple Android consoles like a Retroid Pocket 5 or an Odin 2 Portal and you want your Saved games always travel with you From one device to another without third-party cloud services, Syncthing is exactly the tool you've been looking for. Thanks to its encrypted end-to-end synchronization, you can share RetroArch saves, saved states, and configuration folders between your devices and your PC without relying on Google Drive, Dropbox, or anything similar.

The idea is simple: set up your own distributed cloud where You decide which folders are synced, with which devices, and in which direction.In this article you will see how Syncthing works, how to use it on Android (including console-like devices), how to connect it to your PC, Raspberry Pi or NAS, and what settings to use to ensure your saved games are reliable, without data corruption or strange conflicts.

What is Syncthing and why is it perfect for gamers on Android?

Syncthing is an application of continuous file synchronization between devices via P2P (peer-to-peer). There is no central server where your data is stored: each device runs its own Syncthing "daemon" and connects directly to the other authorized devices.

The project is Free software under MPL 2.0 licenseIt is developed in Go and uses its own efficient Block Exchange Protocol. It can run on Windows, macOS, GNU/Linux, BSD, Android, Docker containers, and on low-power machines like a Raspberry Pi or a small NAS you might have at home.

For a user who wants to synchronize save files, the beauty of Syncthing is that it's not limited to a single "Documents" folder; it allows you to Link any local route to any remote routeThis includes RetroArch save directories, quick states, individual emulator configurations, or even the save files that certain games store in somewhat obscure paths within the internal storage.

Key advantages over the typical "cloud" for your games

Using Syncthing on Android with your PC, Raspberry Pi, or NAS solves many problems that traditional cloud solutions have when it comes to gaming and emulation. The most important advantages are:

  • Real privacy: The files reside only on your own devices (or those of trusted individuals). There are no copies on external servers and no company policies changing from one day to the next.
  • Open source and auditable: Anyone can check the code and verify that there are no backdoors. Ideal if you're protective of your data and don't want black boxes.
  • Fully multiplatform: You can easily sync between Android, Windows or Linux PCs, Macs, Raspberry Pi, home NAS devices, etc.
  • Without quotas or artificial space limits: It only limits you to the size of your local disks. If you have a large disk in your PC or NAS, all your ROMs and saves will fit.
  • (Near) real-time synchronization: As soon as your Android consoles and PC are connected, the changes propagate automatically. You finish a game on the couch, and when you turn on the other device, the save file is already there.
  • Fine control by folder and by device: You can define whether a folder is send/receive, send only, or receive only, and which files should be ignored to avoid messing things up with temporary files or caches.

In the gaming context, this means that You can have a central repository with all your save files and ROMs (for example on a Raspberry Pi or a PC that's almost always on), and your Retro Android devices (Retroid Pocket, Odin 2, mobiles, tablets) pull from there and keep the save directories synchronized without you having to copy them manually.

Security, encryption, and what each device actually sees

One of Syncthing's strengths is that all communications between devices They travel encrypted point-to-point with TLSEach device generates a certificate and a private key the first time, and from there its unique device identifier is derived.

This involves several things that you should be clear about before adding your save files and other personal files:

  • Mandatory mutual approval: Even if someone knows your device ID, they can't connect unless you accept it through the Syncthing interface. The same applies in reverse: you also can't connect to a device unless the other party confirms.
  • Content is always encrypted: The discovery servers or relays (repeaters) that Syncthing may use over the Internet only see encrypted traffic; they cannot read your files.
  • Minimum metadata exposure: Each connected node sees your IP address, operating system, Syncthing version, and your status (connected, syncing, etc.). It's not a big deal, but it's good to know.
  • Possibility of setting up your own infrastructure: If you're very privacy-conscious, you can set up your own global discovery server and your own relays so you don't have to rely on public ones.

Although Syncthing doesn't need a "central" storage server, it does use some. auxiliary services for finding each other through the Internet: global discovery server, relay list, update server, and optional anonymous statistics. For typical home use (Android + PC + Raspberry Pi), you can stick with the default configuration: it's secure, balanced, and works without any hassle.

Installing Syncthing on Android (including Retroid and Odin-type consoles)

On Android, there are several ways to get the client. The most common is to install Syncthing or Syncthing-Fork from Google Play or F-Droid. These applications are a kind of graphical "wrap" on top of the Syncthing engine, designed for similar Android mobiles and consoles.

When you open the app for the first time, a wizard runs that creates the Device ID, default folders, and key permission requests:

  • Storage access: This is essential for reading and writing to the folders where your saves, ROMs, or configurations are located. A "Grant permission" button will usually appear, which you must accept.
  • Location permission (optional): Android requires this permission when an app needs to see the Wi-Fi network name. Syncthing only uses it if you want to limit synchronization to specific networks (for example, only your home Wi-Fi to avoid using mobile data).

After those steps you will see the app's main screen, with tabs for Folders, Devices and access to the web interfaceFrom there you can start or stop the service, view its status, and access the settings. On many handheld console-type devices, it works exactly the same as on a standard Android phone.

The web interface: the same look and feel on Android, PC and Raspberry Pi

Although the Android app has its own interface, the simplest and most consistent way to manage everything is by using the integrated web interface that exposes Syncthing on port 8384It's the same across all systems, so what you learn in one applies to all of them.

The app usually has a button to open the web interface within the application itself. If you see something strange or it gets stuck, you can open your browser on Android and point to... http://127.0.0.1:8384 (or the IP address and port indicated by the app). The website is responsive, so it adapts quite well to small screens.

In that interface you will clearly see:

  • A top menu with Actions, Settings, Show ID, etc.
  • A notice board with important notifications (new devices, suggested folders, errors).
  • A block of folders with its status, type, size, and synchronization progress.
  • The "This device" section with CPU consumption, RAM, upload and download speeds, etc.
  • The list of "Remote Devices" known or connected at that time.

The windows for creating and editing devices or folders appear as emerging dialogues about the bottom. Once you get used to it, the whole setup process becomes quite logical and quick.

Connect your Android device (Retroid, Odin, mobile) to your PC or a Raspberry Pi

Synchronizing files between devices with Syncthing on Android (2)

The heart of Syncthing is the link between devices. Each device has a Unique Device ID, a long alphanumeric string (and an associated QR code) that allows other devices to add it as "remote".

To connect, for example, your Retroid Pocket 5 to your desktop PC or your Raspberry Pi, the general process would be:

  1. View your Android ID: From the web interface or the app menu, go to "Show ID". You will see the identifier and the QR code.
  2. View PC/Raspberry ID: On the PC browser or on the Pi, also go to "Show ID" in its web interface.
  3. Add your PC as a remote device on Android: From the Devices tab, click "Add remote device" and scan the PC's QR code, or copy the ID manually. Give it a descriptive name like "PC Gaming," "NAS Living Room," or "Raspberry Emulators."
  4. Add the Android device to your PC or Pi: From the PC's web interface, create a new device and paste the Android ID (or scan it if you have a QR code reader). Leave the address as "dynamic" unless you have special requirements.
  5. Accept the relationship on both sides: Each time you add a device, a notification appears on the other end asking for confirmation. The connection will not be established until you accept on both sides.

This "request and acceptance" system might be a tad tedious the first time, but that's what It prevents anyone with your ID from connecting without your permission.Perfect if you share a network with other people or have devices exposed to the internet.

Synchronizing folders: where to put the save files and how to link them

Once the devices are known, it's time to decide. which folders are going to synchronizeSyncthing always works at the folder level, identifying each folder with:

  • Legible label: the name you'll see in the interface, something like "Saves RetroArch Odin".
  • absolute local route: the actual directory on your Android device or your PC.
  • Internal folder ID: an identifier that allows Syncthing to know that two folders on different computers are actually the same synchronization.

Android usually comes with a default folder called Camera or PhotosThis is designed to sync photos from your phone. A "Default Folder" might appear on your PC. For games, it's usually best to locate the folder on each device first. Where RetroArch stores save filesand create a clearly identifiable folder there.

For example, on Android many RetroArch configurations use paths like:

  • /storage/emulated/0/RetroArch/saves
  • /storage/emulated/0/RetroArch/states

To share it, in your Retroid or Odin you would do something like this:

  1. Click "Add folder".
  2. Add a label "RetroArch Saves".
  3. Specify the correct local path (for example, /storage/emulated/0/RetroArch/saves).
  4. In the Sharing tab, select the devices you want to share it with (PC, Raspberry Pi, second Android…).
  5. Save and return to the main screen, where you will see the new folder listed.

On the other device (for example, your PC), a notification will appear indicating that your Android device wants to share a folder with ID X and label "RetroArch Saves". Upon accepting, you will need to:

  • Choose a local name (it can be different, for example "Saves Retroid").
  • Select the destination route On your PC, for example, ~/Games/RetroArch/saves or D:\Retro\Saves. Make sure that path has write permissions.
  • Confirm the operation so that Syncthing creates the directory tree if it does not exist and starts synchronization.

Progress will be displayed with percentage bars and a "Syncing" status. When everything is up to date, the folder will change to "Up to date" and the two locations will be linked.

Folder types: how to avoid surprises with your games

Not all synchronization situations are the same. Syncthing allows you to define synchronization by folder. type of change flow to adapt to your needs:

  • Send and Receive: Default mode. Any changes (creating, modifying, or deleting files) are replicated across all devices that share that folder.
  • Send only: That device acts as the source. The others receive, but do not send changes back. If something is modified on a receiver, Syncthing marks it as divergent.
  • Receive Only: The device only accepts changes from other devices; local modifications are not propagated. Ideal for devices acting as a "master copy".

In a gamer setup, something like this makes a lot of sense:

  • put your PC or Raspberry Pi as “Send & Receive” for the saves, acting as a central hub.
  • Configure your Android consoles as well as Send & Receive in the RetroArch folders if you want any device to be able to advance games and send those changes to the rest.
  • Use "Send Only" in the folder of photos from my phone If you also use Syncthing for image backups and don't want something deleted on your PC to be lost on your mobile device.

The key is that the folder type is defined independently on each deviceYou can have the same ID folder configured as "Send Only" on one node and "Receive Only" on another, allowing you to set up fairly flexible backup and replication architectures.

Scaling to more devices: clusters and “introducers”

When you start adding more machines—for example, a gaming PC, a laptop, several Android consoles, a NAS, a Raspberry Pi—what Syncthing calls a cluster: a group of devices that share a folder among them.

If your PC initially acts as the central node that knows all the others, it's possible that for two "peripheral" devices (for example, a laptop and a NAS) to communicate directly, they depend on the PC being online. To improve this, Syncthing uses the role of the Enter or presenter.

When you mark one device as inserting into another, you're basically telling it:

  • "Any device this team adds, add it to me too."so that it appears in your list of remote devices.
  • The same applies to the folders that are shared with those new devices.

Thus, if you have a server acting as a presenter, the other nodes in the cluster eventually get to know each other and can exchange data directly. without depending on a single “funnel”However, it's not advisable to mark all devices as introducers, because over time you can end up with lists full of "ghost" devices that no longer exist.

File conflicts and best practices with saves and states

Like any synchronization system, Syncthing can generate Conflicts occur if two devices modify the same file almost simultaneously.This can happen with game saves, for example, if you open the same game on Retroid and Odin without allowing time for the changes to synchronize.

When it detects a conflict, Syncthing usually renames one of the copies with a suffix like "sync-conflict" and the date/timeNo information is lost, but you may find multiple versions of the same save file if you frequently open it in parallel on several computers.

Basic recommendations for gamers:

  • Avoid opening the same game on two devices at the same timeClose the game on one device, let it sync (make sure the folder is "Up to date"), and then open it on the other.
  • For games with sensitive saves or proprietary formats, consider keeping the folder as "Send Only" from a main node (for example your PC) and "Receive Only" on consoles, so that only one computer generates the master save.
  • Check from time to time if there are files with the suffix "sync-conflict" in the saves folders and manually decide which version to keep.
  • Do not use Syncthing for multi-user monolithic databases that are opened simultaneously (for example, certain emulator databases if used in parallel). It's not designed for that.

On Windows there are frontends like SyncTrayzor that make conflict management easier with a more user-friendly interface, but on Android you'll usually have to use the file explorer and the web interface.

File versioning: how to avoid filling up your disk with old versions

Syncthing includes a system of file versioning This can save your life if you accidentally delete an important save file or overwrite a game. Instead of directly deleting or replacing the file, move the previous version to a hidden folder called .stversions within the same shared directory.

The problem is that, if you don't control it, .stversions can grow without limitsThis is especially true if you sync large files (videos, audio, ISOs) or if you frequently change your save files. It's easy to end up with tens or hundreds of gigabytes of space being used if you leave it at the default settings.

For each folder you can choose the most appropriate versioning type:

  • No versioning: Disable versioning. If a file is deleted or overwritten, it disappears without a backup.
  • Trash Can: Modified or deleted files are moved to .stversions and kept until you delete them or until you set a retention time (e.g., 60 days).
  • Simple Versioning: It stores a limited number of versions for a set period of time. You can define how many days to keep and how often to clean up.
  • Staggered Versioning: It stores versions with a tiered policy: several very recent copies, then daily, weekly, etc. copies, up to a maximum age.
  • External: Instead of managing versions itself, Syncthing executes a command or script of yours each time a file is versioned. This is for very advanced cases.

For game saves, it's usually reasonable to use Simple or Staggered with reasonable limits (for example, a maximum of 10 versions and 30-60 days old). This way you can recover old saves without the disk filling up forever.

Syncthing on Raspberry Pi, NAS and servers: the always-on node

A very convenient setup is to use a Raspberry Pi, a NAS or a home server as a permanent node. This equipment remains powered on almost all the time and acts as:

  • Central repository of copies of your saves and ROMs.
  • Meeting Point between devices that are not connected at the same time (for example, your Android console at home and your laptop outside).
  • Unloading or processing machine which then distributes content to others.

In GNU/Linux, Syncthing can be installed from official repositories or from the project's own repository. It's common to enable it as a service with systemd using something like systemctl enable syncthing@user y systemctl start syncthing@userso that it starts when the system is turned on.

On a Raspberry Pi, it is often useful to edit the config.xml configuration file to open the web interface to other machines on the networkYou change the address from 127.0.0.1:8384 to 0.0.0.0:8384, and you can manage Syncthing from your PC's browser without needing a monitor on the Pi. Another very clean option is to use SSH with port forwarding and bring the remote 127.0.0.1:8384 to your local machine.

If you combine this with your Android devices, you can do things like:

  • Sync the folder Mobile camera in Send Only to the Pi, and keep a local backup of photos there.
  • Synchronize RetroArch/saves and RetroArch/states between Pi, PC and Android consoles, so that the Pi always keeps a complete copy of your games.

Syncthing on iOS using compatible clients

There is no official Syncthing app for pure iOS, but there are third-party projects like Sync Train which act as clients on the same core. This allows you, if you also have an iPhone or iPad, to integrate them into the file-sharing network.

An interesting scenario would be:

  • Syncthing on Android as the main engine on your consoles and mobile devices.
  • Sync Train on iOS to access certain synchronized folders and stream multimedia whenever it suits you.
  • PC or server as a central node that stores a complete copy of everything.

With this architecture you can have encrypted synchronization between Android and iOS without paying monthly fees or handing over your data to cloud providers, also taking advantage of the fact that Sync Train allows you to play content on demand without having to download it all.

Synchronizing games between Android consoles: practical tips

Returning to the specific case of a Retroid Pocket 5 and an Odin 2 Portal, the logical question is how reliable the synchronization of games and states is, and what needs to be taken into account to ensure a good experience.

With Syncthing properly configured, the save transfers They are very reliableThe protocol transfers files in blocks, checks hashes, and retries if there are interruptions. What most affects stability is not Syncthing itself, but rather the coverage of your Wi-Fi network and the order in which you use your devices.

Some specific tips:

  • Try to make sure both devices are connected to the same stable WiFi network when they are going to synchronize. Avoid highly congested public networks.
  • On each console, make sure that RetroArch is actually installed. pointing to the folder that Syncthing synchronizes (Check save and state paths in RetroArch settings).
  • Avoid having RetroArch write saves to two devices at the same time for the same game. Close the game and let it finish syncing. before opening it in the other one.
  • If you want to play it safe, you can keep one of the consoles as “main” team for certain platforms and the other as secondary, adjusting folder types (Send Only / Receive Only).
  • Check the Syncthing log from time to time if you notice anything unusual: conflict or permission notices They usually explain what's happening.

Many users have been using Syncthing to synchronize for years. notes, photos, documents, and emulator save files The experience across devices is usually very stable once the initial setup is complete. The biggest real "danger" remains human error (deleting the wrong folder, accidentally changing a path, etc.), so it's advisable to have external backups of anything you can't afford to lose.

Overall, Syncthing allows you to turn your mobile phones, Android consoles, PCs, and Raspberry Pi into something very similar to a distributed private cloudwhere saved games, photos and documents travel end-to-end encrypted, with no monthly fees, no reliance on third parties and a level of control over your data that you can hardly get with regular commercial services.