You are not logged in.
I have this laptop for almost a year and a half now, and ever since the internal microphone is not working. It started as a general problem with the sound card itself, as no speakers were initially detected either. I found several solutions on the net, such as specifying option 'dmic=0' on the snd_hda_intel module. Currently, I have the following configuration in /etc/modprobe.d/snd_intel_dspcfg.conf
options snd-intel-dspcfg dsp_driver=1
I made many attempts to fix the internal mic, some of the things I tried:
Installed sof-firmware
Used hdajackretask from alsa-tools to rewire the internal mic in all possible ports (currently in 0x1a based on This post)
blacklisted snd_soc_skl and snd_hda_intel modules
Probably more things that I don't remember now
I generated a report using the alsa-info.sh, which you can find here: https://alsa-project.org/db/?f=ce74858e … e36440d704
Any help would be more than welcome!
Offline
On systems requiring the use of sof-firmware, this configuration does indeed inherently disable the mic (the "dmic"=0 parameter refers to this, you disable the digital internal mic and there are some weird wirings as to why you can't do it that way, dsp_driver=1 has the logical same effect as dmic=0 so that is guaranteed to disable the mic) and the disable the use of sof-firmware. If you want this to work this needs to work without that modprobe configuration. if it doesn't work with just sof-firmware (and without the dsp_driver config) alone you need to report a bug to the sof-firmware project on github.
There have been many fixes here so depending on when you last tried this you should definitely test the current sof-firmware state without this modprobe config (... and reboot after adjusting this of course)
FWIW if there's any chance of the hdajackretask manipulations working, you currently have
[ 72.223228] snd_hda_codec_conexant hdaudioC0D0: hda-codec: reconfiguring
[ 72.223231] snd_hda_codec_conexant hdaudioC0D0: The codec is being used, can't reconfigure.
in the log. For hdajackretask manipulations to be working you need to free the audio card, i.e. in this case run a
systemctl --user mask pipewire wireplumber --now
before doing the hdajackretask and then restart by running the same command but with unmask instead
But still, properly trying sof-firmware again is probably your best bet.
Last edited by V1del (2022-02-03 10:39:00)
Offline
I had sof-firmware until this morning, when I had my last desperate attempt to fix the mic. I did a hardware probe, from which you can see the audio card here here. Based on this, I noticed that the sof-pci-dev was mentioned only in linux 5.2 to 5.4 (I have 5.16), that's why I 'moved away' from sof.
I tried again now with sof-firmware installed and without the dsp_config config, and the card is not detected at all. This is the result of dmesg --level=err
[ 0.284508] ACPI BIOS Error (bug): AE_AML_BUFFER_LIMIT, Field [CAP1] at bit offset/length 64/32 exceeds size of target Buffer (64 bits) (20210930/dsopcode-198)
[ 0.284533] ACPI Error: Aborting method \_SB._OSC due to previous error (AE_AML_BUFFER_LIMIT) (20210930/psparse-529)
[ 12.412900] snd_soc_skl 0000:00:1f.3: Fallback tplg fw dfw_sst.bin load failed with -2
[ 12.412963] snd_soc_skl 0000:00:1f.3: Failed to init topology!
[ 12.413001] snd_soc_skl 0000:00:1f.3: ASoC: error at snd_soc_component_probe on 0000:00:1f.3: -2
[ 12.413069] skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: failed to instantiate card -2
Also, I don't think any sof module is being loaded. Here's the result of lsmod|grep snd:
snd_seq_dummy 16384 0
snd_hrtimer 16384 1
snd_seq 90112 7 snd_seq_dummy
snd_seq_device 16384 1 snd_seq
snd_soc_skl_hda_dsp 24576 0
snd_soc_intel_hda_dsp_common 20480 1 snd_soc_skl_hda_dsp
snd_soc_hdac_hdmi 45056 1 snd_soc_skl_hda_dsp
snd_hda_codec_conexant 28672 0
snd_hda_codec_generic 98304 1 snd_hda_codec_conexant
ledtrig_audio 16384 1 snd_hda_codec_generic
snd_soc_skl_ssp_clk 16384 0
snd_soc_dmic 16384 0
snd_soc_skl 221184 1 snd_soc_skl_ssp_clk
snd_soc_hdac_hda 28672 1 snd_soc_skl
snd_hda_ext_core 36864 3 snd_soc_hdac_hdmi,snd_soc_hdac_hda,snd_soc_skl
snd_soc_sst_ipc 20480 1 snd_soc_skl
snd_soc_sst_dsp 40960 1 snd_soc_skl
snd_soc_acpi_intel_match 61440 1 snd_soc_skl
snd_soc_acpi 16384 2 snd_soc_acpi_intel_match,snd_soc_skl
snd_soc_core 393216 5 snd_soc_hdac_hdmi,snd_soc_hdac_hda,snd_soc_skl,snd_soc_dmic,snd_soc_skl_hda_dsp
snd_compress 28672 1 snd_soc_core
ac97_bus 16384 1 snd_soc_core
snd_pcm_dmaengine 16384 1 snd_soc_core
snd_hda_intel 61440 0
snd_intel_dspcfg 32768 2 snd_hda_intel,snd_soc_skl
snd_intel_sdw_acpi 20480 1 snd_intel_dspcfg
snd_hda_codec 184320 6 snd_hda_codec_generic,snd_hda_codec_conexant,snd_hda_intel,snd_soc_intel_hda_dsp_common,snd_soc_hdac_hda,snd_soc_skl_hda_dsp
snd_hda_core 118784 9 snd_hda_codec_generic,snd_hda_codec_conexant,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_soc_intel_hda_dsp_common,snd_soc_hdac_hdmi,snd_soc_hdac_hda,snd_soc_skl
snd_hwdep 20480 1 snd_hda_codec
snd_pcm 167936 8 snd_hda_intel,snd_hda_codec,snd_soc_hdac_hdmi,snd_compress,snd_soc_core,snd_soc_skl,snd_hda_core,snd_pcm_dmaengine
snd_timer 45056 3 snd_seq,snd_hrtimer,snd_pcm
snd 126976 15 snd_hda_codec_generic,snd_seq,snd_hda_codec_conexant,snd_seq_device,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_timer,snd_soc_hdac_hdmi,snd_compress,snd_soc_core,snd_pcm,snd_soc_skl_hda_dsp
soundcore 16384 1 snd
Is there a way to force the kernel to load the snd_sof_pci module instead of the snd_soc_skl and snd_hda_intel. From what I understood, one should use one or the other, right?
EDIT:
I thought maybe "dmesg | grep snd" would be more informative. There seems to be some 'errors' that are not reported as errors on dmesg, and don't appear in the previous output:
[ 24.479118] snd_soc_skl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100
[ 24.479127] snd_soc_skl 0000:00:1f.3: Digital mics found on Skylake+ platform, using SST driver
[ 24.479138] snd_soc_skl 0000:00:1f.3: enabling device (0000 -> 0002)
[ 25.065662] snd_soc_skl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[ 25.212329] snd_soc_skl 0000:00:1f.3: Direct firmware load for 9d71-INTEL-KBL-2-tplg.bin failed with error -2
[ 25.212337] snd_soc_skl 0000:00:1f.3: tplg fw 9d71-INTEL-KBL-2-tplg.bin load failed with -2, trying alternative tplg name skl_hda_dsp_generic-tplg.bin
[ 25.212517] snd_soc_skl 0000:00:1f.3: Direct firmware load for skl_hda_dsp_generic-tplg.bin failed with error -2
[ 25.212521] snd_soc_skl 0000:00:1f.3: tplg skl_hda_dsp_generic-tplg.bin failed with -2, falling back to dfw_sst.bin
[ 25.212552] snd_soc_skl 0000:00:1f.3: Direct firmware load for dfw_sst.bin failed with error -2
[ 25.212556] snd_soc_skl 0000:00:1f.3: Fallback tplg fw dfw_sst.bin load failed with -2
[ 25.212619] snd_soc_skl 0000:00:1f.3: Failed to init topology!
[ 25.212658] snd_soc_skl 0000:00:1f.3: ASoC: error at snd_soc_component_probe on 0000:00:1f.3: -2
Last edited by nakano (2022-02-03 11:47:52)
Offline
There's nothing to little you need to manually do here, the kernel will do the correct thing (... it does, it tries to load with snd_soc_skl in this case) which should be correct. Another suggestion I have based on the sst failure is to try
options snd-intel-dspcfg dsp_driver=2
instead of 1.
Other than that, since afaik sof-firmware is absolutely required on this to make the mic work, the best bet you have is reporting a bug to the sof-firmware project: https://github.com/thesofproject/sof/issues
Another thing I've found which reads exactly like the problem we have here but also mentions that this wouldn't work for conexant chips, but may be worth a try: https://gist.github.com/crojewsk/4e6382 … 74211f29cb
Last edited by V1del (2022-02-03 11:55:59)
Offline
Tried the dsp_driver=2, but with the same results.
Also, I've seen the gist you refer to, but since it says that it won't work on Conexant codecs, I didn't even try it.
I will file a bug on thesofproject, and come back with any news.
Thanks for the effort!
Offline
It seems hopeless...
From reading a closed bug request on the github repo of SOF, and later the documentation on SOF website, it seems that Skylake and KabyLake platforms are not supported by SOF, and they won't be any time soon (something to do with Intel not being willing to cooperate).
Edit: I'm on Kaby Lake
Last edited by nakano (2022-02-03 12:40:35)
Offline