4

My laptop (running Pop_OS 20.04, kernel 5.4 -- it's a Ryzen and works very poorly with any older kernel) pretends to have 2 microphones: a "digital microphone" (that never does anything) and an "headphones microphone" (that works just fine). However at some point pulse audio decided that the default input was the useless (AFAIK non existent) "digital microphone" (probably at the same time it decided that the output volume was shared across headphones and integrated speakers, which is another annoyance but a different problem).

Edit: Here is the output from arecord --list-devices:

% arecord --list-devices
**** List of CAPTURE Hardware Devices ****
card 1: Generic_1 [HD-Audio Generic], device 0: CX8070 Analog [CX8070 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: acp [acp], device 0: DMIC capture dmic-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

And the output from pacmd list-sources | grep 'name:.*input':

% pacmd list-sources | grep 'name:.*input'
    name: <alsa_input.pci-0000_04_00.6.HiFi__hw_acp__source>
    name: <alsa_input.pci-0000_04_00.6.HiFi__hw_Generic_1__source>

When I use the "mute microphone" key shortcut, it mutes the non-working "digital microphone" and lets sound flowing into the "headphones microphone".

I can select the working microphone in Audacity and record fine; however in most applications it's not available at all (for example it's unusable from any videoconferencing software, which is maddening, because most programs only allow using the "defaut" input, probably because the other one is "unplugged" ).

Obviously the "headphones mike" is using the actual headphones mike when headphones with integrated mike are plugged in (though still incorrectly labelled "unplugged"), and uses the integrated laptop mike when no microphone is plugged into the headphones socket. In any case, actual microphones are unavailable to most applications.

In pavucontrol I can't disable the digital microphone nor make the analog, working one the default (I can click on the "default" button but the setting is instantly forgotten). Notice that the "headphones" microphone is incorrectly labelled as "unplugged" while the monitoring bar shows that there's sound coming in).

enter image description here

I've tried some things proposed by this answer but they don't do anything:

% pacmd list | grep active
    active port: <[Out] Headphones>
    active port: <[In] Mic1>
    active port: <[In] Mic2>
    active profile: <off>
    active profile: <HiFi>

Mic1 is the "digital microphone" and "Mic2" the "headphones" one. However:

% pacmd set-source-port 1 "<[In] Mic2>"
Failed to set source port to '<[In] Mic2>'.

Alsamixer doesn't help either; as far as I can tell it only displays one input (the default one).

This is a serious inconvenience mostly because I can't do any videoconferencing unless I'm using my Bluetooth headphones.

I've tried as suggested by this question/answer to set the "analog headphones microphone" to the state of "perpetually plugged-in", no dice, it's still "unplugged":

% sudo vi /usr/share/pulseaudio/alsa-mixer/paths/analog-input-headphone-mic.conf


[Jack Headphone Mic]
required-any = any
state.plugged = yes

3 Answers 3

3
+50

Try to set an active profile. Here is an excerpt of Arch wiki :

The "active profile" can be set with the command pacmd set-card-profile INDEX PROFILE, with no comma separating INDEX and PROFILE, where INDEX is just the number on the line "index:" and a PROFILE name is everything shown from the beginning of any line under "profile:" to just before the colon and first space, as shown by the command pacmd list-cards. For instance, pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo

First list your cards, by pacmd list-cards, then set the card's profile by using pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo where you can replace the '0' in the command by the card's index number. Try keeping the same profile as described in the command, i.e. output:analog-stereo+input:analog-stereo.

You can also do the same from pavucontrol GUI. The last 'Configuration' tab can be used for this.

1
  • The audio card only have one profile, and that's the currently active one.
    – wazoox
    Commented Oct 3, 2020 at 20:55
2

First, you will have to narrow down the name of the analog microphone by getting the list of available sources.

pacmd list-sources | grep -i "name:"

One of these sources will correspond to your analog microphone that you will want to mute, which can 'muteandunmute` with:

pacmd set-source-mute [NAME of source from previous command output] 1 

and unmute with

pacmd set-source-mute [NAME of source from previous command output] 0

Better yet you can set the source as your default source output:

pacmd set-default-source [NAME] 

and then your shortcut, should control your analog microphone.

7
  • Looks promising, but no dice. Even after reboot. The default system input is still this stupid "digital mike" (no other input is even available in the Gnome sound control panel), and on any website ( like onlinemictest.com ) I can't get any sound in. I'm pretty sure the "analog mike" isn't available because it's reputed "unplugged". That's really maddening.
    – wazoox
    Commented Oct 3, 2020 at 20:49
  • To be clear, I've done pacmd set-default-source alsa_input.pci-0000_04_00.6.HiFi__hw_Generic_1__source and also successfully mute/unmute it (I can check with Audacity when monitoring the input). That has absolutely no effect on desktop apps though.
    – wazoox
    Commented Oct 3, 2020 at 20:58
  • do you know what you are using as your volume controller (is it volumeicon for example). If you can mute/unmute from the command line, then this can easily be fed into a keyboard shortcut.
    – NetIceCat
    Commented Oct 3, 2020 at 21:56
  • In your second comment, do you mean that even if you mute the microphone through the command line, your desktop apps still pick it up?
    – NetIceCat
    Commented Oct 3, 2020 at 22:05
  • Actually, let's start from the beginning. Could you post the output of arecord --list-devices and pacmd list-sources | grep 'name:.*input' because its possible that your mic happens to be a read as a single multi-channel source.
    – NetIceCat
    Commented Oct 3, 2020 at 22:22
0

Finally the problem has been solved yesterday when Pop_OS upgraded my kernel to the 5.8 version. Now the default microphone is "Internal microphone", and everything works fine. The "mute microphone" button works, audio recording works in all applications.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .