ValveSoftware / SteamOS

SteamOS community tracker
1.57k stars 70 forks source link

Internal microphone disabled when headphones connected (OLED) #1346

Open IncredibleGonzo opened 9 months ago

IncredibleGonzo commented 9 months ago

Your system information

Please describe your issue in as much detail as possible:

One of the changes listed for the OLED SteamDeck was the ability to use the internal microphone with 3.5mm headphones connected. This does work, but only if I go into desktop mode, switch from headset mic (which is selected when headphones are connected, regardless of whether the headphones have a mic) to internal mic. It will then use the internal mics as long as the headphones remain connected and this will persist after switching back to game mode - but only until the headphones are disconnected. Reconnecting them will default back to headset mic and requires going back into desktop mode.

Possibly related, input options in game mode settings are Default (Microphone), filter-chain-source, and output.virtual-source, (the first two of which seem functionally identical, the third of which results in no mic audio). This is quite different from the friendlier Default (Speakers), Speakers, and External which appear under output options. The options also do not change when a headset is plugged in.

I have tried reinstalling and reimaging to no effect, and have also tried switching to the Preview channel (3.5.13 and the January 8th client beta at the time) which did also did not affect the microphone behaviour.

Steps for reproducing this issue:

  1. Start using the microphone, eg. in Steam Chat
  2. Plug in headphones (without a mic, or it will use that)
  3. Microphone audio is no longer being sent through to the application.
Haxorzz commented 9 months ago

I've also experienced this trying to play Lethal Company. I wanted to use headphones so my mic doesn't get feedback yet no matter what combination of in game and SteamOS settings I tried the internal mic did not output anything in game.

puzys commented 8 months ago

Same issue. Even though the OLED model apparently should have this functionality..

AurelioB commented 6 months ago

Digging with pactl before and after connecting wired headphones I found out the source stays the same: alsa_input.pci-0000_04_00.5-platform-nau8821-max.HiFi__hw_sofnau8821max_0__source and that's what is listed in audio settings as Default (Microphone). What we need is the ability to select the port. There's 2 listed under that source:

  1. [In] Internal Mic
  2. [In] Headset

This can be tested with pactl as well:

Select internal microphone port: pactl set-source-port "alsa_input.pci-0000_04_00.5-platform-nau8821-max.HiFi__hw_sofnau8821max_0__source" "[In] Internal Mic"

Select external microphone port: pactl set-source-port "alsa_input.pci-0000_04_00.5-platform-nau8821-max.HiFi__hw_sofnau8821max_0__source" "[In] Headset"

You can verify all this by running pactl -f json list sources | jq

anemyte commented 4 months ago

What we need is the ability to select the port. There's 2 listed under that source:

1. `[In] Internal Mic`
2. `[In] Headset`

The ability to select the port is available in System settings -> Audio, you can add it as an external "game" to be able to use it in the game mode. There you'll see one of the inputs has a drop-down list where you can pick the internal mic and it will work as promised. Sadly, the change isn't permanent so you have to do it every time you plug headphones in.

I suppose there has to be a way to make the change permanent if you can somehow alter the port priorities but I was unable to find how to do that.