Difficutly installing Roon 1.7 on Ubuntu 18.04.3 LTS using WineHQ

This thread was opened because I’m having a great deal of trouble installing Roon 1.7 on Ubuntu 19.04.3 LTS. I started with information is this thread, but opened a new thread, not wanting to mess up that thread with my own battle with this.

Based of direction from @BlackJack, here’s what I did…

Purge any old winetricks garbage
$ sudo apt-get purge winetricks

add the OBS repository…
Download the release key from https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_18.04/
Navigate to the download directory, then…
$ sudo apt-key add Release.key
$ sudo apt-add-repository ‘deb https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_18.04/ ./’
$ sudo apt update

enable 32 bit architecture
$ sudo dpkg --add-architecture i386

Download and add the repository key:
$ wget -nc https://dl.winehq.org/wine-builds/winehq.key
$ sudo apt-key add winehq.key

Add the repository:
$ sudo apt-add-repository ‘deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main’
Update packages:
$ sudo apt update

Install the Stable WineHQ package
sudo apt install --install-recommends winehq-stable

Install Winetricks, I used the Ubuntu Software Updater (possibly installing a version that is too old)

Install the 1.7 Roon installation script from Github https://github.com/RoPieee/roon-on-wine
Make a temporary directory, and install the Github files
Navigate to the directory and run the script…
$ ./install.sh
accept any warnings, then start the roon instance
$ ./start_my_roon_instance.sh

The result didn’t work. I think it’s likely easiest to just post a pic of the error message I got, below.

Any help would be most appreciated. Thanks.

And did you install a newer winetricks afterwards?

From https://github.com/Winetricks/winetricks:

Then, for Ubuntu, use a shell script to download the current winetricks script(s). E.g.:

cd "$(mktemp -d)"
cat > update_winetricks <<_EOF_SCRIPT
#!/bin/sh

# Create and switch to a temporary directory writeable by current user. See:
#   https://www.tldp.org/LDP/abs/html/subshells.html
cd "$(mktemp -d)"

# Download the latest winetricks script (master="latest version") from Github.
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks

# Mark the winetricks script (we've just downloaded) as executable. See:
#   https://www.tldp.org/LDP/GNU-Linux-Tools-Summary/html/x9543.htm
chmod +x winetricks

# Move the winetricks script to a location which will be in the standard user PATH. See:
#   https://www.tldp.org/LDP/abs/html/internalvariables.html
sudo mv winetricks /usr/bin

# Download the latest winetricks BASH completion script (master="latest version") from Github.
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks.bash-completion

# Move the winetricks BASH completion script to a standard location for BASH completion modules. See:
#   https://www.tldp.org/LDP/abs/html/tabexpansion.html
sudo mv winetricks.bash-completion /usr/share/bash-completion/completions/winetricks
_EOF_SCRIPT
chmod +x update_winetricks
sudo mv update_winetricks /usr/bin/
cd ~
update_winetricks

Never heard of this repository bevore. I don’t use xUbuntu just Ubuntu, but seems to be unnecessary if one wants to use the WineHQ repository.

From https://wiki.winehq.org/Ubuntu:

If you have previously installed a Wine package from another repository, please remove it and any packages that depend on it (e.g., wine-mono, wine-gecko, winetricks) before attempting to install the WineHQ packages, as they may cause dependency conflicts.

Yes. But as noted in my notes above, I used Ubuntu’s Software Updater, noting that it might be too old a version to work correctly. That said, in all my prior incarnations of trying this, that version of Winetricks did not “seem” to be a problem.

I’m not familiar with that repository either. But if you look at the second line on the WineHQ Installing Wine Package page (denoted with an exclamation mark), it points to this page where “libfaudio0 packages can be downloaded from the OBS”.

And on that page, that is the repository listed for Ubuntu. Check it out…

And that’s the first thing I did. I used Ubuntu’s Software Updater to remove Wine, deleted the .wine directory, and rebooted for good measure. THEN I began all the things I listed above.

Beginning with Wine 4.5, the wine-devel packages for Ubuntu 18.04 and 19.04 require libfaudio0 as a dependency. Since the distro does not provide it, libfaudio0 packages can be downloaded from the OBS.

But you don’t need the wine-devel package when you just want to use Wine. I never added this repository or libfaudio0.

Please try to use the actual one. I wouldn’t have pointed out the installation instructions when the old one out of the Ubuntu repository had worked for me.

Well, the Unix community is FILLED with people who eschew anything but the command line to accomplish anything. Being one of those people could also have been a reason to point to the shell script. That said, I tried that shell script for downloading a more recent version of Winetricks before I resorted to the Software Updater, and ran into some sort of permission issues. NOT being deep in Linux knowledge, it was something beyond my ken. So I fell back to the “official” way, though that may have been my problem. So now will have to see if I can get that script to work.

Thanks.

Update: This worked for me exactly once. Every time I try to start Roon after that it crashes.

I’m trying myself on Xubuntu 18.04.03, and it’s not working well. I had to do this to succeed.

  1. First, make sure you are clean:
$ sudo apt remove wine wine-stable winetricks
$ rm -rf ~/my_roon_instance
  1. Go to the WineHQ instructions for installing Wine on Ubuntu, and install according to directions there. “wine-stable” only.
  2. Go to the winetricks gitub repository, and grab the winetricks install script there. It’s overly tricksy, so you have to cut out just this part:
#!/bin/sh

# Create and switch to a temporary directory writeable by current user. See:
#   https://www.tldp.org/LDP/abs/html/subshells.html
cd "$(mktemp -d)"

# Download the latest winetricks script (master="latest version") from Github.
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks

# Mark the winetricks script (we've just downloaded) as executable. See:
#   https://www.tldp.org/LDP/GNU-Linux-Tools-Summary/html/x9543.htm
chmod +x winetricks

# Move the winetricks script to a location which will be in the standard user PATH. See:
#   https://www.tldp.org/LDP/abs/html/internalvariables.html
sudo mv winetricks /usr/bin

# Download the latest winetricks BASH completion script (master="latest version") from Github.
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks.bash-completion

# Move the winetricks BASH completion script to a standard location for BASH completion modules. See:
#   https://www.tldp.org/LDP/abs/html/tabexpansion.html
sudo mv winetricks.bash-completion /usr/share/bash-completion/completions/winetricks

and put it in a file called update_winetricks.sh, then chmod +x it to make it executable. Then run it, once.

  1. Then you can run Harry’s install.sh script. Wait for it to finish – it takes a while. At least one of these damnable pop-up windows so popular with Windows will come up, and you will have to click through it to continue the process.

  2. Enjoy Roon! I exulted too soon:

014a:err:eventlog:ReportEventW L"Application: Roon.exe\nFramework Version: v4.0.30319\nDescription: The process was terminated due to an unhandled exception.\nException Info: System.AccessViolationException\n   at Broo.Engine.OpenGL.Gl.glFinish()\n   at Broo.Engine.OpenGlTexture+<>c__DisplayClass58_7.<LoadFull>b__17(Boolean)\n   at "...
014a:fixme:advapi:DeregisterEventSource (0xcafe4242) stub

Unhandled Exception: 014a:fixme:ver:GetCurrentPackageId (0x1e8cad30 (nil)): stub
System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at Broo.Engine.OpenGL.Gl.glFinish()
   at Broo.Engine.OpenGlTexture.<>c__DisplayClass58_7.<LoadFull>b__17(Boolean isthread2)
   at Broo.Engine.DeviceTarget._textureloaderthread()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
wine: Unhandled page fault on read access to 0x00000008 at address 0x7f7a1113d0b3 (thread 014a), starting debugger...

I had to restart Roon (by running start_my_roon_instance.sh) before it worked.

1 Like

A couple more notes:

  1. I did not have to do anything with libfaudio0. Perhaps it was already there?

  2. The roon installer seems to download and install many versions of dot net before it finds one that works. Assuming this is just cumulative recursive installs.

  3. I don’t really see any difference between what I did and what Steve did.

You never know what you’re going to get with one of the GUI interfaces, because the people who write those are either (1) not Linux experts in the first place, or (2) writing for other people they don’t really understand.

So your testing was with B505 only? There was no change for me updating to B505, it still runs.

grafik

Kernel 5.0.0-36-lowlatency; Wine-4.0.2; .NET 4.7.2, Roon 64-bit

I guess so. Maybe it’s the whole xfce thing – I’ve got Xubuntu, not regular Ubuntu.

Update: Just tried it again a couple of times, and was able on one try to bring up and start play. Crashed the other times. Looks like memory corruption.

Oh, and I’m running on AMD Ryzen 2700, as well.

It’s hard to tell without information like error messages and things like that. :wink:

But if it’s Roon itself that crashes, it’s unlikely the case as it’s contained in its wine bottle and believes to run on a Windows 7 machine. While the Roon devs can’t do much should the problem stem form the outside, they can maybe do something to make Roon play better together with Wine and drivers. But someone needs to provide (detailed) information first to make this ever happen.

Oh, I’ve got plenty of detailed information. But it’s different for each crash. The common factor seems to be a random memory corruption.

So maybe a faulty RAM module then. You can check your memory (described here).

1 Like

No, this looks like a classic use-after-free situation somewhere in the manifold Wine underpinnings.

I’m not a pro either. :man_shrugging:

Then I would have expected some repeatablity (same routine every time; maybe different memory addresses).

This all just sounds weird to me.

No, different code paths depending on thread races. The only thing I can sort of see is that its in the thumbnail loading code for the cover art.

Debugging, the black art. I haven’t seriously played with Mono for many years, though.

Does your graphics card support OpenGL 3.0?

I’ve installed the latest version from WineHQ (winehq-stable) and installed winetricks with the instructions from their Github repo, and I’ve got it working now with the Ropieee Roon on Wine script.

This morning, after working fine for about 5 days, Roon froze and I had to kill the process. Any attempt to restart it failed. No process ever started, it was just dead. I rebooted numerous times since that usually fixes the issue but not this time.

So I came here and I’ve been following along with your steps. I get to the point of running ./install.sh (after purging all wine-related applications and directories, reinstalling Wine from the official instructions, using the update_winetricks.sh script) and it works…I get the wizard to install Roon but before it installs, it says that the .NET framework 4.5 must be installed.

I saw your comment (this one I’m replying to) about you getting multiple .NET frameworks installed while it tries to figure out which one is needed, but for me, it only installs 4.5 and then after the rest of the installation process happens, Roon fails to start with no process ever running.

I have to assume this is because of 4.5 since elsewhere, it was stated that 4.5.2 is the minimum required version now.

But the install.sh script downloads 4.6.2 and from what I can see, should be installing that but it never does.

Last time I attempted to use this script, the same thing happened and it was mentioned that the downloaded .NET framework 4.6.2 was likely not installed due to an outdated winetricks (I previously installed via apt). So now I’m using the most-current version, installed via official directions, and still, the 4.6.2 framework is never installed.

Did you actually get a version higher than 4.5 installed by going through this whole install.sh script’s process or did you have to manually install the .NET framework before attempting to install Roon?

Given the fact nothing else is working, I’m going to attempt manually installing 4.6.2 first before running the Roon installer again.

EDIT: Okay, I attempted a manual install and I see now that the install.sh script actually was attempting to install and was failing because I got the exact same output from my manual attempt:

$ WINEPREFIX=$HOME/.wine/my_roon_instance winetricks dotnet472
------------------------------------------------------
You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Using winetricks 20190912-next - sha256sum: 186871147cef536fa5bf38d57605b87057dafa14cba9f9f5b83aba71e6aac542 with wine-4.0.3 and WINEARCH=win64
Executing w_do_call dotnet472
------------------------------------------------------
You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Executing load_dotnet472 
------------------------------------------------------
This package (dotnet472) may not fully work on a 64-bit installation. 32-bit prefixes may work better.
------------------------------------------------------
Current Wine does not have Wine bug 42170, so not applying workaround
Executing w_do_call remove_mono
------------------------------------------------------
You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Executing load_remove_mono 
------------------------------------------------------
Mono does not appear to be installed.
------------------------------------------------------
Executing w_do_call dotnet462
------------------------------------------------------
You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Executing load_dotnet462 
------------------------------------------------------
This package (dotnet462) may not fully work on a 64-bit installation. 32-bit prefixes may work better.
------------------------------------------------------
Executing w_do_call remove_mono
------------------------------------------------------
You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Executing load_remove_mono 
------------------------------------------------------
Mono does not appear to be installed.
------------------------------------------------------
Executing w_do_call dotnet461
------------------------------------------------------
You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Executing load_dotnet461 
------------------------------------------------------
This package (dotnet461) may not fully work on a 64-bit installation. 32-bit prefixes may work better.
------------------------------------------------------
Executing w_do_call remove_mono
------------------------------------------------------
You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Executing load_remove_mono 
------------------------------------------------------
Mono does not appear to be installed.
------------------------------------------------------
Executing w_do_call dotnet46
------------------------------------------------------
You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Executing load_dotnet46 
------------------------------------------------------
This package (dotnet46) may not fully work on a 64-bit installation. 32-bit prefixes may work better.
------------------------------------------------------
Executing w_do_call remove_mono
------------------------------------------------------
You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Executing load_remove_mono 
------------------------------------------------------
Mono does not appear to be installed.
------------------------------------------------------
Executing w_do_call dotnet45
------------------------------------------------------
You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Executing load_dotnet45 
------------------------------------------------------
This package (dotnet45) may not fully work on a 64-bit installation. 32-bit prefixes may work better.
------------------------------------------------------

So it doesn’t seem like any of these versions are installing at all.

EDIT: I’m done with this. I’ve removed/reinstalled Wine so many times this morning I’ve lost count. I cannot get the .NET framework installed no matter which version or approach to installing is attempted. I even went back to the approach from the original thread about getting this working in Ubuntu as that ALWAYS worked for me, but no longer. Attempts to install 4.7.2, 4.7.1, 4.6.2, 4.6.1, 4.5.2, 4.5.0 each multiple times all have the same outcome:

$ WINEPREFIX=$HOME/.wine/my_roon_instance winetricks dotnet462
Using winetricks 20190912-next - sha256sum: 186871147cef536fa5bf38d57605b87057dafa14cba9f9f5b83aba71e6aac542 with wine-4.0.3 and WINEARCH=win32
Executing w_do_call dotnet462
Executing load_dotnet462 
Executing w_do_call remove_mono
Executing load_remove_mono 
------------------------------------------------------
Mono does not appear to be installed.
------------------------------------------------------
Executing w_do_call dotnet461
Executing load_dotnet461 
Executing w_do_call remove_mono
Executing load_remove_mono 
------------------------------------------------------
Mono does not appear to be installed.
------------------------------------------------------
Executing w_do_call dotnet46
Executing load_dotnet46 
Executing w_do_call remove_mono
Executing load_remove_mono 
------------------------------------------------------
Mono does not appear to be installed.
------------------------------------------------------
Executing w_do_call dotnet45
Executing load_dotnet45 

No installer ever runs.