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).
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