A friend gifted me an Elgato Wave 3 a while back and I hadn’t had a chance to use it because I didn’t have a proper mic setup. Now, I have a proper setup using a new desktop that runs Pop OS 22.04. The issue is that the microphone part of the Wave 3 only sometimes works. Some order of changes in the configuration of PulseAudio Volume Control allows it to work for some time before it stops collecting audio. This is problematic as I use Discord to communicate with friends.
I have an Audio-Technica ATH-M50x connected to the Wave 3 for audio output via 3.5mm jack, and the Wave 3 is connected via USB-A Gen 3.1 to the desktop. The Wave 3 should function flawlessly as audio input and output, but it doesn’t. Only the audio output works 100% of the time.
Things I’ve Tried
Scouring the internet for solutions, I’ve come across many. Here are the ones I’ve tried:
Using PulseAudio Volume Control to see if the mic accepts input.
Plugging the Wave 3 into my monitors (it uses USB-C to USB-A) for more power.
Ensuring that Discord is not the problem (it is not, it works in Discord 1/5 times).
Running any number of commands in Terminal to see if the audio server is running/device is picked up or detected.
Other Info
Pop OS comes with PipeWire installed as the default, so anything regarding installing PipeWire to fix the issue is shot. I’ve read a few articles on Reddit about how the Elgato Wave 3 doesn’t work properly on Linux but I wanted to see if someone in here has an actual fix for this problem before I try something else.
Alternatives
I currently do not have a 3.5mm cable long enough to plug into my desktop, which could also potentially “fix” the issue as the Wave 3 would function only as input and not both input and output.
If so posting the error on here could help. I’m not very familiar with Elegato’s microphone hardware, but I would not be shocked if they have compatibility issues with linux. I use a blue yeti and have had no issues with them.
Doing a simple sudo dmesg | grep audio yields this. It looks about like what I should be looking for, but I could be missing other stuff because I only looked for audio.
Apologies it took me a moment to get back to ya. Glad you were able to find the command.
So it’s showing that it was successfully registered under USB. At least as of right now. If you can induce the error then rerun the command it could help narrow down the error. But my money is that the issue is going to be related to compatibility with your flavor of Linux.
I don’t know how to induce the error is part of the issue. If I did, I could at least have a workaround by knowing how it is induced and then not do that, or do the opposite to resolve the issue when it pops up.
I tried running sudo dmesg | grep audio again, but this time it didn’t output anything. I don’t know why, but I hit Enter and nothing shows up. So I did sudo dmesg again just to make sure the command works and I just get a bunch of this:
[ 9507.331724] snd_hda_intel 0000:e2:00.1: PCIe Bus Error: severity=Correctable, type=Data Link Layer, (Transmitter ID)
[ 9507.331728] snd_hda_intel 0000:e2:00.1: device [10de:10f0] error status/mask=00001000/00000000
[ 9507.331732] snd_hda_intel 0000:e2:00.1: [12] Timeout
[ 9507.447407] pcieport 0000:e0:03.1: AER: Multiple Correctable error message received from 0000:e2:00.0
[ 9507.447432] nvidia 0000:e2:00.0: PCIe Bus Error: severity=Correctable, type=Data Link Layer, (Transmitter ID)
[ 9507.447436] nvidia 0000:e2:00.0: device [10de:1b80] error status/mask=00001000/00000000
[ 9507.447440] nvidia 0000:e2:00.0: [12] Timeout
[ 9507.447444] nvidia 0000:e2:00.0: AER: Error of this Agent is reported first
[ 9507.447454] snd_hda_intel 0000:e2:00.1: PCIe Bus Error: severity=Correctable, type=Data Link Layer, (Transmitter ID)
[ 9507.447458] snd_hda_intel 0000:e2:00.1: device [10de:10f0] error status/mask=00001000/00000000
[ 9507.447462] snd_hda_intel 0000:e2:00.1: [12] Timeout
[ 9507.464856] pcieport 0000:e0:03.1: AER: Multiple Correctable error message received from 0000:e2:00.0
[ 9507.464870] nvidia 0000:e2:00.0: PCIe Bus Error: severity=Correctable, type=Data Link Layer, (Transmitter ID)
[ 9507.464874] nvidia 0000:e2:00.0: device [10de:1b80] error status/mask=00001000/00000000
Probably completely unrelated.
As for that page, yeah I found it and the steps didn’t work for me despite being on Pop OS and using Pulse Audio Volume Control. The options they mentioned do not show up for me; I only get this:
for my dual input+output options. Separating the channels as mentioned in the link doesn’t yield any multichannel audio input, only “Microphone”:
So yeah, I have no idea what’s going on. If it worked before for this person, then maybe Pop OS broke it somehow or the apps changed/removed functionality or the Wave 3 isn’t able to send the proper information so that the PC can detect it.
So you shouldn’t be getting those errors. These are usually indicative that you need a BIOS update. If not then your most likely waiting on a update from Pop OS itself.
Very annoying, but that was a 4 year old post. Was hoping it would still be relevant since you are on Pop OS.
Yeah, it’s very perplexing. I am thinking you’re most likely dealing a with driver/firmware issue. I would try some of the basics for updating the OS, drivers, and BIOS.
It also could be PulseAudio not playing well with the mic due to the above driver issue. You could try installing pipewire: https://pipewire.org/
I’ve never used pipewire, but have heard some good things about it. Just make sure to make a backup of your PC with something like clonezilla/rescuezilla before messing with it so if you need to you can easily reset your PC if you bork your audio.
If none of the above works then my money is Elegato has borked firmware for Linux.
My mainboard is the ASUS Pro WS WRX90E-SAGE SE, which I recently upgraded to BIOS 0803. As of this post, this is the latest BIOS for the mainboard, so it can’t be that (unless ASUS screwed up).
Pop OS comes with Pipewire installed already. I suppose I could try to reinstall it but I don’t think that would help much.
I will continue to wait, as Pop OS 24.04 is currently in alpha and because I plan to stay in this OS I could just wait it out and see if it fixes things. However, until that comes out, I don’t have any other ideas. I do highly suspect a driver/firmware issue, but since my PC hardware is off-the-shelf I don’t think anything on Pop OS’s firmware update page would help me. Nor does the System Firmware page suggest that I have any pending updates that I need to install for the firmware.
Did a little more digging and found this information. Pop OS (22.04) uses PulseAudio on PipeWire, as shown in this output of pactl info:
Server String: /run/user/1000/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 188
Tile Size: 65472
User Name: |REDACTED|
Host Name: |REDACTED|
Server Name: PulseAudio (on PipeWire 1.0.3)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.usb-Elgato_Systems_Elgato_Wave_3_BS14M1A01647-00.analog-stereo
Default Source: alsa_input.usb-Elgato_Systems_Elgato_Wave_3_BS14M1A01647-00.mono-fallback.3
Cookie: 47ad:cd90
Now the curious thing is that I was told on Pop OS’ official forums that I should install PulseAudio Volume Control. The thing is, most of time it only works as pure input or pure output, and PulseAudio Volume Control will reflect this, but trying to change anything using pacmd doesn’t work: it’ll report that no daemon is running:
~$ pacmd info
No PulseAudio daemon running, or not running as session daemon.
Furthermore, when I run pipewire-pulse (because I assume this is what the actual audio server is), it spits this out:
[W][00197.892361] mod.protocol-pulse | [ server.c: 589 start_unix_server()] server 0x576b99afb520: socket '/run/user/1000/pulse/native' is in use
[W][00197.892446] mod.protocol-pulse | [ server.c: 1021 servers_create_and_start()] pulse-server 0x576b99afad70: failed to start server on 'unix:/run/user/1000/pulse/native': Address already in use
[E][00197.892457] mod.protocol-pulse | [ pulse-server.c: 5526 pw_protocol_pulse_new()] 0x576b99afad70: no servers could be started: Address already in use
[E][00197.892507] pw.conf | [ conf.c: 573 load_module()] 0x576b99ac58d0: could not load mandatory module "libpipewire-module-protocol-pulse": Address already in use
[E][00197.892688] default | [ pipewire.c: 105 main()] failed to create context: Address already in use
My gut takeaway from all this is that I feel PulseAudio Volume Control is communicating with the server properly, and therefore won’t allow me to change the Wave 3’s functionality to anything other than basic input or basic output. I know jackshit about audio, but I would guess that there is some more advanced stuff going on in order for the input and ouput channels to be use at the same time, which something in this chain is breaking, and therefore removing my ability to use the microphone as a combo input/output.
I will reiterate that it has worked as intended before on a handful of occasions, but this is the exception to its current behavior, and not the rule.
In a fit of frustration, I unplugged the headphones from the jack at the back of the Wave 3. I had PulseAudio Volume Control open, and the Wave 3 was set to “Mono Input”. Obviously, in this mode it was able to pick up sound. I plugged my headphones back into the back of the Wave 3, and change the mode to “Digital Stero (IEC958) Output + Mono Input”. It was still picking up audio, and was able to play back a video I opened to test if the output worked. It did in fact, work! However, I’m not yet convinced this is a consistent and repeatable workaround for my problem so I am hesistant to call this a solution just yet. It is unfortunate if this is a viable “solution”, but at this point I’ll take “unplugging it and plugging it back in” over nothing.
I wonder if there is anyone at Elgato I can poke to provide official support for Linux users…
I should have noticed this sooner, and I don’t know what is causing this, but when I set the configuration of my Elgato to Digital Stereo (IEC958) Output + Mono Input, the Input Devices section will also show the Monitor of Elgato Wave 3 Digital Stereo (IEC958) as an input. Why is my output being detected as an input? The actual microphone shows up as well, but nothing is being captured through the microphone. I’ve pasted an image of this below.
Disabling the Monitor... Stereo as an input by clicking the sound icon in PulseAudio Volume Control doesn’t do anything. I suspect there’s some driver issue within Linux that has difficulty detecting/disambiguating audio channels on “complex” devices like the Elgato, but I have no idea.
However, it does work if I click around PulseAudio Volume Control enough, so it can work, I just don’t know how to make it do so consistently. Perhaps someone will see this and be able to act upon this clue.
My microphone was not capturing any audio, but when I joined a channel in Discord and switched the Configuration to Pro Audio, it worked. And when I switched it again to Digital Stereo + Mono Input, it still worked.
I don’t know if this is a fluke, but I’m writing this down and future me will see if this can be reliably replicated. It seems weird that the microphone will only “start working” in this way.
Note how there is now a small blue bar for the Microphone; this shows it is picking up background noise, and when the microphone works, that bar is almost always there (because the computer fans are always spinning).