A reproducible guide for running Elden Ring on Linux without Steam as a launcher, using:
- Faugus Launcher as frontend.
- GE-Proton as the Windows compatibility layer.
- A custom standalone Proton prefix.
ersc_launcher.exefor Seamless Coop.dinput8.dll+ ModLoader for DLL mods (CameraOffset).
ModEngine3 is not used. It is not needed for this setup.
Linux host
|
v
Faugus Launcher
|
v
GE-Proton
|
v
Custom Proton prefix (~/.local/share/Faugus/elden-ring/)
|
v
ersc_launcher.exe
|
v
eldenring.exe
|
v
dinput8.dll (ModLoader)
|
v
mods/CameraOffset.dll
Steam is not required to launch the game.
Faugus may use Steam as a source for Proton binaries, but:
- The Steam client does not need to run.
- The game does not need to be installed through Steam.
- The prefix does not need to be owned by Steam.
- Architecture overview
- Requirements
- Understanding Proton prefixes
- Directory layout
- Installing Seamless Coop
- Installing ModLoader and CameraOffset
- Configuring ersc_settings.ini
- Configuring mod_loader.ini
- Configuring Faugus Launcher
- First launch
- How the mod chain works
- Troubleshooting
- Diagnostics
- Final checklist
This setup has three layers.
GE-Proton provides:
- Wine environment.
- Windows API translation.
- DXVK and VKD3D-Proton.
- Additional Windows libraries not included in upstream Proton.
GE-Proton is preferred over stock Proton for non-Steam games because it includes extra patches that upstream Proton does not ship, and it does not require Steam Runtime integration.
The prefix is a fake Windows environment created and managed by Proton.
Example location:
~/.local/share/Faugus/elden-ring/
Inside:
elden-ring/
├── drive_c/
├── dosdevices/
├── system.reg
├── user.reg
├── config_info
└── version
The game believes it is running on Windows.
The prefix stores:
- Windows registry.
- Windows system directory (
drive_c/windows/). - User profile (
drive_c/users/). - Runtime state.
ersc_launcher.exe is the official launcher for Seamless Coop.
It:
- Patches the game process in memory to bypass EAC.
- Starts
eldenring.exeas a child process. - Loads
ersc.dllinto the game.
Because Faugus points directly to ersc_launcher.exe, Steam is not involved in launching the game.
dinput8.dll is a Windows DLL proxy loader.
When eldenring.exe starts, Windows attempts to load dinput8.dll from the game directory.
Instead of the real DirectInput DLL, the game finds the ModLoader version, which:
- Reads
mod_loader.ini. - Scans the configured directory for DLL files.
- Loads them into the game process.
This allows loading additional DLL mods without modifying the game executable.
Faugus
|
v
GE-Proton
|
v
ersc_launcher.exe
|
+--> patches EAC
|
v
eldenring.exe
|
v
dinput8.dll (ModLoader)
|
v
mods/CameraOffset.dll
|
v
SeamlessCoop/ersc.dll
Faugus must be installed on the host.
This guide assumes Faugus is already installed and functional.
GE-Proton must be installed.
Typical location after installation via ProtonUp-Qt or manual install:
~/.local/share/Steam/compatibilitytools.d/GE-Proton[version]/
Example:
~/.local/share/Steam/compatibilitytools.d/GE-Proton9-27/
Faugus reads from this directory when listing available Proton versions.
The game directory must be present and contain:
Game/
├── eldenring.exe
├── regulation.bin
├── start_protected_game.exe
└── EasyAntiCheat/
Example:
/mnt/SSD2/Juegos/Elden Ring/Game/
Download from the official Seamless Coop repository.
The release archive contains:
ersc_launcher.exe
SeamlessCoop/
├── ersc.dll
├── ersc_settings.ini
└── locale/
└── english.json
Download ModLoader for Elden Ring.
The release contains at minimum:
dinput8.dll
mod_loader.ini
Download the CameraOffset mod DLL.
The release contains at minimum:
CameraOffset.dll
The environment variable:
STEAM_COMPAT_DATA_PATH
tells Proton where to store the fake Windows environment.
Despite the name, it does not require Steam.
Faugus sets this automatically based on the prefix directory configured per game.
Example internal path Faugus uses:
~/.local/share/Faugus/elden-ring/
Inside that directory Proton creates:
pfx/
├── drive_c/
├── dosdevices/
├── system.reg
└── user.reg
The pfx/ subdirectory is the actual Wine prefix.
Important: a prefix created with one version of Proton may not be compatible with a different version.
Always use the same Proton version that was used to create the prefix, or recreate the prefix when switching versions.
The recommended final layout after following this guide:
/mnt/SSD2/Juegos/Elden Ring/Game/
├── eldenring.exe
├── ersc_launcher.exe
├── dinput8.dll
├── mod_loader.ini
│
├── SeamlessCoop/
│ ├── ersc.dll
│ ├── ersc_settings.ini
│ └── locale/
│ └── english.json
│
└── mods/
├── CameraOffset.dll
└── CameraOffset/
├── config.ini
└── Licenses.txt
And the prefix at:
~/.local/share/Faugus/elden-ring/
Download the latest release from the Seamless Coop GitHub repository.
Extract the archive.
The contents should look like:
ersc_launcher.exe
SeamlessCoop/
├── ersc.dll
├── ersc_settings.ini
└── locale/
└── english.json
Copy everything into the game directory.
Result:
Game/
├── eldenring.exe
├── ersc_launcher.exe <-- placed here
├── SeamlessCoop/
│ ├── ersc.dll
│ ├── ersc_settings.ini
│ └── locale/
│ └── english.json
Do not rename ersc_launcher.exe.
Do not move SeamlessCoop/ outside of Game/.
ersc_launcher.exe expects to find SeamlessCoop/ersc.dll relative to its own location.
Extract the ModLoader archive.
Copy into the game directory:
dinput8.dll --> Game/dinput8.dll
mod_loader.ini --> Game/mod_loader.ini
Extract the CameraOffset archive.
The DLL file must be placed inside:
Game/mods/CameraOffset.dll
Create the mods/ directory if it does not exist:
mkdir -p "/mnt/SSD2/Juegos/Elden Ring/Game/mods"If the mod includes a configuration directory:
Game/mods/CameraOffset/
├── config.ini
└── Licenses.txt
Place it there as well.
Final layout after this step:
Game/
├── eldenring.exe
├── ersc_launcher.exe
├── dinput8.dll
├── mod_loader.ini
├── SeamlessCoop/
│ ├── ersc.dll
│ ├── ersc_settings.ini
│ └── locale/
│ └── english.json
└── mods/
├── CameraOffset.dll
└── CameraOffset/
└── config.ini
Open:
Game/SeamlessCoop/ersc_settings.ini
The minimum required configuration:
[PASSWORD]
cooppassword = your_password_hereThe password cannot be empty.
All players in the same session must use the same password.
Other relevant settings:
[GAMEPLAY]
allow_invaders = 1
death_debuffs = 1
allow_summons = 1
[SCALING]
enemy_health_scaling = 35
enemy_damage_scaling = 0
enemy_posture_scaling = 15
boss_health_scaling = 100
boss_damage_scaling = 0
boss_posture_scaling = 15Adjust according to preference.
The defaults are reasonable for cooperative play.
Open:
Game/mod_loader.ini
Typical default configuration:
[loader]
delay = 1000
delay-between-mods = 500
alert-on-errors = yes
show-console = no
target-executable = eldenring.exe
[modules]
mods/This tells ModLoader to:
- Wait 1000ms after the game starts before injecting.
- Scan the
mods/directory for DLL files. - Load each DLL found.
target-executable = eldenring.exe is important.
It tells ModLoader to only activate when the running process is eldenring.exe.
This prevents the loader from activating if ersc_launcher.exe itself loads dinput8.dll before passing control to the game.
delay = 1000 gives the game process time to initialize before DLL injection.
If mods fail to load, increasing this value may help:
delay = 2000Open Faugus.
Add a new game or edit the existing Elden Ring entry.
Point Faugus to ersc_launcher.exe, not eldenring.exe.
Example:
/mnt/SSD2/Juegos/Elden Ring/Game/ersc_launcher.exe
This is the critical difference.
Launching eldenring.exe directly will not activate Seamless Coop.
ersc_launcher.exe patches EAC and injects ersc.dll before the game starts.
Select GE-Proton latest from the dropdown.
Example:
GE-Proton9-27
Set the prefix to:
~/.local/share/Faugus/elden-ring
or whichever path Faugus uses for this game.
If this is a new game entry, Faugus will create the prefix automatically on first launch.
If a prefix already exists from a previous installation, use the same path to keep it.
No special launch options are required.
If performance tweaks are desired, common options include:
PROTON_USE_WINED3D=0 %command%
or gamescope wrappers, but these are optional.
Before launching with mods active, verify that the base game works.
ls "/mnt/SSD2/Juegos/Elden Ring/Game/"Expected files present:
eldenring.exe
ersc_launcher.exe
dinput8.dll
mod_loader.ini
SeamlessCoop/
mods/
grep cooppassword "/mnt/SSD2/Juegos/Elden Ring/Game/SeamlessCoop/ersc_settings.ini"Must not be empty.
ls "/mnt/SSD2/Juegos/Elden Ring/Game/mods/"Expected:
CameraOffset.dll
Click Play in Faugus.
The first launch may take longer than usual because:
- Proton initializes the prefix if it is new.
- DXVK/VKD3D compiles shader cache.
- Seamless Coop loads and initializes.
Wait at least 2-3 minutes before assuming failure.
Once in game:
- The Seamless Coop menu should be accessible from the main menu.
- Camera behavior should reflect the CameraOffset mod.
Understanding the load order helps when troubleshooting.
Faugus
|
calls GE-Proton with:
- STEAM_COMPAT_DATA_PATH = prefix path
- executable = ersc_launcher.exe
GE-Proton
|
reads prefix at ~/.local/share/Faugus/elden-ring/
|
sets up Wine environment
|
runs ersc_launcher.exe as a Windows process
ersc_launcher.exe
|
patches EAC detection in memory
|
starts eldenring.exe as a child process
|
injects SeamlessCoop/ersc.dll into eldenring.exe
eldenring.exe
|
searches game directory for DLLs
|
finds dinput8.dll
|
loads it
dinput8.dll (ModLoader)
|
reads mod_loader.ini
|
waits delay ms
|
scans mods/ directory
|
loads CameraOffset.dll
eldenring.exe
+ ersc.dll (Seamless Coop)
+ CameraOffset.dll (Camera mod)
Check that Faugus is pointing to ersc_launcher.exe and not eldenring.exe.
Check that the prefix path exists and is initialized.
If the prefix is new or corrupted:
rm -rf ~/.local/share/Faugus/elden-ringThen let Faugus recreate it on next launch.
Confirm ersc_launcher.exe is the launch target.
Confirm SeamlessCoop/ersc.dll exists:
ls "/mnt/SSD2/Juegos/Elden Ring/Game/SeamlessCoop/"Confirm the password is set:
grep cooppassword "/mnt/SSD2/Juegos/Elden Ring/Game/SeamlessCoop/ersc_settings.ini"Confirm dinput8.dll is in the game root:
ls "/mnt/SSD2/Juegos/Elden Ring/Game/dinput8.dll"Confirm mods/CameraOffset.dll exists:
ls "/mnt/SSD2/Juegos/Elden Ring/Game/mods/CameraOffset.dll"Check the ModLoader log generated after a launch:
cat "/mnt/SSD2/Juegos/Elden Ring/Game/mod_loader_eldenring.log"The log shows which DLLs were found and whether they loaded successfully.
Increase the ModLoader delay:
[loader]
delay = 2000The game may be initializing slower than expected.
This happens when:
- The prefix was created with a different Proton version.
- The prefix is partially initialized.
- Proton version was switched without recreating the prefix.
Solution:
mv ~/.local/share/Faugus/elden-ring ~/.local/share/Faugus/elden-ring.bakLet Faugus recreate it.
Expected on:
- First launch with a new prefix.
- First launch after a Proton version change.
- First launch after clearing shader cache.
Shader compilation can take several minutes on first run.
Subsequent launches will be faster once the cache is built.
If long startup persists after the first launch, check for DLL injection failures in the ModLoader log.
Confirm that ersc_launcher.exe is the launch target, not eldenring.exe directly.
ersc_launcher.exe patches EAC before starting the game.
Launching eldenring.exe directly will cause EAC to block the mod DLLs.
After any launch, ModLoader writes a log:
Game/mod_loader_eldenring.log
Read it:
cat "/mnt/SSD2/Juegos/Elden Ring/Game/mod_loader_eldenring.log"A successful load looks like:
[ModLoader] Scanning: mods/
[ModLoader] Loading: mods/CameraOffset.dll ... OK
A failed load:
[ModLoader] Loading: mods/CameraOffset.dll ... FAILED
To capture Proton output, launch from terminal.
In Faugus, if there is a terminal/log option, enable it.
Alternatively, set the environment variable before Faugus starts:
PROTON_LOG=1 faugus-launcherLogs will appear in:
~/.steam/logs/
or in the terminal output.
ls ~/.local/share/Faugus/elden-ring/pfx/Expected:
drive_c/
dosdevices/
system.reg
user.reg
If these files are missing, the prefix was not initialized correctly.
ls ~/.local/share/Steam/compatibilitytools.d/Confirm the expected GE-Proton version is present.
Before reporting a problem, verify each item:
[ ] Game directory contains eldenring.exe
[ ] ersc_launcher.exe is present in Game/
[ ] SeamlessCoop/ersc.dll is present
[ ] SeamlessCoop/ersc_settings.ini has a non-empty password
[ ] dinput8.dll is present in Game/ root
[ ] mod_loader.ini is present in Game/ root
[ ] mods/CameraOffset.dll is present
[ ] Faugus points to ersc_launcher.exe (not eldenring.exe)
[ ] Faugus uses GE-Proton
[ ] Prefix exists at configured path
[ ] mod_loader_eldenring.log shows successful DLL load
[ ] First launch waited at least 2-3 minutes
Faugus Launcher
|
v
GE-Proton
|
v
Proton prefix (~/.local/share/Faugus/elden-ring/)
|
v
ersc_launcher.exe
|
+--> EAC patch
|
v
eldenring.exe
|
+--> ersc.dll (Seamless Coop, injected by ersc_launcher)
|
+--> dinput8.dll (ModLoader)
|
v
mods/CameraOffset.dll
Steam is optional as a source for GE-Proton binaries.
The Steam client does not need to run.
The setup is portable and reproducible.