Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

ER-linux-setup

Elden Ring on Linux — Faugus + Proton-GE + Seamless Coop + ModLoader

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.exe for Seamless Coop.
  • dinput8.dll + ModLoader for DLL mods (CameraOffset).

ModEngine3 is not used. It is not needed for this setup.


Stack overview

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.

Table of contents

  1. Architecture overview
  2. Requirements
  3. Understanding Proton prefixes
  4. Directory layout
  5. Installing Seamless Coop
  6. Installing ModLoader and CameraOffset
  7. Configuring ersc_settings.ini
  8. Configuring mod_loader.ini
  9. Configuring Faugus Launcher
  10. First launch
  11. How the mod chain works
  12. Troubleshooting
  13. Diagnostics
  14. Final checklist

1. Architecture overview

This setup has three layers.

Layer 1: GE-Proton

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.


Layer 2: Proton prefix

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.

Layer 3: ersc_launcher.exe

ersc_launcher.exe is the official launcher for Seamless Coop.

It:

  • Patches the game process in memory to bypass EAC.
  • Starts eldenring.exe as a child process.
  • Loads ersc.dll into the game.

Because Faugus points directly to ersc_launcher.exe, Steam is not involved in launching the game.


Layer 4: ModLoader (dinput8.dll)

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.


The full chain

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

2. Requirements

Faugus Launcher

Faugus must be installed on the host.

This guide assumes Faugus is already installed and functional.


GE-Proton

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.


Elden Ring

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/

Seamless Coop

Download from the official Seamless Coop repository.

The release archive contains:

ersc_launcher.exe
SeamlessCoop/
├── ersc.dll
├── ersc_settings.ini
└── locale/
    └── english.json

ModLoader

Download ModLoader for Elden Ring.

The release contains at minimum:

dinput8.dll
mod_loader.ini

CameraOffset

Download the CameraOffset mod DLL.

The release contains at minimum:

CameraOffset.dll

3. Understanding Proton prefixes

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.


4. Directory layout

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/

5. Installing Seamless Coop

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.


6. Installing ModLoader and CameraOffset

ModLoader

Extract the ModLoader archive.

Copy into the game directory:

dinput8.dll     --> Game/dinput8.dll
mod_loader.ini  --> Game/mod_loader.ini

CameraOffset

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

7. Configuring ersc_settings.ini

Open:

Game/SeamlessCoop/ersc_settings.ini

The minimum required configuration:

[PASSWORD]
cooppassword = your_password_here

The 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 = 15

Adjust according to preference.

The defaults are reasonable for cooperative play.


8. Configuring mod_loader.ini

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 = 2000

9. Configuring Faugus Launcher

Open Faugus.

Add a new game or edit the existing Elden Ring entry.


Executable

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.


Proton version

Select GE-Proton latest from the dropdown.

Example:

GE-Proton9-27

Prefix

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.


Launch options

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.


10. First launch

Before launching with mods active, verify that the base game works.

Step 1: Verify game directory structure

ls "/mnt/SSD2/Juegos/Elden Ring/Game/"

Expected files present:

eldenring.exe
ersc_launcher.exe
dinput8.dll
mod_loader.ini
SeamlessCoop/
mods/

Step 2: Verify ersc_settings.ini has a password

grep cooppassword "/mnt/SSD2/Juegos/Elden Ring/Game/SeamlessCoop/ersc_settings.ini"

Must not be empty.


Step 3: Verify mods directory contains the DLL

ls "/mnt/SSD2/Juegos/Elden Ring/Game/mods/"

Expected:

CameraOffset.dll

Step 4: Launch via Faugus

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.


Step 5: Verify in-game

Once in game:

  • The Seamless Coop menu should be accessible from the main menu.
  • Camera behavior should reflect the CameraOffset mod.

11. How the mod chain works

Understanding the load order helps when troubleshooting.

Step 1: Faugus invokes GE-Proton

Faugus
    |
    calls GE-Proton with:
    - STEAM_COMPAT_DATA_PATH = prefix path
    - executable = ersc_launcher.exe

Step 2: GE-Proton initializes the prefix

GE-Proton
    |
    reads prefix at ~/.local/share/Faugus/elden-ring/
    |
    sets up Wine environment
    |
    runs ersc_launcher.exe as a Windows process

Step 3: ersc_launcher.exe starts

ersc_launcher.exe
    |
    patches EAC detection in memory
    |
    starts eldenring.exe as a child process
    |
    injects SeamlessCoop/ersc.dll into eldenring.exe

Step 4: eldenring.exe loads

eldenring.exe
    |
    searches game directory for DLLs
    |
    finds dinput8.dll
    |
    loads it

Step 5: ModLoader activates

dinput8.dll (ModLoader)
    |
    reads mod_loader.ini
    |
    waits delay ms
    |
    scans mods/ directory
    |
    loads CameraOffset.dll

Step 6: All mods active

eldenring.exe
    + ersc.dll         (Seamless Coop)
    + CameraOffset.dll (Camera mod)

12. Troubleshooting


Game does not start

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-ring

Then let Faugus recreate it on next launch.


Seamless Coop menu does not appear

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"

CameraOffset does not work

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.


Game launches but mods do not load

Increase the ModLoader delay:

[loader]
delay = 2000

The game may be initializing slower than expected.


Prefix has an invalid version error

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.bak

Let Faugus recreate it.


Long startup time (over 60 seconds)

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.


EAC-related crash

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.


13. Diagnostics

ModLoader log

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

Proton/Wine logs

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-launcher

Logs will appear in:

~/.steam/logs/

or in the terminal output.


Verify prefix integrity

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.


Check GE-Proton version

ls ~/.local/share/Steam/compatibilitytools.d/

Confirm the expected GE-Proton version is present.


14. Final checklist

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

Final architecture

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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors