How to install ED on Linux using Wine [EXPERIMENTAL, NOT OFFICIALLY SUPPORTED]

OK so now compiled and running wine-3.19 ( Staging Esync PBA Dxvk ) on Arch and it's working fine.

One thing I'm wondering though - does the "Preparing Planet Generation System" stage always run for everyone else and does it seem to take an inordinate amount of time to complete?

Manjaro just had a wine staging update and using that executable instead of the lutris ones brought back the intro videos, so something is up/missing from the Lutris wine packages... maybe ffmpeg support?

I don't get the starting animation - just the static ED picture and the starting intro music, then it jumps to shader generation.
 
You can write install scripts which should be pretty easy to do, only issue is I don't know whether you can submit your own patched versions of wine to it or not.

By the way I've been seeing how the fps is in a expedition setting, not too bad:
What resolution are you playing at with that 1070, and on what CPU/RAM?
 
OK so now compiled and running wine-3.19 ( Staging Esync PBA Dxvk ) on Arch and it's working fine.

One thing I'm wondering though - does the "Preparing Planet Generation System" stage always run for everyone else and does it seem to take an inordinate amount of time to complete?

Yes and yes. Keep in mind that there's a double compilation going on here as the game is caching its shaders and in doing so is making dxvk translate them to Vulkan, so taking extra time is reasonable. I guess that dxvk's cache if it has one is not hit here, so it has to be done every time.

For those that are building their own wine binaries - attached is a patch that fixes the 'unfriendly device name' issue. I was able to build off the good work already done on here (namely the tip-off that it worked with native directinput8).

I'll submit it to the wine-devel mailing list and see how we go.

My friendly wine dev says it looks sensible, but points out that you're missing the Signed-off-by: tag on that patch on the list.
 
What resolution are you playing at with that 1070, and on what CPU/RAM?

1080p, on a R52600 with 16GB RAM.

In an expedition meetup environment it gets quite laggy regardless of system specs when everyone has their SRV's out so dips below 60 are expected however outside of meetups it can quite easily handle super sampling.

I expected my frame rate to literally melt down to the teens when playing through Wine on a meetup but this wasn't the case.
 
RedMcG, maybe you know this one. I compiled wine + staging 3.19 as previously, started to do all work with wine64, winetricks, full bang.

When I try to launch EDLaunch with wine64, I get this:

Unhandled Exception: System.TypeInitializationException: The type initializer for 'System.Windows.Application' threw an exception. ---> System.TypeInitializationException: The type initializer for '<Module>' threw an exception. ---> <CrtImplementationDetails>.ModuleLoadException: The C++ module failed to load during appdomain initialization.
---> System.DllNotFoundException: dwrite.dll or wpftxt_v0400.dll ---> System.ComponentModel.Win32Exception: Module not found
--- End of inner exception stack trace ---
at MS.Internal.NativeWPFDLLLoader.LoadCommonDLLsAndDwrite()
at ?A0x10095eb5.CreateCModuleInitialize()
at ?A0x10095eb5.??__E?A0x10095eb5@cmiStartupRunner@@YMXXZ()
at _initterm_m((fnptr)* pfbegin, (fnptr)* pfend)
at <CrtImplementationDetails>.LanguageSupport.InitializePerAppDomain(LanguageSupport* )
at <CrtImplementationDetails>.LanguageSupport.Initialize(LanguageSupport* )
--- End of inner exception stack trace ---
at <CrtImplementationDetails>.ThrowModuleLoadException(String errorMessage, Exception innerException)
at <CrtImplementationDetails>.LanguageSupport.Initialize(LanguageSupport* )
at .cctor()
--- End of inner exception stack trace ---
at System.Windows.Application.ApplicationInit()
--- End of inner exception stack trace ---
at System.Windows.Application..ctor()
at CobraBay.App.Main()

When I try to do it with wine, it launches, but complains about registry stuff as due removal of registry prefix in wine 3.19.

Any ideas?

EDIT: nevermind, it is when you skip steps you created by yourself. It seems now it is mandatory to switch to windows 7 after winetricks, otherwise wine64 EDLaunch.exe will fail like above.

Can confirm CRC error being gone (again, thanks RedMcG) and NormalizeString is fixed too with Wine 3.19. Quartz is not needed and videos are all playin.
 
Last edited:
I expected my frame rate to literally melt down to the teens when playing through Wine on a meetup but this wasn't the case.

It's been a little while since I experimented with Wine, but back when I did, MS Flight Simulator actually ran better in Wine than it did in Windows on the same hardware! At least it did for me. I suspect that's because I can run a very light desktop and easily disable most background processes in Linux that would compete with the game. This was before "Game Mode" was introduced to Windows, so perhaps that changes things..
 
It's been a little while since I experimented with Wine, but back when I did, MS Flight Simulator actually ran better in Wine than it did in Windows on the same hardware! At least it did for me. I suspect that's because I can run a very light desktop and easily disable most background processes in Linux that would compete with the game. This was before "Game Mode" was introduced to Windows, so perhaps that changes things..

Don't take this the wrong way, but we're trying to keep the signal to noise ratio in this technical thread high. The other 'Elite Dangerous on Linux' thread would be a better place for reminiscences. Thank you!
 
Back to what I said before about seeing an AMD user with this running on reddit, I've actually just seen an install script on Lutris by someone else claiming AMD still fails on horizons (there could be a better install script IMO as they are using unnecessary overrides). What they said:

Elite Dangerous, Arena and Training work flawlessly Elite Dangerous HORIZON with AMD gpu does not work yet. System freeze during Planet Shader generation (+-19%)

I'm wondering if there's someone with an AMD GPU that can confirm this?
 
Back to what I said before about seeing an AMD user with this running on reddit, I've actually just seen an install script on Lutris by someone else claiming AMD still fails on horizons (there could be a better install script IMO as they are using unnecessary overrides). What they said:



I'm wondering if there's someone with an AMD GPU that can confirm this?

Can confirm. RX 480, crashes about 16-19% when it's compiling the Horizons shaders. Tried upgrading to mesa-git 18.3 and that didn't work either.
 
Finally had a go at getting this working on my Linux install (OpenSUSE Leap 15).
I decided to use Lutris just because it means less messing around with repos and packages, I copied over my bindings from Windows and did a sed substitution for the keyboard id and that was all that was needed. I was surprised at how well the game runs to be honest.

I added a few settings in the lutris "system options"
Code:
WINEESYNC=1
DXVK_HUD=fps
__GL_SHADER_DISK_CACHE=1
__GL_SHADER_DISK_CACHE_PATH=/home/Cotic/Games/elite-dangerous
__GL_THREADED_OPTIMIZATIONS=1
__GL_SHADER_DISK_CACHE_SKIP_CLEANUP=0
 
I added a few settings in the lutris "system options"
Code:
__GL_SHADER_DISK_CACHE=1__GL_SHADER_DISK_CACHE_PATH=/home/Cotic/Games/elite-dangerous__GL_SHADER_DISK_CACHE_SKIP_CLEANUP=0
Do these options prevent the Horizons planetary surface cache rebuild on every game launch? How big is your cache directory? If the shader cache, converted to Vulkan, worked out bigger than the default 128MB, that could very well be the reason the cache is regenerated on every start for me. And I saw the DXVK author muttering darkly about FD's use of -funroll-all-loops in their shaders already...
 
Do these options prevent the Horizons planetary surface cache rebuild on every game launch? How big is your cache directory? If the shader cache, converted to Vulkan, worked out bigger than the default 128MB, that could very well be the reason the cache is regenerated on every start for me. And I saw the DXVK author muttering darkly about FD's use of -funroll-all-loops in their shaders already...

No, unfortunately they don't, the planetary shader cache runs at startup for me as well.
GLCache folder is currently sitting at 140.7MiB
 
EDIT: Solved by simply installing winehq-staging instead of winehq-devel. Sorry for the noise, hope this may help someone in the future. Original post follows.

Feeling stupid, getting the mscoree.dll error:

002e:err:module:fixup_imports_ilonly mscoree.dll not found, IL-only binary L"EDLaunch.exe" cannot be loaded
002e:err:module:attach_dlls Importing dlls for L"C:\\Frontier\\EDLaunch\\EDLaunch.exe" failed, status c0000135

I'm on Ubuntu 18.04 with winehq-devel (3.19)

I've tried both allowing and rejecting the initial mono/gecko request when initializing the prefix. I've also tried to reinstall the dotnet40 and dotnet452 after installing the ED launcher. Version is set to Windows 7.

In wincfg, in the libraries tab, it shows that mscoree.dll as "native".

Doing a find $prefix -iname 'mscoree.dll' has never found the file. I see in the winetricks output that this file is attempted to be deleted at some point before installing dotnet, not sure if this can be related:

Executing w_do_call dotnet452
Executing load_dotnet452
------------------------------------------------------
This package (dotnet452) may not fully work on a 64-bit installation. 32-bit prefixes may work better.
------------------------------------------------------
Executing cabextract -q -q -v
cabextract version 1.6
Executing w_do_call remove_mono
Executing load_remove_mono
------------------------------------------------------
Mono does not appear to be installed.
------------------------------------------------------
------------------------------------------------------
Working around wine bug 34803
------------------------------------------------------
reg: The system was unable to find the specified registry key or value
reg: The system was unable to find the specified registry key or value
The operation completed successfully
Executing rm -f /home/user/opt/elite-dangerous/dosdevices/c:/windows/system32/mscoree.dll
Executing rm -f /home/user/opt/elite-dangerous/dosdevices/c:/windows/syswow64/mscoree.dll
Executing w_do_call dotnet40
Executing load_dotnet40
------------------------------------------------------
This package (dotnet40) may not fully work on a 64-bit installation. 32-bit prefixes may work better.
------------------------------------------------------
------------------------------------------------------
dotnet40 does not yet fully work or install on wine. Caveat emptor.
------------------------------------------------------

All steps done per instructions in first post with wine64. Any ideas?
 
Last edited:
I've just installed into a new Prefix on Arch (Antergos) and I'm mostly there.
With wine 3.19 (from winehq) I get the mscoree.dll missing error like alejandor above.
With wine 3.19 (from winestaging.com) It works again, intro video works, log in, and start game is all good.
both using wine64 as in the first post.

But, my keyboard still doesn't work :(

not sure which direction to go in now... thoughts?

Cheers
 
I just rebuilt with wine-staging 3.19 from the wine debian package repository. I am using debian sid.

Following the instructions in the head post (except one bit: instruction number 2 has quartz in it, but that is not necessary anymore). I also added the dinput8 dll to fix the keyboard/mouse naming, pending wine 3.20 I hope.

Instruction list:
1. Make a file :
Code:
/etc/apt/sources.list.d/wine-staging.list
containing one line:
Code:
deb https://dl.winehq.org/wine-builds/debian/ buster main
2. Update and install wine staging (should be 3.19) and winetricks (should be 20180815 from buster):
Code:
apt update; apt install wine-staging winetricks
3. From #1 above, setup a new prefix (I like ~/ed, myself):
Code:
WINEPREFIX=~/ed /opt/wine-staging/bin/wine64 winecfg
4. From #2 above, install a bunch of stuff with winetricks (note! no quartz):
Code:
WINEPREFIX=~/ed WINE=/opt/wine-staging/bin/wine64 winetricks dotnet452 corefonts vcrun2012 dxvk
5. From #3 above, switch back to windows 7:
Code:
WINEPREFIX=~/ed /opt/wine-staging/bin/wine64 winecfg
5. From #4 above, install Elite Dangerous:
Code:
WINEPREFIX=~/ed /opt/wine-staging/bin/wine64 Downloads/EliteDangerous-Client-Installer.exe
- Personal note, I avoid installing in Program Files, I use c:\ed because it's a lot easier to find.
6. Force dinput8.dll - to fix keyboard and mouse stuffs:
Code:
WINEPREFIX=~/ed WINE=/opt/wine-staging/bin/wine64 winetricks dinput8
, you'll also need to find a proper 32bit? version of dinput8.dll from somewhere, because it seems winetricks can't install this properly. (This looks like it'll be fixed with wine 3.20 though, so YAY! for that). This is the sha1sums for all the dinput dlls after running winetricks and putting my found dll in place.
Code:
:~/ed/drive_c$ find . -name dinput* -exec sha1sum {} \;
b0a48ddb0acd757069cccc744f1fc23f368ce439  ./windows/syswow64/dinput.dll
f6fe732cdd2d620178a285a547e3d6629ff2f2ef  ./windows/syswow64/dinput8.dll
70cdda8b8f96464db17a7a91ee8d82bfc22231d4  ./windows/system32/dinput.dll
ba58a8e9f113cc4c949c2d7c6c28fad13d96dd37  ./windows/system32/dinput8.dll
Note that after running winetricks you will get a different sha1 sum for the windows/system32/dinput8.dll file. The one from winetricks doesn't seem to work.

7. Finally, you can run the game by doing this:
Code:
cd ~/ed/drive_c/ed; DXVK_HUD=fps WINEPREFIX=~/ed /opt/wine-staging/bin/wine64 ~+/EDLaunch.exe

Hope this helps other debian fans out there!
 
But, my keyboard still doesn't work :(
Cheers

There's a problem with the wine simulated dinput8 DLL in that it doesn't properly name devices as ED expects. This is fixed in the next version of wine, hopefully. In the meantime you can do "winetricks dinput8". Note that there seems to be a problem with just doing that - the DLL seems to be partly corrupted, but if you can find an alternative source of the DINPUT8.DLL file, it should work then.
 
Thanks for the heads up. I grabbed the dinput8.dll files from my Win10 install and replaced the ones installed by winetricks.

But now I'm getting this:

Code:
0098:err:module:import_dll Library api-ms-win-downlevel-kernel32-l1-1-0.dll (which is needed by L"C:\\windows\\system32\\DINPUT8.dll") not found

when trying to 'Play' the games ??? I copied that file over from Win10 but to no avail.

EDIT: Changed the overrides to (native,builtin) on dinput8.dll and we get into game again and the keyboard can be mapped to controls. It's not loading the default key bindings though; so everything is empty!

EDIT2: Well I've figured out why the bindings weren't loading; they're saved in a different location in wine that on Win10!

Code:
$PREFIX/drive_c/users/<username>/Local Settings/Application Data/Frontier Developments/Elite Dangerous/Options/Bindings

vice

C:/Users/<username>/AppData/Local/Frontier Developments/Elite Dangerous/Options/Bindings

Once I swapped out the Keyboard and Mouse references in the .binds file for the device IDs it all worked.

Guess we'll have to wait a little longer to get the correctly patched wine versions into the mainstream.

Thanks guys and girls for all your hard work in figuring this out! Very Much Appreciated :D

Now... onto Elite Dangerous Market Connector!!!

EDIT3: aaand hurrah EDMC Native client works with the game visit the GitHub and scroll down to the 'Running from Source' section of the README it's all there :) (for Antergos types, you have to install the python2 dependencies, not the python v3.7 which is the default)

Cheers
 
Last edited:
Back
Top Bottom