For people struggling with Roon 2.0.25 on Linux with Bottles/Wine

Okay, so the most likely culprit is the lock file issue. It may be the file left over from the failed install.

First, try this: stop the service, delete the lock file, and restart. If this doesn’t work, it’s likely that Roon can’t create the lock file.

Thank you again, i will look into it when i am at home

1 Like

So I looked for the lock files and deleted them after stopping roonbridge service. Then i restarted the pc to be sure. The lock-files are recreated in ./tmp, but the warning also re-appeared. The endpoint is seen (outside wine, just as linux endpoint), I can select it and even start music but no sound, and playing stops after a few seconds. The journalctl still gives the warning arn: get lock file path: /tmp/.rnbhgem0- but this file does exist. So it appears to be something with permissions for accessing the dac, but before it just worked so no idea what has changed on the fedora/bazzite side. Thx anyway for thinking along!

Well, after a lot of searching and trying, the solution in my case resulted to be: in bottles I had to enforce alsa as standard audio output for all bottles. And I have music playing through roon in bottles on bazzite again.

I’ve just updated to Fedora 44 - I cannot get Roon to run at all. Must have spent a good 4 hours running though various things.

Anyone else come up against this?

See Easier way to install Roon (Remote) on Linux: Bottles!

1 Like

Hi all, has anyone managed to get Roon running on bottles 63.2? I am on a Ubuntu fork and install the Roon app from within Bottles. It installs fine, but when I want to start it, nothing happens…
I had it working before, but that was on a Fedora 43 system if I recall correctly…

Roon works for me with 63.2 on Ubuntu. If you used the built-in recipe to install Roon you may want to remove the start entry for Roon from the list though IIRC (should reveal another shortcut for Roon that works).

My current Roon bottle configuration
Arch: win64
CompatData: ''
Creation_Date: '2026-02-05 16:48:04.760737'
Custom_Path: false
DLL_Overrides:
    windows.media.mediacontrol: d
DXVK: dxvk-2.7.1-17-8ee652a
Environment: Application
Environment_Variables: {}
External_Programs:
    793d7992-644b-4ef6-90ac-b638b13aeaeb:
        arguments: ''
        auto_discovered: true
        executable: Roon.exe
        folder: /home/daniel/Games/Roon-(Productive)/drive_c/users/daniel/AppData/Local/Roon/Application
        icon: com.usebottles.bottles-program
        id: 793d7992-644b-4ef6-90ac-b638b13aeaeb
        name: Roon (Productive)
        path: C:\users\daniel\AppData\Local\Roon\Application\Roon.exe
Inherited_Environment_Variables:
- DBUS_SESSION_BUS_ADDRESS
- DISPLAY
- HOME
- LANG
- LC_ALL
- LC_CTYPE
- LC_MESSAGES
- PATH
- PULSE_SERVER
- TERM
- TZ
- USER
- WAYLAND_DISPLAY
- XAUTHORITY
- XDG_RUNTIME_DIR
Installed_Dependencies:
- arial32
- times32
- courie32
- mono
- gecko
- dotnetcoredesktop10
Language: sys
LatencyFleX: latencyflex-v0.1.1
Limit_System_Environment: true
NVAPI: dxvk-nvapi-v0.7.1
Name: Roon (Productive)
Parameters:
    custom_dpi: 96
    decorated: true
    discrete_gpu: false
    dxvk: true
    dxvk_nvapi: false
    fixme_logs: false
    fsr: false
    fsr_sharpening_strength: 2
    fullscreen_capture: false
    gamemode: false
    gamescope: false
    gamescope_borderless: false
    gamescope_custom_options: ''
    gamescope_fps: 0
    gamescope_fps_no_focus: 0
    gamescope_fullscreen: true
    gamescope_game_height: 0
    gamescope_game_width: 0
    gamescope_scaling: false
    gamescope_window_height: 0
    gamescope_window_width: 0
    latencyflex: false
    mangohud: false
    mangohud_display_on_game_start: true
    mouse_warp: true
    obsvkc: false
    pulseaudio_latency: false
    renderer: vulkan
    sandbox: false
    sync: fsync
    take_focus: false
    use_be_runtime: true
    use_eac_runtime: true
    use_runtime: false
    use_steam_runtime: false
    versioning_automatic: false
    versioning_compression: false
    versioning_exclusion_patterns: false
    virtual_desktop: false
    virtual_desktop_res: 1280x720
    vkbasalt: false
    vkd3d: true
    vmtouch: false
    vmtouch_cache_cwd: false
    wayland: false
    winebridge: false
Path: Roon-(Productive)
Registry_Rules: []
Runner: kron4ek-wine-11.9-amd64
RunnerPath: ''
Sandbox:
    share_net: false
    share_sound: false
State: 0
Uninstallers: {}
Update_Date: '2026-05-27 16:41:08.648842'
VKD3D: vkd3d-proton-3.0.1-1-34ab1ce
Versioning: false
Versioning_Exclusion_Patterns: []
Windows: win11
Winebridge: false
WorkingDir: ''
data: {}
run_in_terminal: false
session_arguments: ''

PS: This is not a fresh install but one that already worked before and kept working through various component (Wine, Bottles, Runners, etc. and Roon) updates.

I had to use Soda 9.0.1 and it worked again. I also use dkxv 2.7.1 (the base, not one with version numbers with dashes).

Do you have a solution for playback on Bazzite? I cannot get the Roon Bridge script to properly work.

I Used to use Squeezelite on Ubuntu but that is not an option for Bazzite.

*EDIT: Squeezelite does work if you layer in with rpm-ostree!

Since Bazzite uses a Fedora base, search the forum for workarounds. However, these may not work because, AFAIK, no one was using Fedora Silverblue.

Bottles com.usebottles.bottles 64.1 stable system

Nuc Haswell / Cachyos, select Roon under Install Programs. Had to uncheck DXVK on my dated hardware. Same works under Fedora 44.

I did a fresh bottle and now it works flawlessly again. Not sure why, I didn’t touch anything.
On TuxedoOS I have it running Bottles 64.1 fine with these now:

@q_dot make sure the Roon Bridge script is exectuable. After it is installed, you will have to do

sudo restorecon -rv /opt/RoonBridge

and then

sudo systemctl daemon-reload and sudo systemctl restart roonbridge.service

I was able to get roon bridge working on Fedora after that (Bazzite is Fedora-based as mjw says)

1 Like

Hi all,

I post here the results of some investigations and fixes I made on the current state of Roon on Wine using the wayland driver (v. 11.13) without using bottles. This has been tested on the latest Arch (7.1.4-arch1-1).

Problem 1 – Roon crashes at startup

Roon calls the Windows API wminet_utils.GetErrorInfo()which is only a stub in Wine. This causes Wine to abort the application during startup.

Fix: Implement the missing API by forwarding the call to Wine’s existing OLE implementation (oleaut32.GetErrorInfo()). See (patch attached): Making sure you're not a bot!


Problem 2 – White window on startup (Wayland)

Roon may display a blank white window because Wine notifies the application that the Wayland window was ready before the compositor has fully finished configuring it.

Fix: Delay the notification by about 10 ms, allowing the compositor to complete the window setup before Roon starts rendering. See (patch attached): Making sure you're not a bot!

I found it easier to run Wine 10.0 (on Ubuntu 24.04), and hold back updates causing the crash. However, on Ubuntu 26.04, Wine 10.0 is shipped, so no extra work to do.

Whatever works for you. I like a clean system with only one version of Wine installed. It also diminishes the risk of Wine 10 getting obsolete with new Roon releases.

Ditto. I’ll take Wine 11.0 when I don’t need to patch, or if Roon breaks under 10.0. I don’t think there is much appetite to build from source here. But I appreciate your efforts, and hope WineHQ recognise the bugs.

Of course this requires some skills, I agree. Just adding that wine (from 11.10) has moved part of its audio processing to native Unix threads which is much more stable. I had random pops in DSD with my DAC that are now solved thank to this patch. Being up to date has its perks :slight_smile:

As I mentioned in the other thread, you should use the native Roon server or Roon bridge binaries on Linux, and Wine Bottles solely for control.