RetroArch Manager with SaveSync
A script to manage gamesave locations and automatically synchronize them over a local samba network.
SaveSync
SaveSync is a built-in feature of RetroArch Manager that automatically synchronizes RetroArch game saves between your dArkOS device and a shared folder on a Windows PC over your local network.
It is designed to keep your saves synchronized without requiring you to manually copy them. Once configured, SaveSync can synchronize saves:
- Automatically when dArkOS starts
- Automatically when you exit a game
- Manually whenever you choose
- Between multiple dArkOS devices using the same PC share
SaveSync uses SMB/CIFS to connect to the Windows share and rsync to synchronize the files in both directions.
Important: SaveSync is a synchronization system, not simply a one-way backup. Changes are synchronized between the R36S and the PC share.
How SaveSync Works
The basic setup is:
Local Network
│
▼
┌──────────────────────────────────────┐
│ Windows PC │
│ │
│ Shared SaveSync folder │
│ ├── gb/ │
│ ├── gba/ │
│ ├── snes/ │
│ ├── psx/ │
│ └── savesync.cfg │
│ │
└──────────────────┬───────────────────┘
│ SMB
│
▼
┌──────────────────────────────────────┐
│ dArkOS / R36S │
│ │
│ RetroArch saves/states │
│ ↕ │
│ SaveSync │
│ │
└──────────────────────────────────────┘
Windows provides the shared folder through SMB. SaveSync mounts that share temporarily at:
/mnt/savesync
It then synchronizes the appropriate save directories and unmounts the share when finished.
The SaveSync script checks for a network connection before attempting synchronization and records its activity in:
/home/ark/.config/savesync.log
1. Prepare the Windows PC
Create the SaveSync Folder
Create a folder somewhere on your Windows PC to store the synchronized saves.
For example:
C:\SaveSync
You can use any location you prefer.
Do not create a separate folder for each R36S. A single shared SaveSync folder can be used by multiple dArkOS devices.
Share the Folder
Right-click the folder and share it over your local network.
In Windows 11:
- Right-click the
SaveSyncfolder. - Select Show more options if necessary.
- Select Give access to → Specific people.
- Select the Windows user account that SaveSync will use.
- Give that account permission to read and modify the files.
- Complete the sharing process.
Windows supports sharing folders over a local network using SMB.
Share Name
Pay attention to the share name.
For example, if Windows creates:
\\MY-PC\SaveSync
then:
MY-PC
is the computer name, and:
SaveSync
is the network path/share name that SaveSync needs.
SaveSync does not need the full Windows filesystem path such as:
C:\SaveSync
It needs the SMB share name:
SaveSync
Make Sure the Share Is Accessible
Before configuring the R36S, verify that the shared folder can be accessed from another device on your network.
Windows recommends enabling network discovery and file and printer sharing when sharing folders over a local network.
The Windows firewall must also allow file and printer sharing/SMB traffic. SMB normally uses TCP port 445 for direct SMB connections.
2. Choose Your Save Organization
SaveSync supports two different ways of organizing saves.
This setting is controlled by a file named:
savesync.cfg
The file must be placed in the root of the Windows SaveSync share.
For example:
C:\SaveSync\
├── savesync.cfg
├── gb\
├── gba\
├── snes\
└── psx\
There are two possible configurations.
Option A — Normal Save Folders
Use:
USECONTENTFOLDER=falseWith this configuration, the PC share is organized like this:
SaveSync/
├── savesync.cfg
├── gb/
│ ├── Game1.srm
│ └── Game2.srm
├── gba/
│ └── Game1.srm
├── snes/
│ └── Game1.srm
└── psx/
└── Game1.srm
This corresponds to RetroArch's normal centralized save directory structure:
retroarch/saves/<system>/
For example:
/home/ark/.config/retroarch/saves/gba/
The same system folder is used on the PC share:
SaveSync/gba/
SaveSync also handles RetroArch save states.
Option B — Content-Folder Organization
Use:
USECONTENTFOLDER=trueWith this configuration, SaveSync uses a nested system directory on the PC:
SaveSync/
├── savesync.cfg
├── gb/
│ └── gb/
│ ├── Game1.srm
│ └── Game2.srm
├── gba/
│ └── gba/
│ └── Game1.srm
└── snes/
└── snes/
└── Game1.srm
The extra directory level corresponds to the content-folder organization used by RetroArch Manager.
This option is useful when your RetroArch configuration stores save files alongside the game content rather than in RetroArch's centralized save directory.
The current SaveSync implementation reads USECONTENTFOLDER from the PC configuration and selects the corresponding destination structure.
3. Create savesync.cfg
Create a plain text file named:
savesync.cfg
Place it directly inside the Windows shared folder.
For normal save folders:
USECONTENTFOLDER=falseFor content-folder organization:
USECONTENTFOLDER=trueThe value must be exactly:
true
or:
false
SaveSync will reject the configuration if the value is missing or contains anything other than true or false.
4. Configure SaveSync on the Console
Open:
RetroArch Manager → SaveSync
The SaveSync menu contains:
- Install SaveSync
- Enter Credentials
- Synchronize Now
- View Log
After installation, the first menu item changes to:
Uninstall SaveSync
5. Install SaveSync
Select:
Install SaveSync
The installer automatically checks for the required CIFS support.
If mount.cifs is not installed, RetroArch Manager attempts to install the required cifs-utils package automatically.
SaveSync then installs:
/usr/local/bin/savesync.sh
and configures the automatic synchronization components.
6. Enter Network Credentials
Select:
SaveSync → Enter Credentials
You will be able to configure:
- NetBIOS or IP
- Username
- Password
- Network Path
NetBIOS or IP
You can enter either the Windows computer's network name:
MY-PC
or its IP address:
192.168.1.100
If an IP address is entered, SaveSync uses it directly.
If a computer name is entered, SaveSync uses NetBIOS name resolution to find the PC's IP address.
Recommended
For the most reliable setup, using the PC's IP address can avoid problems caused by name resolution.
If using an IP address, it is recommended to give the PC a DHCP reservation in your router so the address does not change.
Username
Enter the Windows account username that has permission to access the shared SaveSync folder.
For example:
John
Password
Enter the password for that Windows account.
SaveSync stores the credentials in:
/home/ark/.config/savesync.crd
The credentials file is created with restrictive permissions (600) so it is not publicly readable.
Network Path
Enter the SMB share name, not the Windows filesystem path.
If the Windows share is:
\\MY-PC\SaveSync
enter:
SaveSync
Do not enter:
C:\SaveSync
and do not enter:
\\MY-PC\SaveSync
The SaveSync script constructs the SMB path automatically:
//<PC>/<NETWORKPATH>
and mounts it using SMB 3.0.
7. Perform the First Synchronization
Once the Windows share and credentials are configured, select:
SaveSync → Synchronize Now
The first synchronization is important because it establishes the initial synchronized state between the R36S and the PC.
SaveSync checks both sides and synchronizes files in both directions.
The actual synchronization uses:
rsync -au
from the R36S to the PC and then again from the PC to the R36S.
When successful, RetroArch Manager displays:
Success!
If the synchronization fails, the most recent SaveSync error is displayed when available.
8. Automatic Synchronization
Once SaveSync is installed, synchronization happens automatically.
At Boot
SaveSync installs:
savesync.service
The service waits for NetworkManager's network-online service before starting the synchronization.
This allows the R36S to automatically synchronize its saves after connecting to the network during startup.
After Exiting a Game
SaveSync also installs an EmulationStation game-end hook:
/home/ark/.emulationstation/scripts/game-end/savesync.sh
When a game exits, the hook launches:
/usr/local/bin/savesync.sh
The synchronization script then runs in the background.
This means that after playing a game and exiting back to EmulationStation, the current save can automatically be synchronized to the PC.
Manual Synchronization
Automatic synchronization is supplemented by the manual option:
RetroArch Manager → SaveSync → Synchronize Now
Use this whenever you want to force an immediate synchronization without rebooting or exiting a game.
9. Using Multiple R36S Devices
One of the major advantages of SaveSync is that multiple R36S devices can use the same Windows share.
For example:
Windows PC
SaveSync Share
│
┌──────────┴──────────┐
│ │
▼ ▼
R36S #1 R36S #2
dArkOS dArkOS
│ │
└──────────┬──────────┘
│
synchronized
saves
Configure each device to use the same:
- PC
- Share
- Username
- Password
savesync.cfg
This allows you to move between devices while keeping your game progress synchronized.
10. Important: How Synchronization Handles Files
SaveSync is bidirectional.
It performs:
R36S → PC
followed by:
PC → R36S
using:
rsync -au
This means the PC share is not treated as a permanent read-only backup.
Instead, it acts as the central synchronization location between devices.
Example
If you play a game on R36S #1:
R36S #1
Game.srm
↓
Windows SaveSync
Then later synchronize R36S #2:
Windows SaveSync
↓
R36S #2
Game.srm
R36S #2 receives the synchronized save.
This makes it possible to continue playing the same games on multiple R36S devices.
11. RetroArch Save Locations
SaveSync supports both RetroArch Manager save arrangements.
Centralized saves
/home/ark/.config/retroarch/saves/
and:
/home/ark/.config/retroarch/states/
It also accounts for the 32-bit RetroArch configuration:
/home/ark/.config/retroarch32/saves/
and:
/home/ark/.config/retroarch32/states/
The active RetroArch systems are determined from:
/etc/emulationstation/es_systems.cfg
so SaveSync can determine which systems use RetroArch 64-bit or RetroArch 32-bit.
Content-folder saves
If RetroArch is configured to store saves in the content directory, SaveSync determines whether the system is located under:
/roms/
or:
/roms2/
and uses the corresponding system directory.
12. Checking the SaveSync Log
SaveSync maintains a log at:
/home/ark/.config/savesync.log
To view it:
RetroArch Manager → SaveSync → View Log
The log records synchronization activity and errors.
For example, it records when a share is mounted:
Mounted //MY-PC/SaveSync at /mnt/savesync
and when synchronization finishes:
Sync complete, unmounted /mnt/savesync
13. Troubleshooting
"No network connection detected"
SaveSync requires an active network connection.
If the R36S is offline, synchronization is skipped and the event is recorded in the log.
Connect to Wi-Fi and try:
SaveSync → Synchronize Now
Authentication Failed
If the log reports:
authentication failed
check:
- Windows username
- Windows password
- Share permissions
- File/folder permissions
The SaveSync credentials are stored in:
/home/ark/.config/savesync.crd
Use:
SaveSync → Enter Credentials
to update them.
Share or Path Not Found
If the log reports that the share or path cannot be found, verify the Network Path.
For:
\\MY-PC\SaveSync
the Network Path must be:
SaveSync
not:
C:\SaveSync
and not:
\\MY-PC\SaveSync
Network Unreachable
If the log reports:
network unreachable
check that:
- Wi-Fi is connected on the R36S.
- The PC is connected to the same local network.
- The PC is powered on.
- The PC's IP address is correct.
Connection Timed Out
If the log reports:
connection timed out
the PC may be powered off or unreachable.
Check that the Windows PC is awake and connected to the network.
Connection Refused
If the log reports:
connection refused
check that Windows file sharing is enabled and that the firewall is allowing SMB/file sharing traffic.
savesync.cfg Error
If SaveSync reports:
invalid or missing UseContentFolder
make sure the file exists at the root of the shared folder:
SaveSync/
└── savesync.cfg
and contains exactly one of:
USECONTENTFOLDER=trueor:
USECONTENTFOLDER=false14. Uninstalling SaveSync
To remove SaveSync:
RetroArch Manager → SaveSync → Uninstall SaveSync
The uninstaller removes:
savesync.service
the SaveSync synchronization script:
/usr/local/bin/savesync.sh
and the EmulationStation game-end hook.
It also removes the SaveSync installation flag.
Your Windows SaveSync folder and its contents are not removed.
15. Recommended Setup
For most users, the following configuration is recommended:
Windows
C:\SaveSync\
├── savesync.cfg
├── gb\
├── gba\
├── gbc\
├── genesis\
├── nes\
├── psx\
├── snes\
└── ...
savesync.cfg
USECONTENTFOLDER=falseR36S
Configure:
NetBIOS/IP: <Windows PC IP or name>
Username: <Windows username>
Password: <Windows password>
Network Path: SaveSync
Then:
- Install SaveSync.
- Enter the network credentials.
- Run Synchronize Now.
- Confirm that the save files appear on the PC.
- Leave SaveSync installed.
After that, SaveSync handles synchronization automatically at boot and after games are exited.
16. Summary
SaveSync provides a simple way to keep R36S game saves synchronized across devices without manually copying files.
Once configured:
Play game
↓
Exit game
↓
SaveSync automatically runs
↓
Windows share is mounted
↓
Saves synchronize in both directions
↓
Share is unmounted
The same process also occurs during boot once the network is available.
The result is a persistent network-based save repository that can be shared by multiple R36S devices, making it much easier to protect game progress and continue playing on another device.
