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

Try backing up and deleting your steam runtime (and other associated files) from ~.local/share/Steam/ubuntu12_32 .

Also make sure you are not running steam beta but the stable client.

Thank you so much ! I was running Steam Beta Native before (Elite Horizons was working nicely), and Steam Runtime works perfectly with the new update ! Thank you for your time and patience :D

The new lighting is gorgeous, I'm ~20 jumps from Colonia, and it's so beautiful.

Looks like there is a bug with Wine and gnutls v3.5.19-2:
https://bugs.winehq.org/show_bug.cgi?id=46161

It's fixed in 4.0-rc1 - but it won't be in my Proton build.

Looks like there's also a fix in gnutls v3.6:
https://gitlab.com/gnutls/gnutls/issues/621

So options are:
- downgrade (upgrade?) gnutls;
- use wine version 4.0-rc1 (and ditch Proton); or
- wait for me to make another custom Proton build (the wine fix easily applies)

I wanted to setup the game with Lutris, DXVK 0.93 + Wine 4.0rc1 if Steam+Proton didn't worked out.
 
Last edited:
I upgraded my video driver to 415.18 - not made any difference.
I'm convinced there is some thread that is crashing the game at random times.
Basically sometimes I can get to menu for a short amount of time before it crashes, sometimes I don't even get that far.
It does generate a 56Mb Frontier.CrashReport.12.12.2018-22.25.25.dmp file when it crashes but without a debug build of ED I doubt it will help me figure out what's wrong.

Also using:
Code:
neilm@neilm-predator:~/ed-wine$ dpkg -l | grep wine
ii  fonts-wine                                      3.0-1ubuntu1                                all  
ii  libkwineffects11:amd64                          4:5.12.6-0ubuntu0.1                         amd64
ii  wine-devel                                      4.0~rc1~bionic                              amd64
ii  wine-devel-amd64                                4.0~rc1~bionic                              amd64
ii  wine-devel-i386:i386                            4.0~rc1~bionic                              i386 
ii  winehq-devel                                    4.0~rc1~bionic                              amd64
ii  winetricks                                      0.0+20180217-1                              all
Code:
gnutls-bin                                      3.5.18-1ubuntu1                             amd64        GNU TLS library - commandline utilities
libcurl3-gnutls:amd64                           7.58.0-2ubuntu3.5                           amd64        easy-to-use client-side URL transfer library (GnuTLS flavour)
libgnutls-dane0:amd64                           3.5.18-1ubuntu1                             amd64        GNU TLS library - DANE security support
libgnutls30:amd64                               3.5.18-1ubuntu1                             amd64        GNU TLS library - main runtime library
libgnutls30:i386                                3.5.18-1ubuntu1                             i386         GNU TLS library - main runtime library
libneon27-gnutls:amd64                          0.30.2-2build1                              amd64        HTTP and WebDAV client library (GnuTLS enabled)
 
Last edited:
Yeah - that's wine-devel. Both the futex patch and NormalizeString patchset are only in wine-staging. Try:
Code:
sudo apt install winehq-staging

thankyou my friend, that did it! :D

@danteuk

same issue as me I did the following:

Code:
sudo apt-get remove --purge  wine-devel*
sudo apt autoremove
sudo apt install wine-staging
sudo apt install --install-recommends winehq-staging

and everything is super dooper!

Cheers
 
Last edited:
Thank you so much ! I was running Steam Beta Native before (Elite Horizons was working nicely), and Steam Runtime works perfectly with the new update !

Oh yeah - I completely overlooked the fact that Steam has its own runtime that includes gnutls (v2.12.14... I think).

Thanks for reporting back. I'll add that to my GitHub wiki.
 
I upgraded my video driver to 415.18 - not made any difference.
I'm convinced there is some thread that is crashing the game at random times.
Basically sometimes I can get to menu for a short amount of time before it crashes, sometimes I don't even get that far.
It does generate a 56Mb Frontier.CrashReport.12.12.2018-22.25.25.dmp file when it crashes but without a debug build of ED I doubt it will help me figure out what's wrong.

Also using:
Code:
neilm@neilm-predator:~/ed-wine$ dpkg -l | grep wine
ii  fonts-wine                                      3.0-1ubuntu1                                all  
ii  libkwineffects11:amd64                          4:5.12.6-0ubuntu0.1                         amd64
ii  wine-devel                                      4.0~rc1~bionic                              amd64
ii  wine-devel-amd64                                4.0~rc1~bionic                              amd64
ii  wine-devel-i386:i386                            4.0~rc1~bionic                              i386 
ii  winehq-devel                                    4.0~rc1~bionic                              amd64
ii  winetricks                                      0.0+20180217-1                              all

You should try wine staging instead of devel too.
 
@danteuk

same issue as me I did the following:

Code:
sudo apt-get remove --purge  wine-devel*
sudo apt autoremove
sudo apt install wine-staging
sudo apt install --install-recommends winehq-staging

and everything is super dooper!

Cheers

Wow - thanks, that was it - switched to staging version and now it looks like I can at least run the training mission!
Now to figure out what all the keybindings I need on this laptop to fly - or may try my X52 - not sure how Linux ready that is!

Update #1: I got X52 working - only played around with the training missions still so far. Not quiet ready to fly my main account - that and FDev's servers are flakey anyway at the moment.

Update #2: I just noticed my fan was still going strong and when ran top I saw EliteDangerous64 was using 100% cpu - this is after I'd exited the game the window had closed! - it's done this twice now - so I have to remember to killall EliteDangerous64 when I finish.
 
Last edited:
Forgot to mention earlier that I tried Single Player Combat Training and the same thing happened.

First registry key stops it from being detected as an Xbox controller and now it's not detected at all. Second key seems to have done nothing. It does show up on joy.cpl though.

I've made a couple of assumptions with this response:
1. Your results were with 4.0 rc 1; and
2. You re-enabled the first registry key before trying the second

If you grep your system.reg (which is in the root of your prefix) for your device VID and PID (which you can find with lsusb; but I think will be VID_046D&PID_C215) you can confirm that winebus thinks your device is a controller.

For example - I use a Logitech F310 Controller - so my output is:
Code:
grep 'HID\\\\VID_046D&PID_C21D' system.reg
System\\CurrentControlSet\\Enum\\HID\\VID_046D&PID_C21D&IG_1\\16404&030000006D0400001DC2000014400000&0

Because mine is a controller - it has the '&IG' bit immediately following the PID. A joystick should have '&IM'.

If winebus still thinks your device is a controller with the 'Enable SDL' on and 'Map Controllers' off - then I think it might be going through this rather questionable piece of code:
Code:
is_gamepad = (axes == 6  && buttons >= 14)

That is - if in joy.cpl the device is showing exactly 6 axis and 14 or more buttons - then winebus is going to treat your device as a controller. There was actually a bug in this bit of code that I fixed in 3.21 - so you could try 3.20 (where it incorrectly uses axis count for the number of buttons).
 
Remember to update winetricks, the latest version is 20181203-1

Code:
winetricks --update

Thanks, I'm all up and running now.
I'd manually updated winetricks and was running the local version of it. I guess I should probably update the proper install version too now :)
 
I've made a couple of assumptions with this response:
1. Your results were with 4.0 rc 1; and
2. You re-enabled the first registry key before trying the second

If you grep your system.reg (which is in the root of your prefix) for your device VID and PID (which you can find with lsusb; but I think will be VID_046D&PID_C215) you can confirm that winebus thinks your device is a controller.

For example - I use a Logitech F310 Controller - so my output is:
Code:
grep 'HID\\\\VID_046D&PID_C21D' system.reg
System\\CurrentControlSet\\Enum\\HID\\VID_046D&PID_C21D&IG_1\\16404&030000006D0400001DC2000014400000&0

Because mine is a controller - it has the '&IG' bit immediately following the PID. A joystick should have '&IM'.

If winebus still thinks your device is a controller with the 'Enable SDL' on and 'Map Controllers' off - then I think it might be going through this rather questionable piece of code:
Code:
is_gamepad = (axes == 6  && buttons >= 14)

That is - if in joy.cpl the device is showing exactly 6 axis and 14 or more buttons - then winebus is going to treat your device as a controller. There was actually a bug in this bit of code that I fixed in 3.21 - so you could try 3.20 (where it incorrectly uses axis count for the number of buttons).
Gonna try to be a bit verbose with this one;

I'm using wine-staging 4.0rc1(as you've guessed). I tried the two registry keys in all possible combinations and the results were as I've stated before.
In the registry, I've found multiple entries on my joystick, both with &IM and &IG. I did switch to a second USB port sometime.
Code:
"DeviceInstance"="HID\\VID_046D&PID_C215&IM_1\\272&030000006D04000015C2000010010000&0"
"DeviceInstance"="HID\\VID_046D&PID_C215&IM_1\\272&030000006D04000015C2000010010000&1"
"DeviceInstance"="HID\\VID_046D&PID_C215&IM_1\\272&030000006D04000015C2000010010000&2"
System\\CurrentControlSet\\Enum\\HID\\VID_046D&PID_C215&IG_1\\272&030000006D04000015C2000010010000&0
System\\CurrentControlSet\\Enum\\HID\\VID_046D&PID_C215&IG_1\\272&030000006D04000015C2000010010000&1
System\\CurrentControlSet\\Enum\\HID\\VID_046D&PID_C215&IG_1\\272&030000006D04000015C2000010010000&2
System\\CurrentControlSet\\Enum\\HID\\VID_046D&PID_C215&IM_1\\0&0000&0
System\\CurrentControlSet\\Enum\\HID\\VID_046D&PID_C215&IM_1\\272&030000006D04000015C2000010010000&0
System\\CurrentControlSet\\Enum\\HID\\VID_046D&PID_C215&IM_1\\272&030000006D04000015C2000010010000&1
System\\CurrentControlSet\\Enum\\HID\\VID_046D&PID_C215&IM_1\\272&030000006D04000015C2000010010000&2

joy.cpl is also showing two instances of the joystick; js and event. The js is working as expected, the event is a bit weird(axes are different, throttle doesn't work). I suspect that it may be thinking it's an xinput controller.
I've disabled event from joiy.cpl and Elite is still detecting the stick as an Xbox controller.
Here's an evtest of the stick in case you need it.
Code:
$ sudo evtest /dev/input/event25
[HR][/HR]Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x46d product 0xc215 version 0x110
Input device name: "Logitech Logitech Extreme 3D"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 288 (BTN_TRIGGER)
    Event code 289 (BTN_THUMB)
    Event code 290 (BTN_THUMB2)
    Event code 291 (BTN_TOP)
    Event code 292 (BTN_TOP2)
    Event code 293 (BTN_PINKIE)
    Event code 294 (BTN_BASE)
    Event code 295 (BTN_BASE2)
    Event code 296 (BTN_BASE3)
    Event code 297 (BTN_BASE4)
    Event code 298 (BTN_BASE5)
    Event code 299 (BTN_BASE6)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value    508
      Min        0
      Max     1023
      Flat      63
    Event code 1 (ABS_Y)
      Value    488
      Min        0
      Max     1023
      Flat      63
    Event code 5 (ABS_RZ)
      Value    128
      Min        0
      Max      255
      Flat      15
    Event code 6 (ABS_THROTTLE)
      Value      0
      Min        0
      Max      255
      Flat      15
    Event code 16 (ABS_HAT0X)
      Value      0
      Min       -1
      Max        1
    Event code 17 (ABS_HAT0Y)
      Value      0
      Min       -1
      Max        1
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)

The Extreme 3D Pro has 12 buttons, 4 axes and 1 POV stick(not analog).



I did get it working though. I deleted
Code:
HKLM\\System\\CurrentControlSet\\Enum

Ran joy.cpl, closed it, ran regedit and now there's only one entry for my joystick
Code:
"DeviceInstance"="HID\\VID_046D&PID_C215&IM_1\\272&030000006D04000015C2000010010000&0"
"DeviceInstance"="HID\\VID_046D&PID_C215&IM_1\\272&030000006D04000015C2000010010000&1"
"DeviceInstance"="HID\\VID_046D&PID_C215&IM_1\\272&030000006D04000015C2000010010000&2"
System\\CurrentControlSet\\Enum\\HID\\VID_046D&PID_C215&IG_1\\272&030000006D04000015C2000010010000&0

I changed the &IG to &IM(on these twohyperlink) and it works fine now(detected as a dinput controller and not Xbox 360 controller in Elite).
 
Ignore the solution, I just tried to reproduce it and it didn't work.

I think you're on to something - I'd say this is why the registry changes didn't make a difference (because the stale '&IG' entries were still there).

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 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 entry (it'll use xinput instead).

winebus will also recreate the entries every-time you start-up wineserver - so I'd try the following:
1. Set 'Map Controllers' off; and
2. Delete all registry entries with your PID and VID

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 you can also add '+plugplay' to WINEDEBUG. If you see an entry saying: 'Found sdl game controller'; then our registry entry didn't work.
 
Hey RedMcG, do you happen to know how to do an api trace specifically with this game by any chance?

Someone from Nvidia needs an api trace so they can look into what's wrong with the 415 branch of drivers, problem is the standard instructions listed on the dxvk github won't work and I'm just a mere peasant.

https://github.com/doitsujin/dxvk/issues/267#issuecomment-446848083

I've never used that before - but it looks like you've solved it. Was it using this method:
https://github.com/apitrace/apitrace/blob/master/docs/USAGE.markdown#windows

?
 
Last edited:
Yes but the issue is the guide says not to use DXVK but those dll's wouldn't trace without it.

So I don't know if they got what they need.

I also just found this:
https://github.com/apitrace/apitrace/wiki/WINE#windows-native

So it looks like you can use WINEDLLOVERRIDES to explicitly select the apitrace DLLs. If you did that and used apitrace.exe - then I think it should be OK.

It also says you can replay the trace - so maybe that can help to verify. When I get a chance I'll download the binaries and take a look.
 
Last edited:
I also just found this:
https://github.com/apitrace/apitrace/wiki/WINE#windows-native

So it looks like you can use WINEDLLOVERRIDES to explicitly select the apitrace DLLs. If you did that and used apitrace.exe - then I think it should be OK.

It also says you can replay the trace - so maybe that can help to verify. When I get a chance I'll download the binaries and take a look.

I can replay the trace on both Linux via wine and Windows but I'm not sure whether I done it right and using -v I can see DXGI calls, the instructions say don't use DXVK yet the game wouldn't start if I tried to trace with wine's dx11.

I used the solution at the bottom of this page: https://github.com/doitsujin/dxvk/wiki/Common-issues#apitrace
 
I think you're on to something - I'd say this is why the registry changes didn't make a difference (because the stale '&IG' entries were still there).

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 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 entry (it'll use xinput instead).

winebus will also recreate the entries every-time you start-up wineserver - so I'd try the following:
1. Set 'Map Controllers' off; and
2. Delete all registry entries with your PID and VID

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 you can also add '+plugplay' to WINEDEBUG. If you see an entry saying: 'Found sdl game controller'; then our registry entry didn't work.

I can confirm that Wine 3.20 is working fine. Unverified; but I think I needed to delete the joysticks and controllers in the registry left over by the new version of Wine. Maybe this was why I tried an older version a few days back and it didn't work.

And also, should 'Enable SDL'?
 
Reading the recent posts - I highly recommend creating a new prefix every time you compile/use a new version of Wine. The experience I've had of late is that after building and using a new version of Wine, even though it's (I think) supposed to update the various DLL's or what have you in the existing prefix, I've found that this doesn't appear to be 100% the case.

Also, your existing prefix might contain cruft from previous attempts to get stuff working (e.g. old USB id's and the like as above posts).

Copying/moving the ED game files from old prefix to new doesn't take long either - the inconvenience of having another verification string to type into the launcher is minor (for myself anyway).
 
Requirements for this guide: openSUSE Leap 15.0 or Tumbleweed. NVidia gfx card. About 20GB of disk space.
UPDATED:


  1. Wine 3.20 released, including keyboard/mouse/controller recognition patch. Removed my patched packages for now.
  2. Wine 3.19 released, including correct keypress recognition in bindings screen and winetricks with dxvk support
  3. My patched packages now offer the appropriate control presets for your system
  4. Corrected typo in winetricks line 'dxdotnet452'.

Steps to install/configure on openSUSE Leap 15.0 or Tumbleweed: with nvidia and DXVK:

  1. Install the latest wine 3.20 from the Emulators repo (Official packages repo URL)):
  2. (these instructions intentionally left vague to deter the inexperienced from borking their installation) Switch to a text console, stop X, uninstall packaged nvidia drivers, compile and install using the beta proprietary nvidia drivers that support the necessary Vulkan APIs, at time of writing 396.54.09 (NVidia Vulkan driver page, general installation instructions for these non-packaged drivers). Restart X.
  3. Install the distro's regular mono-core package
  4. Follow CMDR Eagleboy's instructions (lightly modified for different paths I encountered):
    1. Set a WINEPREFIX for your ED wine configuration. Remember to use the same prefix in later sessions, add it to your .profile or whatever: `export WINEPREFIX=~/ed-wine`
    2. To initialize Wine 64-bit prefix run `wine64 winecfg`. Click Cancel when it prompts you to install dotnet/mono. Then choose 'Windows 7' in version list and hit Apply for configuration change.
    3. To install Winetricks dependencies use`winetricks dotnet452 corefonts quartz vcrun2012`
    4. Switch back to Windows 7 after winetricks has changed it with `wine winecfg`.
    5. Install dxvk `winetricks dxvk` (the prior components need to be installed first, you can't install it with the earlier winetricks call)
    6. Install Elite Dangerous installer and launcher: `wine64 EliteDangerous-Client-Installer.exe`
    7. Launch ED launcher (pun intended) `wine64 "c:\Program Files (x86)\Frontier\EDLaunch\EDLaunch.exe"`
    8. Login, and install ED Horizons using launcher.
  5. Play the game!
  6. At this point you are a little on your own as the game will probably start the first time in 800x600 full screen, setting your desktop resolution to this and messing up your windowing system. Knowing how to unfsck that with `xrandr --display <your-display-here> --auto` up front is helpful.
  7. You'll have to reconfigure control bindings.

Please let me know if you try this and if you encounter any problems.


Outdated, kept for posterity:
Removed steps due to being included in wine/winetricks:


  1. Patched packages: my patched 15.0 packages with correct keyboard/mouse/controller preset recognition
  2. Download DXVK 0.90 (github project|release tarball)
  3. Install DXVK 0.90 into your WINEPREFIX:
    1. `tar xf /path/to/downloaded dxvk-0.90.tar.bz`
    2. `cd dxvk-0.90`
    3. `WINEPREFIX=~/ed-wine winetricks --force setup_dxvk.verb`
  4. Find out the MachineGuid 32bit wine saw and used to login to the launcher:
    1. Save the mono code below as mguidcheck.cs
    2. Compile the code using mcs from the mono-core package: `mcs mguidcheck.cs`
    3. Run the resulting .exe in wine: `wine mguidcheck.exe`
    4. Copy the GUID it outputs (among a mess of debug output here)
  5. Run regedit under wine64 to update its MachineGUID: `wine64 regedit` and set HKLM/Software/Microsoft/Cryptography/MachineGuid to the value output by mguidcheck.exe.

mguidcheck.cs (we-are-not-worthy to RedMcG):
Code:
using Microsoft.Win32;
using System;

public class HelloWorld
{
    static public void Main ()
    {
        Console.WriteLine  (Registry.LocalMachine.OpenSubKey("SOFTWARE\\\\Microsoft\\\\Cryptography").GetValue("MachineGuid").ToString());
    }
Thanks for the information. I got ED working now, using wine 3.21 (not the latest).
A few remarks.
When executing 'winetricks dotnet452 corefonts quartz vcrun2012', the installation partly fails. There is some complaint about a Microsoft Module Server (or something like that) not being present and later the size of a Drive_c is reported to be only 64Mb. I am urged to 'refresh' but that is not possible, so I cannot continue there and have to abort. But don't panic: still the next steps can be taken successfully.
 
Back
Top Bottom