Microphone not working Ubuntu 19.10

I have an Acer Swift 3 SF314-56 with Ubuntu 19.10 installed (the card is a Realtek ALC256).

My microphone does not work. I've tried lot of thing such as put the line "options snd-hda-intel model=acer-headset-multi" at the botton of the file "/etc/modprobe.d/alsa-base.conf". I've also installed HDAJackRetask and connected pin 012 and 013 to internal mic and bot ovveride. I've set Mic_Boost on alsamixer equal to zero.

enter image description here

Well, nothing worked. The mic is now not dectected at all. Could someone help me?

I missed an infornation. Ubuntu is installed in dual boot alongside windows 10 (which I use rarely). On windows the microphone is detected and works well.


I have been struggling through this issue for months. Apparently this is a recognized issue with devices using the Realtek ALC256 card (which includes the Acer Swift 3). There is a long thread on something similar on bugzilla.

I finally stumbled across a workaround to enable use of headset mics here: acer swift 3: microphone not working with ubuntu 18.04, to add options snd-hda-intel model=dell-headset-multi to the alsa-base.conf. You can follow the steps mentioned there (I did however have to restart my computer as alsa force-reload did not do the trick for me). This worked for me on Acer Swift 3 and Ubuntu 20

Please note however, the onboard mic will still not work.


EDIT: Kernels 5.14-rc5 onwards, 5.13.10 onwards, 5.10.58 onwards have the following fix already applied, enjoy :D

So! Just made my headset microphone work on my Acer SF314-56 on Ubuntu 21.04. Happy happy happy :)

Looks like when you are using SOF driver the options snd-hda-intel ... over at /etc/modprobe.d/* have no effect. Thus (from my understanding) why HDAJackRetask won't help.

Also! Checkout this out! As 5.14-rc1 there is no patch for our lovely SF314-56.. hmmm...

So based on these findings here is the fix...

For custom-kernel people that is easy: Just add the following line and compile.

SND_PCI_QUIRK(0x1025, 0x1300, "Acer SWIFT SF314-56", ALC256_FIXUP_ACER_MIC_NO_PRESENCE), over at struct snd_pci_quirk alc269_fixup_tbl[] at sound/pci/hda/patch_realtek.c. For the brave ones that don't know how-to compile a custom kernel but willing to here is a cool guide. If you are using secureboot then you gotta also sign it. If you are using ZFS then iirc you also need zfs-dkms.

For people who aren't willing to compile a custom-kernel nor have a time machine or just want to experiment fast on some other device

Then you gotta disable SOF and rollback to legacy driver in order to make options snd-hda-intel ... have effect, however! this results with disabling DMIC. So add options snd-intel-dspcfg dsp_driver=1 to /etc/modprobe.d/alsa-base.conf.

Afterwards you gotta create a patch over at /lib/firmware/, lets name it alc256-sound-patch.fw. Based on this documentation and the observation over at /sound/pci/hda/patch_realtek.c that device Acer TravelMate B311R-3 has the patch we need we paste the following code. If you are using some other device this is a place for some experimentation.

[codec]
0x10ec0256 0x10251300 0

[subsystem_id]
0x10251430

Finally enable the patch by also adding options snd-hda-intel patch=alc256-sound-patch.fw to /etc/modprobe.d/alsa-base.conf. Then restart.

If you want also add options snd-hda-codec dyndbg=+p in order to have some more info over at dmesg.

If anyone know how to use options snd-hda-intel with SOF please let us know how-to!