Headset microphone is not working in ubuntu 20.04

I recently changed from Ubuntu 18 to Ubuntu 20.04 and I have a problem with a combo jack headset microphone of an IPhone. The same device works in Windows (in the same computer) but in Ubuntu focal fossa only the headphones work and the microphone is not working.

As you can see in the image below, the output device is fine while the input device is not.

enter image description here

Previously, until Ubuntu Bionic Beaver, the following https://www.youtube.com/watch?v=00fhAW7qYQk&t=82s worked. But now it doesn't.


Solution 1:

This is not a solution for Bluetooth headset

I also recently changed from Ubuntu 18 to Ubuntu 20.04 LTS and had a similar problem, just that I use headset with a 3.5mm jack.

I resolved it by:

  1. Searching https://www.kernel.org/doc/html/latest/sound/hd-audio/models.html for my laptop model Acer Aspire, I got aspire-headset-mic (Headset pin fixup for Acer Aspire);
  2. Opening /etc/modprobe.d/alsa-base.conf file in VS code;
  3. Adding options snd-hda-intel position fix=1 (on line 44) and options snd-hda-intel model=aspire-headset-mic (on line 45);
  4. Saving the file, restarting the laptop.

Next time I plugged-in the headset, I got the window asking me Select Audio Device (Headphones / Headset).

*Found that link on the second answer from Headset microphone not working on Ubuntu 20.04.

**The video that you posted here also helped me, together with the 1st comment (from user Insp3ctorJon3s) on the video.

Solution 2:

Not enough reputation to comment, therefore new answer to @xaif.

My workstation (Lenovo Thinkpad P53) is not on the list either. Nonetheless, I checked my audio codec with the command cat /proc/asound/card*/codec* | grep Codec, then looked for the Conexant CX8070 in kernel.org. The specific model was not available but the generic headphone-mic-pin added to /etc/modprobe.d/alsa-base.conf did the magic.

Summarizing:

1 - type cat /proc/asound/card*/codec* | grep Codec in terminal;
2 - copy audio codec (mine is Conexant CX8070) and search it in kernel.org;
3 - if the model is not available, read descriptions and see whether a generic for that producer is available. In my case, the description for headphone-mic-pin is 'Enable headphone mic NID 0x18 without detection';
4 - go back to terminal and type sudo nano /etc/modprobe.d/alsa-base.conf and add the line options snd-hda-intel model=headphone-mic-pin, while replacing the codec with your own;
5 - save and close /etc/modprobe.d/alsa-base.conf in nano (Ctrl+X quits the editor and you press Y to confirm that you want to save);
5 - reboot;
6 - plug in the headset after rebooting and you should be able to select it as audio input in Settings/Sound.

This worked for me, hope it will help others too.

Solution 3:

So, after months trying to find a solution to this problem, what finally worked was:

  1. Followed the guidance of the previous posts to obtain the codec of my machine (Aspire E 15 - E5-571G-760Q): ALC283.

  2. Edited the also mentioned file (alsa-base.conf) adding, in the last line, the codecs found at https://www.kernel.org/doc/html/latest/sound/hd-audio/models.html:

options snd-hda-intel model = headset-mic, aspire-headset-mic, alc283-headset, alc283-sense-combo

  1. Restarted.

If you don't know how to access the file, just type sudo nano /etc/modprobe.d/alsa-base.conf in your terminal. At the end, press Ctrl+x and then Enter.

Keep in mind that it is possible to add more than one codec at a time, separating them with commas.