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

Got it set up yesterday with this the only change I made after testing it for a bit as this video states
-- to fix the controls (keyboard - controller) was i changed the wine version. To tkg-3.19-x86_64 left everything else as is. Works great no big issues as of yet i had a few matchmaking bubs but i kinda blame my internet for that since i had them on windows 10 as well. by the way i'm using:
Operating System: KDE neon 5.14
KDE Plasma Version: 5.14.3
Qt Version: 5.11.2
KDE Frameworks Version: 5.52.0
Kernel Version: 4.15.0-39-generic

And i dropped back to my original GTX980 as in other stuff i was having issues before. the 1080 will sit on the shelf tell i can debug a bit.

An just in case your wondering why i'm on Linux for gaming now, Windows decided to in the last update delete it's %AppData% folder which is the location of the start menu win10 control panel proper display resolutions, search in the normal file explorer... just a ton of stuff an this was on a fresh format an install. an after a reinstall after that it happened again so as before windows is dead to me. Long live linux an macOS.

My video is now a few weeks old now, all that's required now with latest wine staging is using wine64.

I actually submitted a script to Lutris that does all the installing bar fixing the CRC issue (in the unpublished section): https://lutris.net/games/elite-dangerous/

All that's required for that is changing to wine64 via using a custom runner after install.
 
I've been looking in to dinput (and xinput) as I had issues with my controller under Wine (but it worked fine with Proton).

Proton adds HID entries with genuine VID and PID where as Wine masquerades your device as an XBOX controller (presumable because the XBOX controller has greater game support). But it seems Elite Dangerous iterates the devices in dinput and will only defer to xinput if you have an entry with the same VID and PID. Which is why it worked in Proton but not under Wine. I've attached a patch for this too (it'll be useful for anyone using a controller).

This patch will make it in to Wine 3.21 - so the controller should now work as expected.
 
Hello evrevone.
So, I share with you my experience.
I tried to run ED with custom Proton from RedMcG on Ubuntu 18.04 with latest Nvidia drivers (415.18).
Install Steam -> Install ED -> install dotnet40 through protontricks -> change proton version to custom build of RedMcG in Steam.
It crushed with rundll32 error. I tried any version of dotnet and it even runs one time, but after that it was always rundll error. Maybe protontricks have problems with installing dotnet...
But installation steps from first message works, at least, the training started and was even a good FPS.
Will try Lutris and hope that someday Frontier make Linux version.

Also, I try install dotnet40 through proton tricks on custom proton, and got error, about unidentified proton version.
 
Hello evrevone.
So, I share with you my experience.
I tried to run ED with custom Proton from RedMcG on Ubuntu 18.04 with latest Nvidia drivers (415.18).
Install Steam -> Install ED -> install dotnet40 through protontricks -> change proton version to custom build of RedMcG in Steam.
It crushed with rundll32 error. I tried any version of dotnet and it even runs one time, but after that it was always rundll error. Maybe protontricks have problems with installing dotnet...
But installation steps from first message works, at least, the training started and was even a good FPS.
Will try Lutris and hope that someday Frontier make Linux version.

Also, I try install dotnet40 through proton tricks on custom proton, and got error, about unidentified proton version.

I use Ubuntu 18.04 - so hopefully I can help. I'm aware of one issue that causes trouble with dotnet40 installation; and that is with file descriptor limits. Have a look here:
https://github.com/ValveSoftware/Proton/wiki/Requirements#fd-limit-requirements

The only other two issues I'm aware of are:
1. You need to have the winbind package installed; and
2. You need to have IPv6 enabled.

If none of those suggestions help you may need to post a screenshot of the error or a log.
 
I use Ubuntu 18.04 - so hopefully I can help. I'm aware of one issue that causes trouble with dotnet40 installation; and that is with file descriptor limits. Have a look here:
https://github.com/ValveSoftware/Proton/wiki/Requirements#fd-limit-requirements

The only other two issues I'm aware of are:
1. You need to have the winbind package installed; and
2. You need to have IPv6 enabled.

If none of those suggestions help you may need to post a screenshot of the error or a log.

Thank you. I tried it, but it didn't help.
Here is my log, but it's kinda big...
https://ufile.io/u0wt8

Rundll32 error just says:
"This application could not be started"

It's not really bothers me, bacause i have Win10 on second drive, so if you really want to check it out, be my guest)
Also, I could messed up something... So I can try reinstall it or try other distro just for test, if it needed.

Anyway thank you for you work. And great that FD now know that there is some entusiast here, which needed Linux version.
 
Thank you. I tried it, but it didn't help.
Here is my log, but it's kinda big...
https://ufile.io/u0wt8

Rundll32 error just says:
"This application could not be started"

It's not really bothers me, bacause i have Win10 on second drive, so if you really want to check it out, be my guest)
Also, I could messed up something... So I can try reinstall it or try other distro just for test, if it needed.

Anyway thank you for you work. And great that FD now know that there is some entusiast here, which needed Linux version.

If I grep your log for 'Failed to load module' I find:
Code:
15522.100:000c:000d:warn:module:load_dll Failed to load module L"C:\\windows\\system32\\winemenubuilder.exe"; status=c0000135
15522.323:0011:0017:warn:module:load_dll Failed to load module L"msidle.dll"; status=c0000135
15522.409:0019:001d:warn:module:load_dll Failed to load module L"msidle.dll"; status=c0000135
15522.877:0008:0009:warn:module:load_dll Failed to load module L"C:\\windows\\Microsoft.NET\\Framework64\\v4.0\\clr.dll"; status=c0000135
15522.898:0008:0009:warn:module:load_dll Failed to load module L"C:\\windows\\Microsoft.NET\\Framework64\\v4.0.30319\\mscoree.dll"; status=c0000135
15523.189:0008:0009:warn:module:load_dll Failed to load module L"C:\\windows\\Microsoft.Net\\assembly\\GAC_64\\PresentationCore\\v4.0_4.0.0.0__31bf3856ad364e35\\MSVCR120_CLR0400.dll"; status=c0000135
15523.414:0008:0009:warn:module:load_dll Failed to load module L"C:\\windows\\Microsoft.NET\\Framework64\\v4.0.30319\\en-US\\mscorrc.dll"; status=c0000135
15523.415:0008:0009:warn:module:load_dll Failed to load module L"C:\\windows\\Microsoft.NET\\Framework64\\v4.0.30319\\en\\mscorrc.dll"; status=c0000135

so it certainly looks like dotnet did not install correctly.

Double check your file descriptor limit is now OK with:
ulimit -n

I have mine set to 65536 so it should probably be that at least (I think the default is 1024).

If that is OK - I would delete your prefix and retry the install of dotnet again. The prefix on your machine looks to be at:
~/.local/share/Steam/steamapps/compatdata/359320/pfx

If protontricks is having problems - you can also use winetricks with:
WINEPREFIX=~/.local/share/Steam/steamapps/compatdata/359320/pfx winetricks dotnet40


Edit:
Actually - I just checked my own logs and they have much the same thing.

The difference is that in your log I can see the following .NET Exception:
Code:
System.TypeInitializationException: The type initializer for 'System.Windows.Application' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Windows.Navigation.BaseUriHelper' threw an exception. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Windows.Navigation.BaseUriHelper..cctor()
   --- End of inner exception stack trace ---
   at System.Windows.Application.ApplicationInit()
   at System.Windows.Application..cctor()
   --- End of inner exception stack trace ---
   at System.Windows.Application..ctor()
   at CobraBay.App.Main()

Which I can see is raised here:
Code:
15523.415:0008:0009:warn:module:load_dll Failed to load module L"C:\\windows\\Microsoft.NET\\Framework64\\v4.0.30319\\en\\mscorrc.dll"; status=c0000135
15523.415:0008:0009:trace:module:LdrGetDllHandle L"C:\\windows\\Microsoft.NET\\Framework64\\v4.0.30319\\mscorrc.dll" -> (nil) (load path L"Z:\\home\\relatio\\.local\\share\\Steam\\steamapps\\common\\Eli
te Dangerous;C:\\Program Files (x86)\\Steam;C:\\windows\\system32;C:\\windows\\system;C:\\windows;.;C:\\windows\\system32;C:\\windows;C:\\windows\\system32\\wbem")
15523.415:0008:0009:fixme:advapi:RegisterEventSourceW ((null),L".NET Runtime"): stub
15523.415:0008:0009:fixme:advapi:ReportEventW (0xcafe4242,0x0001,0x0000,0x00000402,(nil),0x0001,0x00000000,0x22c490,(nil)): stub
15523.415:0008:0009:err:eventlog:ReportEventW L"Application: EDLaunch.exe\nFramework Version: v4.0.30319\nDescription: The process was terminated due to an unhandled exception.\nException Info: System.N
ullReferenceException\n   at System.Windows.Navigation.BaseUriHelper..cctor()\n\nException Info: System.TypeInitializationException\n   at System.W"...

So I thought the failed to load mscorrc.dll error message and the .NET exception were related - but I have the same failed to load mscorrc.dll error message in my log; so I might be wrong.

I've seen this error before - but unfortunately I don't recall the solution. I'll keep thinking.
 
Last edited:
"This application could not be started" happens every time I update Wine. However I just press Ok or Cancel and move on and launcher eventually loads.
 
I wasn't able to recreate the issue but I did have a prefix on my old hard drive which has the issue. So it is definitely prefix related.

My theory is that an older version of proton didn't install dotnet correctly for 64-bit (as in my prefix it works with 'wine' but not 'wine64').

I would try the following:
1. Remove your existing prefix (rm -rf ~/.local/share/Steam/steamapps/compatdata/359320)
2. Select 'Proton 3.16-4 Beta' from the 'Steam Play' options within Steam (and restart Steam)
3. Run Elite Dangerous from within Steam (it should install DirectX and the VC runtime etc. before silently exiting)
4. Confirm protontricks will use 'Proton 3.16' by running: ./protontricks -s 'Elite Dangerous'. It should say:
[INFO] Found active Proton installation: Proton 3.16
5. Install dotnet40 with ./protontricks 359320 dotnet40
6. Try Elite Dangerous again - this time it should get to the launcher
7. Select 'Proton 3.16-4 Beta ED' from the 'Steam Play' options within Steam (and restart Steam)
8. See if you can't enjoy Elite Dangerous from within SteamPlay
 
Something I noticed today while trying to capture some beauty screenshots (https://imgur.com/a2JEAf4) is that the screenshot keybinding is behaving slightly oddly. To capture the "high quality" screenshot (Alt+f10 I believe) - it sometimes works, sometimes does not. F10 on it's own works fine, but the combo only seems to work in the external camera mode, and only sometimes. I've noticed I can get it to work by opening then closing the keybindings options screen.

Also, the hi res screenshot capture is a bit derpy (possibly a dxvk thing?) it flits between about sixteen zoomed views to capture the high res screenshot. I know that internally it's using a mosaic to generate the screenshot, but I thought that was hidden from the user, but I haven't done this in a long while, so maybe not?

Also, to echo the people above: yes I get rundll32 errors when my prefix changes - it hasn't caused me any significant difficulty running the game, however. I think it might be related to the lack of the browser components in my prefix, personally.
 
Just a reminder that Linux is not an officially supported platform, and we are currently investigating these issues. We wanted to let you know so you don't too much time on something that we can not support, and that could potentially change.

Hello Mr. Lewis,

Thank you for this information.
Please Frontier developers, do cooperate with Linux developers, in particular with those from Wine and Valve, to remove all technical problems when running Elite Dangerous on Linux.

(A native Linux version would be even better, of course. Would also underline Mr. David Braben's founding efforts of the Raspbian Pi running Debian Linux. But one step after the other.)

Thanks to all the Linux users and developers who contributed to make Elite Dangerous run on Linux via Wine and Proton.

When I read in this thread that since the end of last month it's possible to run Elite Dangerous on Linux without too much trouble, I now purchased two Elite Dangerous accounts.

As a Linux-only user I wanted to play Elite Dangerous for a long time, but only now it seems to be possible, so I now purchased the game twice for family network-play.

Greetings!
 
"This application could not be started" happens every time I update Wine. However I just press Ok or Cancel and move on and launcher eventually loads.

Also, to echo the people above: yes I get rundll32 errors when my prefix changes - it hasn't caused me any significant difficulty running the game, however. I think it might be related to the lack of the browser components in my prefix, personally.

On my working prefix, the rundll32 error looks like this:
7TVL3Ml.png

I just click OK and it all continues.

On the prefix with this .NET error it looks like this:
JRui9Sy.png

with 'wine' I click 'No' and it continues but with 'wine64' it ends in the following crash (with the .NET exception in the logs):
Y0FuURF.png

Do you guys see the second version of the rundll32 error - or only the first?
 
I wasn't able to recreate the issue but I did have a prefix on my old hard drive which has the issue. So it is definitely prefix related.

My theory is that an older version of proton didn't install dotnet correctly for 64-bit (as in my prefix it works with 'wine' but not 'wine64').

I would try the following:
1. Remove your existing prefix (rm -rf ~/.local/share/Steam/steamapps/compatdata/359320)
2. Select 'Proton 3.16-4 Beta' from the 'Steam Play' options within Steam (and restart Steam)
3. Run Elite Dangerous from within Steam (it should install DirectX and the VC runtime etc. before silently exiting)
4. Confirm protontricks will use 'Proton 3.16' by running: ./protontricks -s 'Elite Dangerous'. It should say:
[INFO] Found active Proton installation: Proton 3.16
5. Install dotnet40 with ./protontricks 359320 dotnet40
6. Try Elite Dangerous again - this time it should get to the launcher
7. Select 'Proton 3.16-4 Beta ED' from the 'Steam Play' options within Steam (and restart Steam)
8. See if you can't enjoy Elite Dangerous from within SteamPlay

Hi, I've just tried this procedure and got two error message, one each time I've tried to launch Elite following your guide :

Step 6. Try Elite Dangerous again - this time it should get to the launcher

I get this error message :
60f06b5b9cb3dfb6cb831bb257c062af6b27740d.png


and the launcher never appear.

I proceeded to step 8 and tried Elite Dangerous but I get the same error (no rundll32 error).

Can someone shine some light on this issue please ?

Nevertheless, thank you a lot for your work RedMcG !
 
I see the second version, but when running with wine64, and everything carries on fine. This ONLY happens when I change wine versions in some way in my prefix, to note.
 
I've found that I've had to create a new prefix if updating/building a new version of WINE - to me it looks like some wine dll's don't get updated or not properly updated, if you try to update the existing prefix. This manifested itself when I was trying to get an existing prefix working on my debian testing install and it kept exhibiting the same problem (ed launcher not running) even after building/upgrading to a different version of wine.

Doesn't take too long to create a new prefix, winetricks, install EDLaunch, move/copy game files over from old to new anyway. The new prefix worked after that. Perhaps though the old prefix was too b0rked to save, and I've misled myself in thinking the above, so there is that.
 
Do you want to do headtracking, with ED, Linux and an old smartphone? You can :D

If you have an old "smartphone" lying around, you can build and install opentrack from here: https://github.com/opentrack/opentrack (git clone; cd opentrack; mkdir build; cd build; cmake ..; make; make install) - you'll need libevdev-dev and a bunch of qt5 dev libs available, but it builds pretty smoothly.

Grab the APK file and otherwise follow these instructions to get opentrack + smartphone setup (https://github.com/opentrack/opentrack/wiki/Smartphone-Headtracking).

To get it working under wine is a bit of a fiddle: you need to run the syswow64/control.exe to open the "wine control panel" and edit the game controllers there. You'll see two for "opentrack" : opentrack (event) and opentrack (js). Disable the opentrack (event) one - otherwise ED crashes (I suspect a wine bug?). Enable the opentrack (js) one. You have to keep closing and reopening this panel each time, but hopefully at the end you'll have opentrack(js) as the ONLY enabled "joystick" for opentrack.

Then launch game, and setup the ED headlook for the virtual joystick you just added (Make sure to use direct!). Voila, headlook for $0 :D
 
Hi, I've just tried this procedure and got two error message, one each time I've tried to launch Elite following your guide :

Step 6. Try Elite Dangerous again - this time it should get to the launcher

I get this error message :


and the launcher never appear.

I proceeded to step 8 and tried Elite Dangerous but I get the same error (no rundll32 error).

Can someone shine some light on this issue please ?

Nevertheless, thank you a lot for your work RedMcG !

You need to change mode in winecfg back to win7.
 
You need to change mode in winecfg back to win7.

You can also set it to win7 with protontricks via: ./protontricks 359320 win7

I've never seen that error before so hopefully that works. If it does I'll update the install instructions I've started on GitHub to include that step.

While running "protontricks 359320 win7" I got two rundll32.exe errors. I tried to play Elite right away but the launcher was buggy as hell and I got a black screen instead of the game.
So I rebooted and voilà !
The game run now flawlessly, no rundll32.exe error, nothing, it run as well as on windows performance wise !

Thank you so much for your help !!
 
While running "protontricks 359320 win7" I got two rundll32.exe errors. I tried to play Elite right away but the launcher was buggy as hell and I got a black screen instead of the game.
So I rebooted and voilà !
The game run now flawlessly, no rundll32.exe error, nothing, it run as well as on windows performance wise !

Thank you so much for your help !!

Excellent! That's good to hear - and thanks for reporting back. I've updated the instructions on GitHub accordingly - hopefully it'll help someone else.
 
Back
Top Bottom