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

Update on VR: No more doublevision. It seems valve updated the steamvr beta for linux.
At default supersampling (190%) I got 1fps and had to kill the process. I set the override in steamvr to 52% to be just above native HMD resolution and it performed fine that way.


I've also been looking into the controller problem with proton.

I spent a lot of time trying to find a way to disable the effects of "SDL_GAMECONTROLLERCONFIG"... nothing I tried worked.

Checking the environment using: xargs --null --max-args=1 echo < /proc/(edprocid)/environ
... buttons are hijacked both with and without SDL_GAMECONTROLLERCONFIG listed. Launched from steam lists it, launched with the script I got for launching the game with proton a while back does not list it.

Setting launch options in steam: SDL_GAMECONTROLLERCONFIG=030000006d04000018c2000010010000,wingman2, %command%
Game no longer receives any input at all.

Delete/rename: controller_configuration.vdf (this is deep in the steam folder)
Caused steam to no longer start edlaunch.


After all this, it appears to me that Proton is trying to force the use of xinput. This I believe is the root of the problem. My controller works better with ED as a generic directinput controller. I have yet to find a way to completely disable use of xinput by Proton.


I also tried to get ED working with plain wine again, but no luck. HardwareIdentifier.exe fails saying dotnet is not installed... I wanted to test in plain wine again because back when I had it working, I had zero controller problems. I wanted to make sure that was still true.


Ooh, thought of something else to search and try, this launch option: SDL_HINT_XINPUT_ENABLED=0 %command%
And..... nope. Button9 is still being hijacked as "start".

[sad]

I give up for today. Anybody got any ideas?
 
Last edited:
From observation, I've noticed that the higher your frames per second, the better the game performs UI-wise - as if certain in-game operations are tied to the graphics refresh rate (for example, during FSS scanning, calculating volcanic PoI's of a landable planet in the background seems to go much faster the higher your FPS).

Certain events/actions seem to take a fixed number of frames, so higher frame rates accomplish them faster.
 
Since I've not seen any information on how the game client works, I can only guess at some things via observation..

From observation, I've noticed that the higher your frames per second, the better the game performs UI-wise - as if certain in-game operations are tied to the graphics refresh rate (for example, during FSS scanning, calculating volcanic PoI's of a landable planet in the background seems to go much faster the higher your FPS).

This is also the case for your CPU - the ED game client is constantly performing a number of operations in parallel in the background, for example, at starports; keeping track of NPC ships (spawning them, 'flying' them in and out of the airlock, landing at pads, taking off from pads. Maintaining communication with game server backend. Updating the game graphics. Serving information when needed during UI/HUD requests. Peer-to-peer communications if you're in the Open or Private Group client connectivity modes. And a whole host of other things.

So, it's not just gpu performance. It's a combination of GPU performance, GPU video ram, CPU performance/speed/cores, How much RAM your system has, even how many other programs are running on your system at the same time, as each thing running on your PC demands use of a CPU core when required. The quality of your internet connection is another factor.

And each of the above is the same whether you're running the game on Windows or Linux.

Given the above, which isn't even everything the game client has to do, it's somewhat of a small miracle that the game even works the way it does, and is a testament to the brilliant FDEV coders :)
I see. Thanks for the information.
By the way: you too do experience occasional performance drops inside space stations, for example by seeing the build-up of the screen going slow and having to click more than once on a button before it reacts?
 
Last edited:
Wanted to just quickly dip in and add that Nvidia *finally* fixed compute shaders regression that caused big disformations on ice planets on Windows (418.81 driver). It is worth to look after when Linux driver update lands if that fixes those issues we had with Engineer bases being sunk into the ground.
 
Wait, so there weren't giant bases in the center of old dead valcanos... 8\

They need to add that.
 
Last edited:
My joystick Logitech Extreme 3D Pro in the game is defined as a regular gamepad. The same joystick works correctly in X3 Reniuon under Ubuntu. The wine control utility also correctly identifies this device.
 
Some news on Wine; bug 46208 has been fixed:
https://bugs.winehq.org/show_bug.cgi?id=46208

This means from 4.2, the futex patch from wine staging will no longer be required. However, wine staging will still be required for the NormalizeString functionality (required for Keyboard functionality).

I also found a bug introduced in 4.1. If you are using an Intel CPU, the registry value of PROCESSOR_ARCHITECTURE is set incorrectly. This results in the launcher only offering the demo (as it thinks your machine is 32-bit). I have submitted a fix to the mailing list.

For now, the work-around is to fix the PROCESSOR_ARCHITECTURE value manually (it should be "AMD64"). Or to avoid 4.1.

Also - an observation I thought I'd share: if you launch ED with the '/steam' option (for example: 'wine64 EDLaunch /novr /steam') - then the launcher will display correctly (as in the launcher glitches don't occur). So that's odd.
 
I give up for today. Anybody got any ideas?

Can you confirm you're using a F510 Gamepad (in XInput mode)? Looking up VID 046d and PID c218 (extracted from your SDL_GAMECONTROLLERCONFIG) in the SDL2 source code - I found the value used is:
Code:
030000006d0400001ec2000020200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,

Maybe try that?

If that doesn't help, confirm your devices VID and PID with lsusb. For example, here's my output (VID=046d, PID=c21d):
Code:
$ lsusb | grep Gamepad
Bus 002 Device 007: ID 046d:c21d Logitech, Inc. F310 Gamepad [XInput Mode]
 
My joystick Logitech Extreme 3D Pro in the game is defined as a regular gamepad. The same joystick works correctly in X3 Reniuon under Ubuntu. The wine control utility also correctly identifies this device.

Can you advise which version of Wine you are running?

I was trying to help another user with that same device (with the same issue you're facing). If you want to follow the entire conversation with the other user, it begins here and finishes here. I'm not sure if they managed to solve it or not (they never reported back).

But to try to summarise the issue; ED performs the logic described here:
https://docs.microsoft.com/en-us/wi...rectinput#xinput-and-directinput-side-by-side

dinput devices are what is shown by `wine64 control joy.cpl`. Controllers work in both dinput and xinput (xinput is only for controllers) - so ED won't talk to a device via dinput if it has an 'IG_' registry entry (as described in that link). It'll use xinput instead.

winebus (responsible for configuring the device in wine) seems to incorrectly configure that device as a controller (presumably because SDL tells it to do so). It will also recreate the entries every-time you start-up wineserver - so I'd try the following:
1. Ignore SDLs advice by setting 'Map Controllers' off (with: wine64 reg add 'HKLM\System\CurrentControlSet\Services\WineBus' /v 'Map Controllers' /t REG_DWORD /d 0 /f); and
2. Delete all registry entries with your PID and VID (i.e. look in system.reg and remove any line with VID_046D&PID_C215)

The next time you start - winebus should recreate only 'IM_' entries and ED should talk to your device via dinput (i.e. as a joystick).

If there are still issues, then it'll help if you add '+plugplay' to WINEDEBUG and provide your log.
 
Thank very much!!! Success!

The first step was to disable the Map Controller by executing the command "wine64 reg add 'HKLM \ System \ CurrentControlSet \ Services \ WineBus' / v 'Map Controllers' / t REG_DWORD / d 0 / f)".

There were no lines in the registry with "VID_046D & PID_C215". After launch, the joystick was still defined as a gamepad. Then I disabled the registry key "Enable SDL" (wine64 reg add 'HKLM \ System \ CurrentControlSet \ Services \ WineBus' / v 'Enable SDL' / t REG_DWORD / d 0 / f) (post #569).

After that, the registry line appeared with "VID_046D & PID_C215". But the most important thing is that in ED the joystick has finally become a joystick :) All axes and buttons work as expected.

My wine-staging version is 4.1. OS - Ubuntu 16.04 (64)
 
I've not been having any luck getting Elite working (despite it being fine previously on ElementaryOS). I've got a few SSDs and have been trying various distros, ie VoidLinux, Manjaro, Pop_OS and ElementaryOS.

All of them run into an error after entering my username/password, a small window pops up with the title of "Machine Indentifier.exe - .NET Framework Initializ..." and states "Unable to find a version of the runtime for this application".

I've tried various versions of wine, compiled 4.0 on VoidLinux, tkg-3.21 and tkg-4.0 via lutris and also tried both dotnet40 or dotnet452 but nothing seems to work. Any suggestions for what I should be looking at?
 
On the issue of frame rates, I've seen a certain inconsistency in that, without touching settings, sometimes the game runs smoothly at 30fps (capped) whereas others it's around 22fps (for my low-end gpu). It seems a random thing, and all or nothing: you launch, you get that for the session.
Also, changing the oversampling once applies it and results in a change of frame rate; changing it agains results in a huge drop of fps until the next re-launch.
 
I've not been having any luck getting Elite working (despite it being fine previously on ElementaryOS). I've got a few SSDs and have been trying various distros, ie VoidLinux, Manjaro, Pop_OS and ElementaryOS.

All of them run into an error after entering my username/password, a small window pops up with the title of "Machine Indentifier.exe - .NET Framework Initializ..." and states "Unable to find a version of the runtime for this application".

I've tried various versions of wine, compiled 4.0 on VoidLinux, tkg-3.21 and tkg-4.0 via lutris and also tried both dotnet40 or dotnet452 but nothing seems to work. Any suggestions for what I should be looking at?

Are you running EDLaunch with 'wine64' (as opposed to 'wine')?
 
A GTX 1030 is probably pushing it a bit with anything higher than "medium", in my opinion. My Asus ROG 750jw has a GTX 750m and I have to bump the quality settings down a bit (on Windows) to get decent performance with ED.

Try bumping the quality down even more. It doesn't matter if it's Windows or Linux, performance will be equally affected on both OS's by GPU type, CPU type/speed, amount of RAM etc. etc.

This is good advise indeed. Things go much smoother now.
Yet, it does not stop fps going down to snails pace in certain situations.
For example: when approaching the Mercury station Daedelus in the Sol system, I have a terrible drop in fps all the time I get there.
Same for star Groombridge 34. I even lost my joystick there on last occasion and, as a consequence, nearly lost the ship. After having played a bit with Controls in the Menu, my joystick came back to life again and I had a save return home (only 5000 credits hull damage repair).
 
Last edited:
Are you running EDLaunch with 'wine64' (as opposed to 'wine')?

Yes, made sure x86_64 was set in lutris. I did manage to get past the launcher in elementaryOS but then it was showing a CRC error and I'd had enough at that point :)
Perhaps if it works on Steam I'll try again but as I can't get it working on Void (my preferred OS) it's simply easier for me to reboot into Windows.
 
Yes, made sure x86_64 was set in lutris. I did manage to get past the launcher in elementaryOS but then it was showing a CRC error and I'd had enough at that point :)
Perhaps if it works on Steam I'll try again but as I can't get it working on Void (my preferred OS) it's simply easier for me to reboot into Windows.

I've never used Lutris myself, so I'm not entirely sure, but x86_64 might refer to the type of prefix (as in it'll support 64-bit). The ED Launcher however is a 32-bit .NET app that needs to be ran as a 64-bit process; so it needs to be started with wine64. But I get the impression from this post:
Lutris has got two problems with scripts, first it won't run wine64 or custom runners off the bat i.e. if you attempt to use a custom runner by setting version: custom in the script it will cough up an error saying x86_64 isn't supported even if you point it to just the "wine" binary it would use normally.

Secondly if you set the custom_wine_path straight to wine64 with intending the user to flip the mode to custom themselves after install it won't recognise that path until the user themselves actually manually browse and select it.

Unless they fix that anytime soon and allow selection of wine64 in the scripts a one click install script doesn't seem possible for lutris.

that you can't use wine64 from within Lutris. I think you'll need to run it manually from a Terminal. Hopefully someone here with experience running under Lutris will be able to comment with a bit more authority.
 
I've not been having any luck getting Elite working (despite it being fine previously on ElementaryOS). I've got a few SSDs and have been trying various distros, ie VoidLinux, Manjaro, Pop_OS and ElementaryOS.

All of them run into an error after entering my username/password, a small window pops up with the title of "Machine Indentifier.exe - .NET Framework Initializ..." and states "Unable to find a version of the runtime for this application".

I've tried various versions of wine, compiled 4.0 on VoidLinux, tkg-3.21 and tkg-4.0 via lutris and also tried both dotnet40 or dotnet452 but nothing seems to work. Any suggestions for what I should be looking at?

If you get the following error or a similar notification when the launcher is starting or when you attempt to log in:
UgTaef2.png


The .exe files in your Elite Dangerous folder each have a config file such as "MachineIdentifier.exe.config" and "EDLaunch.exe.config". If one of these is missing, you will get errors like the one in the image above and the game will not start. I fixed this error by creating a file called "MachineIdentifier.exe.config" and copying the contents of "HardwareReporter.exe.config" into it. These files apparently tell the executable what version of .NET to use and the launcher therefore fails to find the correct version if they don't exist.

Contents of "MachineIdentifier.exe.config":
Code:
<?xml version="1.0"?>
<configuration>
    <startup> 
        <supportedRuntime version="v2.0.50727"/>
        <supportedRuntime version="v4.0"/>
    </startup>
</configuration>
 
That sounds promising, I'll give this a go on VoidLinux later today and report back.

Edit: Catting the contents of HardwareReporter.exe.config to MachineIdentifier.exe.config allowed me to login and start the game :D Thanks so much for that suggestion.

I did also get a network error but that was fixed by setting my hostname in /etc/hosts. The game now loads fully and in my short test everything appears to work fine.
Performance seems to be down quite a bit (high settings on Linux give the same FPS as ultra settings on Windows), not a huge deal tbh and I'm wondering if some of that can be alieviated by enabling esync? Despite setting my limits.conf as per lutris' instructions it still warns me whenever I try to enable it which makes me wonder if it's looking for systemd files.
 
Last edited:
Code:
030000006d0400001ec2000020200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,

Just realised that entry I posted is for VID 046d PID c21e. Here's the entry for VID 046d PID c218. It's listed as 'Logitech RumblePad 2' - but I think it's just the F510 in dinput mode.
Code:
030000006d04000018c2000010010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,
 
Despite setting my limits.conf as per lutris' instructions it still warns me whenever I try to enable it which makes me wonder if it's looking for systemd files.

You can check your current hard limit for 'open files' with the following command:
Code:
ulimit -Hn

You should have a value of 65536 or higher. If not, you'll want to set DefaultLimitNOFILE=1024:1048576 in both `/etc/systemd/system.conf` and `/etc/systemd/user.conf` as described here.
 
Back
Top Bottom