Steam Deck - Getting Started
Notes on getting Elite Dangerous set up well on a Steam Deck, plus the companion tools I run alongside it.
EDCoLauncher (running EDCoPilot + EDCoPTER on Proton)
EDCoPilot and EDCoPTER are Windows tools, so they need help to run under Proton on the Deck. I’m using EDCoLauncher for that — a bash script that automates fetching, installing, and launching both add-ons inside the game’s Proton prefix.
Rough setup:
- Download the latest EDCoLauncher release and extract it.
- Edit the
EDCoLauncher_configfile — this is where you toggle which add-ons are enabled, set detection timeouts, and flip on first-time install. - Make the script executable and drop both files (
EDCoLauncher.sh+ config) into the Elite Dangerous Steam install directory root. - Set it as a Steam launch option:
STEAM_COMPAT_LAUNCHER_SERVICE=container-runtime %command% & ./EDCoLauncher.sh
The EDCoLauncher README doesn’t call out Steam Deck specifically — it targets Proton 10.0-3 in general. Worth double-checking the Deck’s current Proton version against that if something doesn’t launch.
Journal files
Elite Dangerous’s Journal files (what every companion tool reads to know what you’re doing in-game) live under the Proton prefix here:
~/.steam/steam/steamapps/compatdata/359320/pfx/drive_c/users/steamuser/Saved Games/Frontier Developments/Elite Dangerous
(or ~/.local/share/Steam/... instead of ~/.steam/steam/... depending on how Steam’s installed).
Running a materials tool on my Mac
Decided: Odyssey Materials Helper over EDEngineer. EDEngineer is Windows-only and archived (no longer maintained as of mid-2025). Odyssey Materials Helper is a JavaFX app with actual cross-platform releases — its 3.13.9 release ships edomh-3.13.9.auto-updater.macos.arm64.dmg and a portable arm64 .zip, which covers my Mac (Apple Silicon). Note: arm64 only, no Intel Mac build.
The tool runs on the Mac; the Journal stays on the Deck. Plan is Syncthing to bridge the two:
- On the Deck: install Syncthing from Discover (it’s on Flathub), point it at the Journal folder from the path above.
- On the Mac:
brew install --cask syncthing-app— this is the native menu-bar wrapper, not just the baresyncthingservice. - Pair the two via Syncthing’s device IDs, share the Journal folder Deck → Mac (one-way, receive-only on the Mac side so nothing ever writes back into the Deck’s live Journal).
- Point Odyssey Materials Helper at the local synced copy on the Mac.
Open question: whether the Mac-side tool chokes on reading the Journal mid-sync while the game is actively appending to it on the Deck — haven’t tested yet.
Troubleshooting: keybindings resetting on restart
Still investigating — EDCoPilot occasionally complains about missing keybindings, and I’ve had to re-set bindings after a restart. Not 100% sure yet if this is a Proton/Deck thing or just how Elite Dangerous bindings always work. Notes so far:
- Elite Dangerous’s control categories (General, Ship/Flight, SRV, On-Foot) each remember their own bound preset independently — editing bindings in one category doesn’t apply to the others. If a category still points at a default/device preset instead of your custom one, that’s enough to make EDCoPilot think bindings are “missing.” (source)
- The game only loads your custom binds file if every device referenced in it is detected at launch. If a device is missing at startup, ED silently falls back to a default preset for the affected categories — and if you edit anything while in that fallback state, it can overwrite your real custom bindings. There’s a
BindingLoadingErrors.lognext to the binds file that names the device that tripped this — worth checking next time it happens. - The Deck doesn’t support suspending Elite Dangerous — resuming from sleep disconnects from the server and forces a full relaunch. So every “restart” is really a cold start, which is exactly when device-detection issues like the one above would bite.
- EDCoPilot only reads keyboard key bindings — a bind mapped to a controller or mouse button doesn’t count, and will show up as “missing” to it even though it’s actually bound.
- EDCoPilot also seems to want all four control categories on the same keybind preset — a mismatch between categories is a separate known cause of its “missing” complaints, on any platform.
Next time it happens: check BindingLoadingErrors.log, and check whether all four binding categories are on the same custom preset before touching anything.