ValveSoftware / SteamVR-for-Linux

Issue tracker for the Linux port of SteamVR
913 stars 45 forks source link

Microphone not working on Valve Index #215

Open beniwtv opened 4 years ago

beniwtv commented 4 years ago

Your system information

Please describe your issue in as much detail as possible:

The Index microphone is detected on the system via ALSA and Pulseaudio, but no input is generated.

Steps for reproducing this issue:

  1. Plug in Valve Index
  2. Start SteamVR
  3. Try to use Index microphone - no sound
Corben78 commented 4 years ago

When I have my C920 attached, though I have selected the Index HMD mic in PulseAudio, it's picking up the input of the C920 mic.

dlpierce commented 4 years ago

I am also getting no sound input from the Index mic. It shows up in the ALSA and PulseAudio mixer controls, and is the only enabled sound input device, but no sound is recorded in Star Trek Bridge Crew, or in native programs like kwave. I noticed it is listed as a mono device, which seems odd since my understanding is it's a stereo mic.

Running updated Arch Linux with the linux-amd-git kernel.

SteamVR System Information gist: https://gist.github.com/dlpierce/913c95e841498c849f72763b9c628b48

Goofybud16 commented 4 years ago

I can confirm this issue on my system as well.

SteamVR 1.6.9 Debian Testing w/ Kernel 5.2.3 (for audio support)

System Report: https://gist.github.com/Goofybud16/e41842b0fa4181707d477d039a770aa3

The microphone shows up in Pulseaudio Volume Control, but it doesn't actually produce sound.

image

image

Goofybud16 commented 4 years ago

I just plugged into a Windows machine temporarily and performed the latest firmware update. The microphone still does not work.

New system report with firmware updates:

https://gist.github.com/Goofybud16/a5962f131b298023e4bb0c616537f149

JulianGro commented 4 years ago

I am having the same problem on Linux Mint 19.1 (Ubuntu 18.04), but only since yesterday. It worked the day before yesterday. Used it the whole day in VRChat.

Goofybud16 commented 4 years ago

I know when I reconnect the headset, it results in Pulseaudio Volume Control seemingly having to reconnect to Pulse (same behavior as running pulseaudio -k, which kills and restarts Pulse). This doesn't happen with my USB mixer, so I wonder if the Index's audio device is somehow causing Pulse to crash and/or misconfigure it? Restarting Pulse doesn't seem to help.

JulianGro commented 4 years ago

PulseAudio actually sometimes hangs when I open pacucontrol or a similar application, while the Index is connected. It stops hanging some time after closing the tool again. Only a full computer restart helps for me. No ALSA or PulseAudio restart.

Also some additional information of the microphone not working: I tried: restarting ALSA restarting PulseAudio restarting the computer reconnecting the Index multiple times reconnecting the Index to different USB controllers

I am running: Linux Mint 19.1 (Ubuntu 18.04 based) ALSA k4.18.0-20-generic pulseaudio 11.1 Nvidia 418.52.07 (audio output works)

JulianGro commented 4 years ago

Also just wanted to report that the microphone not working issue doesn't seem to be consistent. It just randomly started working for me again. No computer restart, no ALSA of PulseAudio restart, nothing.

Vash63 commented 4 years ago

I'm also having microphone issues (among others). Haven't tested enough to see if it's intermittent but it works in Windows, in Linux it shows up in pavucontrol but does no report any input (bar graph doesn't move).

Goofybud16 commented 4 years ago

When I demoed my Index on a Windows machine, the microphone appeared to work perfectly. It's definitely not a hardware issue on my headset.

Could someone with more regular access to a Windows machine check what the sample rate is for the Index microphone?

In my case, pacmd list-sources lists

* index: 14
        name: <alsa_input.usb-Valve_Corporation_Valve_VR_Radio___HMD_Mic_8B37344787-LYM-01.analog-mono>
        driver: <module-alsa-card.c>
        flags: HARDWARE DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
        state: RUNNING
        suspend cause: (none)
        priority: 9049
        volume: mono: 65536 / 100% / 0.00 dB
                balance 0.00
        base volume: 65536 / 100% / 0.00 dB
        volume steps: 65537
        muted: no
        current latency: 0.33 ms
        max rewind: 0 KiB
        sample spec: s16le 1ch 48000Hz
        channel map: mono
                     Mono
        used by: 1
        linked by: 1
        configured latency: 40.00 ms; range is 0.50 .. 2000.00 ms
        card: 5 <alsa_card.usb-Valve_Corporation_Valve_VR_Radio___HMD_Mic_8B37344787-LYM-01>
        module: 32
        properties:
                alsa.resolution_bits = "16"
                device.api = "alsa"
                device.class = "sound"
                alsa.class = "generic"
                alsa.subclass = "generic-mix"
                alsa.name = "USB Audio"
                alsa.id = "USB Audio"
                alsa.subdevice = "0"
                alsa.subdevice_name = "subdevice #0"
                alsa.device = "0"
                alsa.card = "3"
                alsa.card_name = "Valve VR Radio & HMD Mic"
                alsa.long_card_name = "Valve Corporation Valve VR Radio & HMD Mic at usb-0000:03:00.0-12.3.3, full spe"
                alsa.driver_name = "snd_usb_audio"
                device.bus_path = "pci-0000:03:00.0-usb-0:12.3.3:1.1"
                sysfs.path = "/devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-12/1-12.3/1-12.3.3/1-12.3.3:1.1/sound/card3"
                udev.id = "usb-Valve_Corporation_Valve_VR_Radio___HMD_Mic_8B37344787-LYM-01"
                device.bus = "usb"
                device.vendor.id = "28de"
                device.vendor.name = "Valve Software"
                device.product.id = "2102"
                device.product.name = "Valve VR Radio & HMD Mic"
                device.serial = "Valve_Corporation_Valve_VR_Radio___HMD_Mic_8B37344787-LYM"
                device.string = "hw:3"
                device.buffering.buffer_size = "192000"
                device.buffering.fragment_size = "96000"
                device.access_mode = "mmap+timer"
                device.profile.name = "analog-mono"
                device.profile.description = "Analog Mono"
                device.description = "Valve VR Radio & HMD Mic Analog Mono"
                alsa.mixer_name = "USB Mixer"
                alsa.components = "USB28de:2102"
                module-udev-detect.discovered = "1"
                device.icon_name = "audio-card-usb"
        ports:
                analog-input: Analog Input (priority 10000, latency offset 0 usec, available: unknown)
                        properties:

        active port: <analog-input>

EDIT: Also, if someone has the microphone working on Linux, please try and grab this output then too to see if anything is different.

Corben78 commented 4 years ago

With SteamVR 1.7.2 it's now working for me.

beniwtv commented 4 years ago

Same with 1.7.2 - I will keep testing in the coming days to see if keeps working, just to make sure it's not temporary (as some people seem to see intermittent working/non-working)

Zamundaaa commented 4 years ago

Does not work for me on 1.7.2.

Goofybud16 commented 4 years ago

Does not work for me on Beta 1.7.3 either.

If anyone has the mic working, do you mind posting the output of pacmd list-sources? Either the relevant section for the Index mic, or the whole thing (probably in a gist)

beniwtv commented 4 years ago

@Goofybud16 Here you go:

index: 6
    name: <alsa_input.usb-Valve_Corporation_Valve_VR_Radio___HMD_Mic_8136E0D0E4-LYM-01.analog-mono>
    driver: <module-alsa-card.c>
    flags: HARDWARE DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
    state: RUNNING
    suspend cause: (none)
    priority: 9049
    volume: mono: 65536 / 100% / 0,00 dB
            balance 0,00
    base volume: 65536 / 100% / 0,00 dB
    volume steps: 65537
    muted: no
    current latency: 0,35 ms
    max rewind: 0 KiB
    sample spec: s16le 1ch 48000Hz
    channel map: mono
                 Mono
    used by: 1
    linked by: 1
    configured latency: 40,00 ms; range is 0,50 .. 2000,00 ms
    card: 3 <alsa_card.usb-Valve_Corporation_Valve_VR_Radio___HMD_Mic_8136E0D0E4-LYM-01>
    module: 33
    properties:
        alsa.resolution_bits = "16"
        device.api = "alsa"
        device.class = "sound"
        alsa.class = "generic"
        alsa.subclass = "generic-mix"
        alsa.name = "USB Audio"
        alsa.id = "USB Audio"
        alsa.subdevice = "0"
        alsa.subdevice_name = "subdevice #0"
        alsa.device = "0"
        alsa.card = "3"
        alsa.card_name = "Valve VR Radio & HMD Mic"
        alsa.long_card_name = "Valve Corporation Valve VR Radio & HMD Mic at usb-0000:03:00.0-1.4.2.3.3, full"
        alsa.driver_name = "snd_usb_audio"
        device.bus_path = "pci-0000:03:00.0-usb-0:1.4.2.3.3:1.1"
        sysfs.path = "/devices/pci0000:00/0000:00:01.3/0000:03:00.0/usb1/1-1/1-1.4/1-1.4.2/1-1.4.2.3/1-1.4.2.3.3/1-1.4.2.3.3:1.1/sound/card3"
        udev.id = "usb-Valve_Corporation_Valve_VR_Radio___HMD_Mic_8136E0D0E4-LYM-01"
        device.bus = "usb"
        device.vendor.id = "28de"
        device.vendor.name = "Valve Software"
        device.product.id = "2102"
        device.product.name = "Valve VR Radio & HMD Mic"
        device.serial = "Valve_Corporation_Valve_VR_Radio___HMD_Mic_8136E0D0E4-LYM"
        device.string = "hw:3"
        device.buffering.buffer_size = "192000"
        device.buffering.fragment_size = "96000"
        device.access_mode = "mmap+timer"
        device.profile.name = "analog-mono"
        device.profile.description = "Analog Mono"
        device.description = "Valve VR Radio & HMD Mic Analog Mono"
        alsa.mixer_name = "USB Mixer"
        alsa.components = "USB28de:2102"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-usb"
    ports:
        analog-input: Analog Input (priority 10000, latency offset 0 usec, available: unknown)
            properties:

    active port: <analog-input>

Did you get the message that SteamVR needs sudo access to finish setting it up when updating to 1.7.2.? I think it did something there.

One thing I have noticed though, I can make it not work when another process is using the ALSA device, PA will not work. In my case that was Jack.

Zamundaaa commented 4 years ago

I did get that message and it's not working for me, so it should not be that. The only difference I can see between your and my output is that mine says "card: 1" instead of "card: 3" with another ID in the string (that's to be expected) and also "module: 7" instead of "module: 33". I think that's nothing hinting at it not working. Edit: ok I found a difference that's (more or less) the same for me and @Goofybud16. With the long card name I have a " spee" attached on the end. @Goofybud16 has " spe" there. I have no idea if that means anything though.

beniwtv commented 4 years ago

That just seems to be truncated from "full speed" as in full speed USB device.

So I have noticed something (I run Jack alongside PA): If I tell Jack to output sound through the Index (even if nothing is playing, mainly just the DisplayPort audio device is open), the microphone works. Otherwise, it won't.

I am curious if telling PA to use the Index as output, and playing say a YT video at the same time gets the mic working during that time for you guys.

Zamundaaa commented 4 years ago

As soon as SteamVR has started, all audio devices switch to the index automatically (I enabled that KDE should switch to new sources as soon as they're available). Switching from or to it manually also does nothing for the microphone.

beniwtv commented 4 years ago

Yes, but Pulseaudio suspends devices if there is no audible audio going through, closing the ALSA device underneath. Hence my suggestion to play something in YT over the switched audio and check the mic then. This way, Pulse will keep the device open.

Zamundaaa commented 4 years ago

I let Spotify play and the microphone did not work whilst the speakers played the music. It did work for me once now, whilst letting someone else play Pavlov I still had pavucontrol open and it showed the microphone working. Couldn't reproduce that though.

Corben78 commented 4 years ago

Yesterday, with 1.7.3, the mic wasn't working for me anymore. As @beniwtv was reporting it is still working with 1.7.3 on his machine, I tried to change the settings of the nvidia hdmi output. I switched from Dispay Stereo to 7.1 and the device selection jumped to my integrated analog output, but the mic was working then. I couldn't select the HDMI DisplayPort output properly anymore then, though I selected it, the audio was still coming through the integrated analog output and the dropdown showed only analog stero and not Digital Stereo nor 5.1 nor 7.1. Also in pavucontrol the HDMI output was gone. Reconnecting the Index didn't help, but killing PA with pulseaudio -kworked then. Afterwards I could select the nvidia HDMI output again, though the dropdown was now only showing Digital Stereo and not 5.1 nor 7.1 anymore. But the microphone worked then. So there might be an initialization issue.

I had to had Steam VR running, otherwise the HDMI output is not available. But even after quitting and restarting SteamVR the mic kept working after having it working once.

Zamundaaa commented 4 years ago

I can confirm. Running pulseaudio -k when SteamVR is running makes the microphone work.

Goofybud16 commented 4 years ago

I started SteamVR, ran puleaudio -k, and the mic did not appear to start working.

I'll try again after a fresh boot when I get the chance.

ebbit1q commented 4 years ago

The microphone on my valve index is working just fine now on the non beta version (1.6.10), while it wasn't before!

Goofybud16 commented 4 years ago

Just wanted to update: With kernel 5.2.9 and SteamVR 1.7.12, my mic still doesn't work.

Pavucontrol also still seems to loose connection once or twice when I plug in the headset, however Pulse doesn't actually seem to crash (as loopback devices stick around, which disappear when I pulseaudio -k)

I still don't think I've managed to coerce the mic into working even once. I do know it works (at the hardware level) as it worked great when I demo-ed it on a Windows machine.

ebbit1q commented 4 years ago

Have you tried doing an update of your index's firmware? For me updating it fixed the problem.

mnn commented 4 years ago

Mic doesn't work for me as well. I was only able to make it work once (randomly reconnecting headset, killing pulseaudio and restarting SteamVR), but never again. So I guess it is not a defective mic. SteamVR reports all devices as "up to date".

kernel 5.2.8 (Manjaro) pulseaudio 12.2 SteamVR 1.6.10 (can't use beta branch - it always crashes after start)

lostgoat commented 4 years ago

The problem is that the sample rate requested by the EDID is not respected by the rest of the linux audio stack due to complicated reasons.

To work around the issue, set the following in /etc/pulse/daemon.conf:

default-sample-rate = 48000

Then restart pulseaudio by rebooting or running pulseaudio -k

Goofybud16 commented 4 years ago

The problem is that the sample rate requested by the EDID is not respected by the rest of the linux audio stack due to complicated reasons.

To work around the issue, set the following in /etc/pulse/deamon.conf:

default-sample-rate = 48000

Then restart pulseaudio by rebooting or running pulseaudio -k

This worked! Once I applied the config change, restarted Pulseaudio, and started SteamVR, my mic started working.

ebbit1q commented 4 years ago

Important to note the file is called /etc/pulse/daemon.conf not deamon.conf! Adding the default sample rate to the correct file now solved this permanently! (the post has now been corrected)

jerbmega commented 4 years ago

That fixed the issue for me as well.

Vash63 commented 4 years ago

Glad to see the culprit has been found. Can we expect a proper fix that doesn't impact system wide settings in the future?

lostgoat commented 4 years ago

We are working with the graphics driver vendors to address the issue.

Note that the Index earphones are what require the 48KHz sample rate, which is currently being set to 44.1KHz. The invalid sample rate is causing audio artifacts on the Index Hummingbird headset and causing the microphone controller to constantly reset.

StefanTT commented 4 years ago

Yesterday I noticed that microphone input now works. Using latest release Nvidia drivers and 48KHz sample rate. I did not test anything yet.

kedodrill commented 4 years ago

We are working with the graphics driver vendors to address the issue.

Note that the Index earphones are what require the 48KHz sample rate, which is currently being set to 44.1KHz. The invalid sample rate is causing audio artifacts on the Index Hummingbird headset and causing the microphone controller to constantly reset.

The microphone no longer works for me with the latest headset firmware update through SteamVR Beta.

Also, I am curious, do the audio artifacts that you mention still exist as of now? On my new Index, the speakers sometimes give off high pitched noises, which sometimes can be almost constant. This is most prevalent when I bring up the SteamVR menu. I was wondering if this was just a hardware issue and I might have to return my equipment / get replacements but I would like to avoid that if necessary.

UPDATE: I just saw that SteamVR Beta 1.9.8 just dropped a few hours ago, so I will be testing both of these issues in a few hours after work.

ebbit1q commented 4 years ago

I still hear the audio artifacts on 1.9.8, on which application are you testing your microphone?

I have noticed that adding another file ~/.config/pulse/daemon.conf (create if not existing) with default-sample-rate = 48000 fixes the microphone not working on discord in particular. It works without that file for any other application I've tested.

kedodrill commented 4 years ago

@ebbit1q Oh, are the audio artifacts similar to what I describe? The high pitched noises and stuff? If so, that makes me feel a bit better...still sucks that they are there though.

I'm just trying to use it in steam voice chat. I have tried testing the microphone through the settings menu but it just doesn't work.

ebbit1q commented 4 years ago

Yes, random high pitched noises when no sound is playing, I thought it was related to nvidia graphics. It is not noticed in game when sounds are playing etc.

I just tested the steam voice chat and it works just fine. Have you tried the fix I suggested earlier? After adding the line make sure to restart pulse with pulseaudio -k

kedodrill commented 4 years ago

@ebbit1q Interesting! That's basically my experience with the sound. Honestly glad to hear that...now I don't have to send things back.

I will certainly try that fix when I get home. In my previous comment I should've said I was trying it last night - I haven't tried anything today as I have been at work.

Edit: I can confirm that making that file with that line fixed things for me - my mic is now working! Also, on 1.9.9 I am noticing less audio artifacts I think. Maybe it was just a lucky day.

Goofybud16 commented 4 years ago

I've noticed random weird high-pitched noises as well. Almost like a whine that sometimes pulses or something.

I've noticed them in VRChat and opening the quick menu and moving the cursor over it seemed to help, so I thought it was just the game (since most of my time is spent in VRChat, or other games that aren't usually quiet for any extended period of time).

ZarathustraDK commented 4 years ago

Can confirm the broken microphone is still a thing and the fix is still the same.

For me I needed to:

  1. Edit /etc/pulse/daemon.conf and set default-sample-rate = 48000
  2. Create ~/.config/pulse/daemon.conf and add default-sample-rate = 48000
  3. Reboot (can also quit Steam and do pulseaudio -k , but right now some of the VR-processes like VRwebhelper and VRmonitor have a nasty habit of not shutting down properly when exiting Steam, hanging around and muddling the results).

Also of note for those seeking a quick fix: The Microphone will not initialize before SteamVR is started, so don't be disheartened if you don't see activity in the monitor when you yell at the headset before starting SteamVR.

Played VRChat for 15 minutes afterwards, people heard me, and noone complained about bad sound :)

Sys-specs: OS: POP!_OS Ryzen 3900x Nvidia 2080ti Steam beta SteamVR (linux_temp)

mimattr commented 4 years ago

I have noticed that adding another file ~/.config/pulse/daemon.conf (create if not existing) with default-sample-rate = 48000 fixes the microphone not working

@ebbit1q Confirmed, a user-defined ~/.config/pulse/daemon.conf appears to resolve the microphone issue, hopefully @lostgoat can implement this change/workaround soon.

System Information:

Note: Commenters who are also experiencing this issue are encouraged to include the "System Information" section in their replies.

FreeBooteR69-mint commented 4 years ago

I've made the changes in /etc/pulse/daemon.conf and added the ~/.config/pulse/daemon.conf. Microphone still doesn't work. Any time-frame when this might be fixed?

ebbit1q commented 4 years ago

Do note that steamvr has to be running and that the headset's audio device has to be active in order for the microphone to work.

FreeBooteR69-mint commented 4 years ago

I'm aware of that, thank you.

ebbit1q commented 4 years ago

You're welcome.

lllsondowlll commented 4 years ago

Manjaro Linux here, this issue is still present. Not sure why this hasn't been fixed yet in almost over a year but I can confirm the only needed change is to perform the following command: nano ~/.config/pulse/daemon.conf

Then paste in the following line: default-sample-rate = 48000

ctrl+x and save. Then reboot (just to be safe). Set the default input device to Analog HMD and start steamvr. Check sound settings and it should report sound.

Specs: OS: Manjaro Linux KERNEL: 5.4.33-3-MANJARO CPU: Intel Core i7-8700K @ 3.70GHz GPU: NVIDIA GeForce RTX 2080 GPU DRIVER: NVIDIA 440.82 RAM: 32 GB STEAMVR: 1.11.11 HMD: VALVE INDEX

StefanTT commented 4 years ago

I think it is better to not "sudo" edit your own files. Might cause strange issues later on.

lllsondowlll commented 4 years ago

I think it is better to not "sudo" edit your own files. Might cause strange issues later on.

This config file doesn't exist in the system under user by default; therefore, we are creating a file, not editing one. Figured it would be better to leave it as read only per personal preference but removed sudo in commands above for other users per your recommendation.

Scrumplex commented 3 years ago

It seems as if it still does not work consistently. I had it working once but never again. The proposed workarounds above did not work for me.

I have a Vega 56 and audio output is working. But no matter what I try to do the mic won't work.