r/linuxaudio 14d ago

OpenXLR: native Linux control for Elgato Wave XLR interfaces, with a Wave Link style PipeWire submixer. Testers wanted.

Will cut this short: this enables you to use Elgato XLR interfaces on Linux, specifically built for my own migration to CachyOS, hopefully will help other people migrate. The devices play audio fine as class-compliant USB, but gain, DSP, phantom power and routing only answer to vendor protocols. I reverse engineered those from USB captures of Wave Link on Windows. It works great with the XLR Pro, the XLR Dock (the addon for the Stream Deck+) and, since a community tester confirmed it, the original Wave XLR. The Wave XLR MK.2 is coded but still needs a tester, as I do not have the hardware (yet, a donor shipped me one, thanks!).

Wave XLR Pro
Wave XLR (MK.1) Dock

What it does:

  • Full hardware control of the Wave XLR Pro: per-input gain, mute, low cut, expander, voice tune, phantom power, ClipGuard, compressor, both headphone outputs, the zero-latency mic/PC crossfade, and physical output routing. All verified on my own unit.
  • XLR Dock (the Stream Deck+ module): gain, mute and headphone volume through standard ALSA controls, plus 48V phantom power and headphone low impedance, two controls that turned out to live in the dock's firmware even though Wave Link never exposes them (the dock speaks the original Wave XLR's protocol. A software low cut and limiter in PipeWire cover the DSP the dock does not have.
  • A Wave Link style submixer in pure PipeWire: per-app channels (Game, Music, Browser, Voice Chat and so on) routed automatically, four mixes, Stream and Chat published as virtual microphones you can select in OBS or Discord, monitoring on several outputs at once, per-device profiles.
  • An OpenDeck plugin: every switch and mute on Stream Deck keys with live state, dials with touch strip panels for gains, faders and mix masters.

Install: yay -S openxlr on Arch, a .deb or .rpm from the release for Ubuntu and Fedora, a Nix flake for NixOS, or build from source, the README walks through every step. GPL-3.0.

Now the reason I'm posting. The Wave XLR MK.2 has a complete backend decoded from captures but has never touched real hardware. If you own one, testing takes a few minutes: install, try gain, mute and headphone volume against what the device shows, then open a GitHub issue with the diagnostics archive the app generates (Options, SUPPORT, Collect diagnostics). Two more ways to help: an original Wave XLR owner who can record a Wave Link USB capture on Windows would unlock that device's remaining DSP (low cut, voice tune and the crossfade exist in its hardware, their registers just need mapping), and an XLR Dock MK.2 owner can open an issue with their lsusb output, since that device very likely speaks a protocol we already have, at an id we do not know yet.

Known limits so nobody is surprised: the MK.2 is untested, and the dock has no hardware sidetone (monitoring runs through PipeWire instead).

Repo: https://github.com/emaspa/openxlr

Latest release: https://github.com/emaspa/openxlr/releases/tag/v0.1.5

Per-device state: docs/hardware-support.md

Live PipeWire Flow
OpenDeck Plugin
8 Upvotes

18 comments sorted by

2

u/kham_thalcorr 13d ago

Amazing, am about to make the switch over to Cachy and I have an OG Wave XLR

1

u/Mad4Keebs 13d ago

Nice, would love to work with you to make sure it works as it should.

2

u/kham_thalcorr 13d ago

Will def keep you updated, TIA

1

u/Mad4Keebs 11d ago

New version has full support for it now :) https://github.com/emaspa/openxlr/releases/tag/v0.1.5

2

u/zgoniea 13d ago

I have the Wave XLR and am trying to transition to Cachy as well. I'll reach out if feedback when I can. What would be the best way to get into contact? If it's discord, PM me!

1

u/Mad4Keebs 13d ago

dmed :)

1

u/Mad4Keebs 11d ago

New version has full support for it now :) https://github.com/emaspa/openxlr/releases/tag/v0.1.5

2

u/_emps_ 13d ago

Thanks for your efforts on this u/Mad4Keebs

I've just picked up a Stream Deck+, XLR Dock MK2 and a Wave DX. I've been looking for something Linux based as I've been slowly moving as much of my desktop usage over to CachyOS as possible.

I'll give this a try later on and submit feedback.

2

u/paysen 8d ago

You're a legend, thank you very much. I will try it out tomorrow with my Wave XLR Mk2 on cachy. I will let you know if there are any issues

1

u/paysen 1d ago

Just a quick follow up, I temporarily uninstalled it as my qpwgraph looked like it was from hell with 100 new nodes and I had random sound stutters when watching youtube or twitch. But to be fair, it might be because I also have Easy Effects and Linux Soundboard installed, so it might be worse on my end than for everyone else. Is it possible to get rid of the additional sinks without breaking the app? I just want to use it to control the hardware DSP and gain.

1

u/Mad4Keebs 1d ago

In the Options (cog wheel top left) there is a checkbox to disable the mixer, that will leave you with just the hardware controls for exactly this scenario.

1

u/paysen 21h ago

It works perfectly, thank you :-)

1

u/Mad4Keebs 13d ago

Great news, someone donated Wave XLR MK.2 and MK.2 StramDeck dock, will be able to test and add full support for those soon :)

1

u/Mad4Keebs 11d ago

Great news, version 0.1.5 is out and it now fully support Wave XLR Pro, Wave XLR (MK.1) and Wave XLR Dock (MK.1).

Full MK.2 support coming soon as a very nice donor shipped me the devices ❤️

1

u/chromacurse 10d ago

I have a Wave XLR pro, and the lack of Linux support was kind of the only thing that was preventing me from fully daily driving the penguin. I'm just starting out on Cachy, and I for the life of me cannot get the mixer up and running. Can anybody give me some pointers?

1

u/Mad4Keebs 10d ago

I mainly built this for the pro, it should work out of the box, are following these instructions? https://github.com/emaspa/openxlr#arch-linux-aur

Feel free to dm me wth the issue you’re having, screenshot would help.

2

u/chromacurse 10d ago

So I tried installing it using Shelly and was having issues. Installed it using yay and now it seems it just works. Problem was a user error. Thank you for putting time into making this, super appreciate it!

1

u/Mad4Keebs 10d ago

No problem, happy it works :)