Resonite

Resonite #

The current recommended Proton variant is Proton GE. While the game engine runs natively on Linux, the renderer runs through Proton.

XRizer should now provide a close-to-flawless experience on most controllers and when using hand tracking, but may cause issues when hand tracking is enabled.

The causes of most common major issues #

  1. Forgetting to set Resonite to use Proton or using an unstable Proton version.

    Open Steam Library -> Right-click Resonite -> Properties -> Compatibility -> Check Force (…) and choose the desired Proton version.

    You can use ProtonUp to install Proton GE or GE RTSP in case of crashes.

    Steam needs to be restarted to detect a new Proton installation.

  2. Using SteamVR.

    Don’t use SteamVR on its own because it’s known to be unstable. If you have a standalone headset, use WiVRn and uninstall SteamVR. In all other cases, use Monado or its wrapper/GUI Envision.

  3. Using OpenComposite in VR.

    Please double-check if WiVRn/Envision is set to use XRizer, not OpenComposite. Explained below.

  4. Using Flatpak WiVRn without launch arguments.

    Flatpak WiVRn requires manually-set Steam launch options. Make sure you’ve rebooted your system after installing WiVRn.

  5. Messing up launch arguments.

  6. Using the default SDL API, see here.

Mirrors look cross-eyed #

When playing Resonite under Monado or WiVRn, the 3D effect of mirrors may appear way off, as if looking through them feels like your eyes are crossed. This only affects headsets with canted displays (e.g. Valve Index, Pimax).

To solve this, prepend OXR_PARALLEL_VIEWS=1 to Resonite’s launch options.

Performance #

In August 2025, Resonite updated to run FrooxEngine as a native Linux process, with the renderer being run through Proton.

Resonite is typically GPU-bottlenecked. Lowering the resolution may help. This can be easily done by prepending OXR_VIEWPORT_SCALE_PERCENTAGE=75 to Resonite’s launch options. Experiment with different values to find your preferred balance between performance and quality.

Clipboard #

As of the Splittening release, Resonite only supports copy/pasting text, and does not work at all in Flatpak Steam with Wayland, issue #5321.

This mod provides full clipboard functionality, but only works on Wayland (and as of now, may require a small workaround): ResoniteLinuxClipboard

Audio issues #

Resonite currently uses SDL for audio on Linux, which will change with the upcoming ResoFlow update, but the current implementation can be a bit flaky.

It is recommended that you use PipeWire as your system’s audio service, including its PulseAudio and ALSA support.

The game will default to the PipeWire API if it can (which can be forced by having the env var SDL_AUDIO_DRIVER=PipeWire), falling back to the PulseAudio API.

Crackling microphone audio #

There has been an issue with WiVRn users’ microphones sounding crackly / glitchy to others when using PipeWire.

If you have that issue, try setting PulseAudio as the SDL backend:

  1. Force Resonite to use PulseAudio for SDL:

    Prepend the env var SDL_AUDIO_DRIVER=PulseAudio to Resonite’s Steam launch options, making sure there’s also a %command% at the end.

  2. Configure PulseAudio if necessary:

    If your mic sounds even more glitchy, you need to add some launch arguments.

    Prepend PULSE_LATENCY_MSEC=15 PULSE_BUFFER_MSEC=250 PULSE_FRAGMENT_SIZE_MSEC=25 to Resonite’s Steam launch options.

    NOTE: These add slight latency compared to PipeWire and ALSA modes. Feel free to experiment with the values to reduce the latency.

An alternative to the above method is using ALSA the as SDL backend (the biggest downside is having to restart WiVRn every time you restart Resonite):

  1. Force Resonite to use ALSA for SDL:

    Prepend the env var SDL_AUDIO_DRIVER=ALSA to Resonite’s Steam launch options (or replace the existing SDL env var).

    There’s a risk this mode will bork your Resonite audio (not always immediately) until you’ve manually configured PipeWire to use a default sample rate of 48kHz as described below.

  2. Configure PipeWire sampling rates if necessary:

    2.1. Locate the directory or create it if it doesn’t exist: ~/.config/pipewire/pipewire.conf.d/.

    NOTE: If you have set $XDG_CONFIG_HOME to something other than ~/.config then please adjust the paths accordingly.

    2.2 Create a configuration file (01-sample-rates.conf for this example) in that folder. The full path should be ~/.config/pipewire/pipewire.conf.d/01-sample-rates.conf.

    2.3 Paste the following content into the file to define supported sample rates, and save it:

    context.properties = {
    default.clock.allowed-rates = [ 44100 48000 88200 96000 ]
    default.clock.rate  = 48000
    }
    

If that didn’t help, you can try forcing SDL to use PipeWire instead.

Note: the capitalization doesn’t matter (e.g. pipewire vs PIPEWIRE)

Virtual audio sources/sinks #

To be able to chose a virtual sink, you have two options:

  1. Use SDL_AUDIO_INCLUDE_MONITORS=1, but this works with the PulseAudio driver only (add it next to your other env vars in launch arguments).
  2. Select any other source in Resonite, and manually connect the wanted input or output to Resonite’s sink using a PipeWire graph GUI (e.g. Coppwr, Qpwgraph, Helvum)

Do note that for the Audio Stream feature of Resonite, you’ll need to select a different source that the one you are using as your microphone, or else SDL will not create a sink dedicated for it. If you only have one input, use the Steam voice option.

Flatpak #

The PipeWire driver is not supported by Steam Flatpak OOTB. See this issue if you need to use the PipeWire driver on Resonite in Steam Flatpak.

No microphone audio #

First, make sure you have the correct mic chosen in Resonite and it’s not muted in system settings.

This bug normally happens when SDL is forced to use ALSA (through Steam launch options) and you restart Resonite while WiVRn is running.

The workarounds include restarting WiVRn (or just the WiVRn server) every time you restart Resonite, or using SDL with PulseAudio instead.

Note: You can’t restart WiVRn while Resonite is running.

FlipVR controller support with Monado #

Currently there is an experimental Monado branch that works with Shiftall FlipVR controllers. Instructions can be found here. At the time of writing, this branch is the only way to use FlipVR controllers with Resonite, as they are not supported even through SteamVR on Windows.

Mods #

Resonite has a thriving modding community with an abundance of mods that offer greater user experience, optimizations and new features.

Currently there are 3 mod loaders:

A more detailed comparison table between modloaders is available here.

Resonite randomly gets stuck on initial loading screen when using RML #

The exact cause of this is currently unknown. Consider using a different modloader if you encounter such issues starting the game as it seems to not cause the same problem.

Crashes #

Renderer issues #

Resonite’s renderer is known to randomly crash suddenly - this is currently tracked at Issue #5325.

There is also a known memory leak when running the renderer on Linux - however, it is uncertain currently whether this is an issue with Proton or there is something else at play - see Issue #5246.

During VR gameplay, the renderer may cause a full GPU Reset if you have an AMD graphics card that is heavily loaded. Check dmesg if this occurs.

Crash on launching in VR mode #

Currently, OpenComposite is known to crash Resonite when used in VR, so attempting to use OpenComposite for Resonite is not recommended.

Symptoms:

  • Crashes only in VR mode, where after several seconds a black window appears and closes briefly, then Resonite stops within approximately 30 seconds.
  • The normal log file shows a renderer crash: RendererProcess has exited. Shutting down.. There’s a Player.log file.

Switch to XRizer.

See Issue #5152 for more information.

Crash on launching in desktop & VR mode #

Proton data can get corrupted, which will result in consistent crashes on launch. This only applies if you’ve already replaced OpenComposite (see above).

The symptoms are:

  • Crashes 2 seconds from launch in desktop mode (and in VR)
  • No log files (no main log, no Player.log, no crash log, no proton log with PROTON_LOG=1, only the bootstrapper log)
  • It may be accompanied by error windows if you’re using a mod loader.

Navigate to compatdata in the folder above Resonite’s folder (by default .local/share/Steam/steamapps/compatdata/) and delete the 2519830 folder; it will regenerate on the next launch. Then verify the integrity of Resonite files in Steam (right-click Resonite and go to Properties>Installed Files>Verify).

It may be enough to just verify file integrity in some cases.

This can also happen because of incorrect Steam launch options.

Crash on loading into a world with video players #

On GE-Proton9-10 (for example), loading into a world with e.g. a YouTube video or live stream can crash the game. Try using the latest GE-Proton-RTSP release.

You can install RTSP Proton using ProtonUp if you open ProtonUp-Qt -> About -> Check Enable advanced mode.

Hanging on Launch #

Symptoms:

  • Steam reports Resonite is running but Resonite does not launch. (In rare cases, Steam might not even report it as running.)

Possible causes:

  • Not having a default audio device selected.

    Solution: Select an/another audio device in your volume panel and see if it works. This is likely an SDL issue.

  • Improperly configured mod loaders and plugins.

    Solution: Try starting without Steam launch options and then re-add the env vars one by one. This is commonly caused by misconfigured MonkeyLoader.

  • Stuck background process, most likely dotnet.

    Solution: Reboot your system or just relog your user, or find the stuck process and terminate it.

Crash after loading #

Although this is rare, some proton updates can start crashing Resonite repetitively.

Symptoms:

  • Crashes approximately 1 minute after successfully loading Resonite.
  • Everything freezes in both desktop mode and VR, but you can still hear sounds, including the voices of other users.

If this happens, just switch Proton to another version such as Proton-GE or Proton-GE-RTSP.

Controls #

Inputs stuck after switching to desktop #

Resonite allows a VR player to take a break and switch to desktop mode by pressing the F8 key.

Because controller hot-swapping is not yet implemented in Monado & OpenComposite, turning off a controller will freeze its state, including buttons pressed and analog stick input. Resonite will continue processing VR inputs even after switching to desktop.

The end result is that desktop controls can act strangely. For example, if you were holding the grab sensor as you turned off the VR controller, picking up items or inspector windows stops working with the mouse.

Controller buttons or hand tracking not working #

There’s an issue that prevents Resonite from switching between hand tracking and controllers.

It happens when you have hand tracking enabled in the headset (even if it’s disabled in WiVRn, for example) and launch Resonite while the controllers are in stand-by mode.

To prevent this, disable hand tracking completely. Alternatively, always hold controllers while starting Resonite, but this isn’t guaranteed to fix hand tracking, and will cause you trouble every time you forget to hold your controllers when starting Resonite (if you’re experiencing this issue).

YouTube videos not playing #

Symptoms:

  • No YouTube videos ever load. (The status is Failed.)
  • YouTube videos take a long time to start loading (stuck on Created).

This is most likely caused by outdated yt-dlp because of a failure to update. Follow these steps to update it manually:

  1. Download the latest nightly yt-dlp for Linux (recommended) or the latest stable.

    At least one of them should work. In the worst-case scenario, download a previous nightly or a previous stable.

  2. Rename it to yt-dlp.

  3. Move it to ~/.local/share/Steam/steamapps/common/Resonite/RuntimeData/ and overwrite the yt-dlp file that was already there.

    To check the version, run yt-dlp --version in the same path.

  4. Mark it as executable with chmod +x ~/.local/share/Steam/steamapps/common/Resonite/RuntimeData/yt-dlp.

    This fixes a Permission denied error you’d otherwise see in the Resonite log.

If that didn’t solve it, replace yt-dlp with a different version as stated in 1.

If that didn’t solve it, your last bet is switching cookie settings in Resonite’s dashboard menu:
Settings>Network>Video Streaming Services>Use Cookies From Browser (start with NONE).

Steam launch options #

When using launch arguments:

  • If you’re using env vars and/or wrappers, use one, and only one %command%.
  • Make sure the arguments follow this order:
    SOME_ENV_VARS=1 some-wrappers %command% -SomeCommandLineOptions

Example:
PROTON_ENABLE_WAYLAND=1 SDL_AUDIO_DRIVER=alsa prime-run game-performance %command% -NeverSaveDash -SkipIntroTutorial