-
Notifications
You must be signed in to change notification settings - Fork 115
Community Guides
⚠️ WarningEmuDeck is not officially supported on ChimeraOS. EmuDeck may have assumptions about running on the Steam Deck. ChimeraOS highly recommends using our built-in emulation solution. It is much easier to use and setup, especially since there is no need to use Desktop mode. See the Getting Started guide for more details.
The installation instructions on the EmuDeck website do not work on ChimeraOS.
To install EmuDeck on ChimeraOS:
- Switch to Desktop Mode.
- Open a terminal window using the Console application.
- Paste the following into the Console (this must be done locally, not over SSH) window and hit enter:
curl -L https://raw.githubusercontent.com/dragoonDorise/EmuDeck/main/install.sh | bash
- Follow the instructions in the EmuDeck application/installer
NOTE: Launching Steam ROM Manager from the Desktop menu does not work, launch Steam ROM Manager from the EmuDeck application as a workaround.
EmuDeck downloads EmulationStation-DE (AppImage) and RetroArch (Flatpak). In order to use EmuDeck's pre-configured RetroArch with its bundled EmulationStation-DE, you will need to create a custom es_find_rules.xml
and place it in /home/gamer/.emulationstation/custom_systems
.
To create a custom es_find_rules.xml
:
- Create a
es_find_rules.xml
file - Open it in a text editor of your choice
- Paste the below contents into the file
<ruleList>
<emulator name="RETROARCH">
<rule type="systempath">
<entry>org.libretro.RetroArch</entry>
<entry>retroarch</entry>
</rule>
</emulator>
</ruleList>
- Save and exit out of the file
- Place the
es_find_rules.xml
file in the/home/gamer/.emulationstation/custom_systems
folder
Note: This section is specifically referring to the RetroArch Flatpak installed by EmuDeck.
If input is not working in RetroArch, you will need to change the Input
driver to SDL
.
To change the driver:
- Open RetroArch (the Flatpak installed by EmuDeck)
- To open RetroArch: Add RetroArch to Steam through the
Emulators
parser in Steam ROM Manager. Afterwards, you can open RetroArch directly in Game Mode
- To open RetroArch: Add RetroArch to Steam through the
- Click the
Settings
menu - Click
Drivers
- Select
Input
- Select
sdl2
- Back out of the
Drivers
menu and select theMain Menu
- Click
Configuration File
- Click
Save Current Configuration
and exit out of RetroArch - Your RetroArch controls will now work in Game Mode
Saves can easily be backed up or synced using rclone, a multi-protocol sync tool that can be extracted to /home/gamer so it persists between upgrades.
After downloading from https://rclone.org/downloads/ you'll want to extract to your home directory (suggested to use /home/gamer/rclone). After downloading and unzipping, your first step will be to configure a sync target by using the following command:
/home/gamer/rclone config
Rclone supports many different targets, including Gdrive, OneDrive, S3, FTP, WebDAV (including Nexcloud and Owncloud) and many others, so it's up to you what target you sync with. It's recommended to do this from a desktop session, since some choices require the use of a browser to fully authorize rclone. Even though it's text based, it takes you through each question and offers a logical default.
Saves are located in /home/gamer/.local/chimera/content/saves. Once a target is configured it's time to test and do an initial sync. Rclone has full documentation but for this task we only need a few basic commands:
/home/gamer/rclone/rclone copy /home/gamer/.local/chimera/content/saves mytarget:/saves
- This will copy everything from the source to the target.
- Good for an initial setup or a periodic backup.
- Swap the source and destination to do a restore from the target.
/home/gamer/rclone/rclone sync /home/gamer/.local/chimera/content/saves mytarget:/saves
- This will make the target look like the source, copying missing files to the target as well as deleting files from the target that aren't on the source.
- Also good for a periodic backup provided you're OK with things that are removed from the source to be automatically removed from the target.
- This ONLY changes the target.
/home/gamer/rclone/rclone bisync /home/gamer/.local/chimera/content/saves mytarget:/saves
- This will do a bidirectional sync based on file checksum, date, and size (depending on which is available on the target), keeping the most recently changed copy.
- A first run needs to be done manually with the
--resync
option - Good for keeping multiple devices in sync with each other. Conflits will be saved with a .conflict extension and will need to be resolved manually.
- Because FTP is supported on ChimeraOS, and rclone supports custom FTP ports, a second ChimeraOS device can be the target and a direct sync between two ChimeraOS devices can be done.
It's helpful to set up a periodic schedule for these tasks rather than running them manually. Since cron is not part of the default ChimeraOS setup, that means using systemd timers, which are a little more complex and require two files, a service, and a timer. Both would be located in /home/gamer/.config/systemd/user/ and can be named whatever you want as long as they match (rclone-sync is used as an example below). You can use either a direct rclone command line or create a script with your rclone command(s) or in it. If you're doing multiple sync commands with multiple directories it's strongly recommended to use the script option, so you only have to work on your commands in one place.
rclone-sync.service:
[Unit]
Description=RClone Sync
[Service]
Type=simple
ExecStart=<your rclone commandline>
rclone-sync.timer:
[Unit]
Description=RClone Sync Timer
[Timer]
Unit=rclone-sync.service
OnBootSec=15m
OnUnitInactiveSec=15m
OnActiveSec=1s
[Install]
WantedBy=timers.target
The scheduling is completely flexible, and can be done based on calendar times (hourly/daily/weekly/etc) or activity times. The example shown above will run the timer on boot, 15 minutes after boot, and then every 15 minutes after it completes each time.
After creating these files, run this command to read in your new service/timer definitions:
systemctl daemon-reload
Then, to enable the timer on boot:
systemctl enable rclone.timer
Add --now
to also start it immediately. You can check status and manually start/stop it just like any other systemd service. Likewise, if you want to run the task manually you can just start the service unit.
If performing an automatic periodic sync it is advisable to create a second task to do a sync as part of a shutdown (this is also good for setting up a backup-on-shutdown task), in order to catch and upload any changes that might have been missed in any interval you set.This is seperate from the timer above, and runs independently, only at shutdown, before the network shuts down.
rclone-shutdown.service
[Unit]
Description=RClone sync on shutdown
Before: shutdown.target network.target
[Service]
Type=oneshot
ExecStart=<your rclone commandline>
[Install]
WantedBy=shutdown.target
As before, run systemctl daemon-reload
to read in the new unit file, and then systemctl enable rclone.shutdown-service
to enable. While this may not be necessary if your system is on all the time, it's especially useful if you shut down when done playing, to make sure you get a backup or a sync in before that shutdown.
It is strongly recommended to not sync ROM collections with the cloud or any other public facing server. Even though your ROM collection might be 100% legally dumped by you, anything seen as offering it to others might be seen as piracy and piracy is not encouraged or endorsed by this project. Syncing any other data, including Epic and GOG saves, Flatpak saves, configs, data, etc, while it is entirely possible to do, is beyond the scope of this document and is up to you to try on your own.