Wenn du Retro-Handhelds oder Raspberry Pis mit vielen ROMs und Savegames besitzt, kann Syncthing dir helfen, die Speicherstände und Spiele über alle deine Geräte zu synchronisieren wie dem Anbernic RGXX35 Plus (kaufen) und ein Backup zu erstellen. Am einfachsten geht das mit Batocera Linux und einem Synology NAS. Das funktioniert zuverlässiger als Lösungen über Dropbox oder Google Drive und ist einfacher einzurichten als das komplexe rclone.
Syncthing ist ideal für Spielstände
Der ideale Anwendungsfall für Syncthing ist das Sichern und Synchronisieren von Spielständen der ROMs. So hast du auf jedem Gerät denselben Spielstand zur Hand. Solange die Geräte Internetzugang haben, werden die kleinen Dateien innerhalb von Sekunden synchronisiert.
Was ist Syncthing und was nicht?
Syncthing ist ein Programm zur Dateisynchronisation, das Dateien in Echtzeit zwischen zwei oder mehr Computern über das Internet oder lokale Netzwerke abgleicht. Dafür müssen nicht zwingend Ports geöffnet werden. Es läuft auf verschiedenen Betriebssystemen, darunter Windows, macOS und Linux, und ist somit eine vielseitige Lösung für Nutzer verschiedener Plattformen.
Die Software schützt Daten effektiv vor unbefugtem Zugriff, indem sie die Kontrolle über Speicherort, Teilung und Übertragung der Daten dir überlässt. Syncthing ist ein Open-Source-Projekt und hat keine direkte Anbindung an Cloud-Dienste, sondern synchronisiert zwei oder mehr Geräte permanent.
Die Einschränkungen beim Einsatz von Syncthing
Beim Einsatz von Syncthing gibt es einige Herausforderungen. Es kann nicht auf jedem System installiert werden. Bei Retro-Handhelds wird oft ein Linux eingesetzt, bei dem das Dateisystem eingefroren ist. Bisher habe ich nur Batocera gefunden, das offiziell Syncthing als Plug-in integriert hat. Bei Geräten wie dem Steam Deck oder unter Windows oder macOS ist die Installation von SyncThing kein Problem. Beispielsweise unterstützt mein Anbernic RG351V kein Batocera und nur AmberELEC, welches kein Syncthing unterstützt. Dasselbe gilt für ArkOS, Lakka und im Prinzip alle außer Batocera.
Unterschiedliche Ordnerstrukturen
Die Ordnerstruktur der Speicherstände variiert stark zwischen den Systemen. Bei Batocera werden sie nach dem emulierten System abgelegt, während bei RetroArch alle Spielstände in einem Verzeichnis liegen. Das erschwert die Synchronisation zwischen RetroArch und Batocera. Dasselbe gilt für EmuDeck auf dem Steamdeck, das seine Spielstände wiederum anders ablegt.
Batocera
Die Savegames und savestates werden analog der ROM-Ordnerstruktur erzeugt.
saves
├── gba
│ └── Advance Wars (USA) (Rev 1) (patched).srm
├── dreamcast
├── snes
│ └── Chrono Trigger (USA).srm
└── psx
AmberELEC
AmberELEC macht es meiner Meinung nach maximal ungünstig und erstellt die Savegames direkt neben den ROMs. Ich habe keine Option gefunden, das zu ändern.
roms
├── gba
│ └── Advance Wars (USA) (Rev 1) (patched).gba
│ └── Advance Wars (USA) (Rev 1) (patched).srm
├── dreamcast
├── snes
│ └── Chrono Trigger (USA).sfc
│ └── Chrono Trigger (USA).srm
└── psx
RetroArch (SteamDeck)
Alle savesgames und savestates sind in einem „save“ Verzeichnis.
saves
├── Advance Wars (USA) (Rev 1) (patched).srm
└── Chrono Trigger (USA).srm
RetroArch: Spielstände nach Verzeichnis der Inhalte organisieren
Die Ordnerstruktur der Spielstände kann man unter RetroArch unter Settings->Saving konfigurieren. Dazu aktiviert man die beiden folgenden Optionen:
- Sort Saves into Folders by Content Directory
- Sort Save States into Folders by Content Directory
Nun müssen die ROMs allerdings analog der Ordnerstruktur der Spielstände anderer Systeme wie Batocera abgelegt werden. Ich habe einfach alles genau so angelegt wie in Batocera:
saves
├── gba
│ └── Advance Wars (USA) (Rev 1) (patched).srm
├── dreamcast
├── snes
│ └── Chrono Trigger (USA).srm
└── psx
Falls man schon vorher Spielstände in RetroArch angelegt hatte, dann muss man die Spielstände per Hand migrieren.
Syncthing unter Batocera und Synology NAS einrichten
Ein NAS oder ein anderes ständig eingeschaltetes Gerät ist erforderlich, um zu vermeiden, dass alle Geräte gleichzeitig eingeschaltet sein müssen. Zwar ermöglicht Syncthing die direkte Synchronisation zwischen allen Knoten im Netzwerk, aber es ist praktisch nicht durchführbar, alle Geräte durchgehend laufen zu lassen. Ein NAS dient hier als zentraler Knoten, der ständig aktiv bleibt und so die Verfügbarkeit der Daten für alle anderen Geräte sicherstellt.
Schritt 1: Syncthing aktivieren
Aktiviere zuerst Syncthing unter Batocera in den Einstellungen unter System Settings -> Services -> Syncthing.
Schritt 2: Gerät neustarten und verbinden
Starte das Gerät neu und verbinde es mit einem WLAN.
Schritt 3: IP-Adresse notieren
Notiere die IP-Adresse des Gerätes unter Network Settings -> IP Address.
Schritt 4: Syncthing-Web-Oberfläche öffnen
Öffne die Syncthing-Weboberfläche unter <IP-Adresse>:8384
.
Schritt 5: Lokales Verzeichnis hinzufügen
Füge mit „Add Folder“ ein lokales Verzeichnis zur Synchronisierung hinzu:
- Folder Name: „Spielstände“
- Folder ID: (nicht ändern)
- Folder Path:
/userdata/saves/
Achtung: Der Folder Path ist entscheidend und bei jedem System unterschiedlich. Nutze die Autovervollständigung, um Fehler zu vermeiden.
Schritt 6: Device ID notieren
Notiere unter Actions -> Show ID die Device ID des Handhelds für später.
Schritt 7: Syncthing auf Synology NAS installieren
Installiere Syncthing auf einem Synology NAS über das Package Center von DSM.
Schritt 8: NAS-Weboberfläche zugreifen
Greife auf die Weboberfläche des NAS unter <IP-Adresse NAS>:8384
zu.
Schritt 9: Gerät hinzufügen
Wähle „Add Remote Device„, gib die Device ID des Syncthing vom Handheld ein und vergebe einen Namen. Ohne „Auto Accept“, um automatische Ordnererstellung zu vermeiden.
Schritt 10: Vertrauenswürdiges Gerät bestätigen
Bestätige auf der Weboberfläche von Syncthing auf dem Handheld, dass das Synology NAS als vertrauenswürdiges Gerät akzeptiert wird.
Schritt 11: Ordner teilen
Teile den Ordner „Spielstände“ auf dem Handheld unter Edit -> Sharing mit dem NAS.
Schritt 12: Freigabe akzeptieren und lokalen Pfad vergeben
Akzeptiere auf der NAS Syncthing-Oberfläche diese Freigabe und vergebe einen lokalen Pfad wie /volume2/SSD/syncthing/saves/
.
Schritt 13: Fertig!
Syncthing auf dem Steam Deck für den Game-Modus einrichten
Es ist kein Problem, Syncthing im Desktop Modus zu installieren. Allerdings sollte es auch im Game Modus durchgehend laufen, damit man immer einen aktuellen Stand auf dem NAS hat. Hier wird beschrieben, wie das geht.
Schritt 1: Syncthing im Discovery AppStore finden
Öffne den Discovery AppStore im Desktop-Modus deines Steam Decks. Suche nach „Syncthing GTK“ im Suchfeld des AppStores.
Schritt 2: Syncthing installieren
Klicke auf „Installieren“, um Syncthing auf deinem Steam Deck zu installieren.
Schritt 3: Syncthing starten
Öffne Syncthing nach dem Neustart über das Anwendungsmenü und konfiguriere es wie gewohnt. Hier ein paar Pfade, die bei der Konfiguration helfen.
RetroArch Spielstände (bei Installation auf SD Karte)
/run/media/mmcblk0p1/steamapps/common/RetroArch/saves
RetroArch Bios System (bei Installation auf SD Karte)
/run/media/mmcblk0p1/steamapps/common/RetroArch/system
EmuDeck ROMs
/run/media/mmcblk0p1/Emulation/roms/
/run/media/mmcblk0p1/Emulation/roms/snes
/run/media/mmcblk0p1/Emulation/roms/megadrive
Schritt 4: Syncthing Daemon temporär deaktivieren
Deaktiviere den Syncthing Daemon für die nächsten Schritte. Dabei reicht es nicht das Syncthing Fenster zu schließen. Du musst mit rechter Maustaste auf dem Icon in der Taskleiste Syncthing beenden.
Schritt 5: Systemd-Service für Syncthing erstellen
Öffne ein Terminal im Desktop-Modus. Erstelle eine Systemd-Servicedatei für Syncthing:
sudo nano /etc/systemd/system/syncthing.service
Schritt 6: Service-Datei konfigurieren
Füge den folgenden Inhalt in die Datei ein und speichere sie:
[Unit]
Description=Syncthing
[Service]
Type=simple
ExecStart=flatpak run --command=syncthing me.kozec.syncthingtk
Restart=on-failure
RestartSec=1
SuccessExitStatus=3 4
[Install]
WantedBy=default.target
Damit wird das Hinweisfenster abschaltet und kann nun im Game-Mode automatisch gestartet werden.
Schritt 7: Service aktivieren und starten
Aktiviere und starte den neuen Service:
sudo systemctl enable syncthing.service
sudo systemctl start syncthing.service
Schritt 8: Überprüfen, ob der Service läuft
Stelle sicher, dass der Syncthing-Service läuft:
sudo systemctl status syncthing.service
Installation von Syncthing unter iOS für iPhone und iPad
Installation von Syncthing unter iOS für iPhone und iPad
Schritt 1: Installation der Möbius Sync App
Installiere die iOS App Möbius Sync aus dem App Store.
Schritt 2: Möbius Sync App starten
Öffne die Möbius Sync App auf deinem iPhone oder iPad.
Schritt 3: Syncthing einrichten
Folge den Anweisungen in der Möbius Sync App, um Syncthing auf deinem Gerät zu konfigurieren. Wichtig ist dabei, dass die App alle Rechte für Benachrichtigungen bekommt um im Hintergrund zu laufen.
Schritt 4: Geräte koppeln
Gehe in der Möbius Sync App zu „Geräte“ und füge das Gerät hinzu, mit dem du Daten synchronisieren möchtest. Verwende dafür die Geräte-ID des anderen Gerätes.
Schritt 5: Ordner freigeben
Wähle die Ordner aus, die du synchronisieren möchtest, und richte sie in der Möbius Sync App ein. Das funktioniert am zuverlässigsten mit den lokalen Dateien und nicht mit den iCloud Verzeichnissen.
Schritt 6: Synchronisation starten
Überprüfe in der Möbius Sync App, ob die Verbindung zu den anderen Geräten hergestellt ist und die Synchronisation gestartet wurde.
Schritt 7: Synchronisationsstatus überprüfen
Überwache den Synchronisationsstatus in der Möbius Sync App, um sicherzustellen, dass alle Dateien erfolgreich synchronisiert werden.
Aufpassen bei großen ISO und CHD-Dateien
Ich habe die Erfahrung gemacht, dass jede Menge große Dateien wie Dreamcast, PSX und PSP beim Scanning ewig benötigen. Gerade auf den kleinen Retro-Handhelds von Anbernic sind das teilweise 10 Minuten und mehr. In der Zeit ruckelt die gesamte UI des Handhelds und Emulation läuft nur stockend. Deswegen habe ich die folgenden Systeme beim Abgleich pausiert und starte diese nur, wenn ich wirklich neue ROMs auf dem Synology NAS habe:
- Dreamcast
- NeoGeo (Das komplette Set ist immer gleich)
- Saturn
- Sega CD
- PSP
- PSX
Ignore Liste allen Verzeichnissen hinzufügen
Per SSH verbinden und die .stignore anlegen.
nano /userdata/roms/.stignore
Dort dann Folgendes einfügen:
images
videos
*.xml
*.txt
Dann die Datei in alle Unterordner legen:
find /userdata/roms -mindepth 1 -type d -exec cp /userdata/roms/.stignore {} \;
Zusammenfassung und Tipps
Auf demselben Weg kannst du nun weitere Geräte wie einen Raspberry Pi mit Batocera einbinden und weitere Verzeichnisse wie „bios“ oder die Roms freigeben. Dafür habe ich nicht einfach den Hauptordner „roms“ geteilt, sondern ich habe die Systeme wie „snes“, „psx“, „n64“ und so weiter einzeln in Ordnern organisiert. Denn nicht jedes Gerät hat viel Speicher und die Anbernic Handhelds können nicht ausreichend schnell Nintendo 64 Spiele emulieren. Zudem benennen manche Firmwares die Ordner für dasselbe System unterschiedlich. Beispiel ist „dreamcast“ und „dc“. Wenn es aber passt, dann kann man auf dem NAS die ROMs in die Ordner legen und beim Einschalten der Handhelds, werde diese dann übertragen. Wirklich cool. Ab jetzt nutze ich nur noch Emulationsbetriebssysteme für meinen Anbernic RGXX35 Plus (kaufen), die auch Syncthing unterstützten. Und das ist bislang nur Batocera Linux.
Links
- Anbernic RGXX35 Plus Handheld (kaufen)
- Batocera für den RGXX35 Plus und H
- Review der RGXX35 Plus, H und SP Handhelds
Schreibe einen Kommentar