No microphone, how to get firmware dsp_basefw.bin?

Hello,
I am on an Acer Swift3 laptop and have been having sound issues.
To get any sound at all I have to use boot.kernelParams = [ "snd_hda_intel.dmic_detect=0" ]; (depreciated) or the new version of that command: boot.kernelParams = [ "snd-intel-dspcfg.dsp_driver=1" ];. I must use that because otherwise no sound firmware loads at all on boot. That got sound working but not the microphone.

I have discovered that it works on Kubuntu.
Here is my logs from alsa-info:
NixOS: http://alsa-project.org/db/?f=0c1496be9bcca85ba3abdc4e210b7942d26a834e
Kubuntu: http://alsa-project.org/db/?f=28a1e9c315cad45d2e2851560355dbac21e447a0

One big thing I noticed between the two is that they use different firmware.
NixOS: snd_hda_intel
Kubuntu: snd_soc_skl_hda_dsp or Driver: /sys/bus/platform/drivers/skl_hda_dsp_generic

After some digging I saw on the linux kernel there were some other options https://github.com/torvalds/linux/blob/052d534373b7ed33712a63d5e17b2b6cdbce84fd/sound/hda/intel-dsp-config.c: MODULE_PARM_DESC(dsp_driver, "Force the DSP driver for Intel DSP (0=auto, 1=legacy, 2=SST, 3=SOF)");.

0 doesn’t work. 1 is what I am already using. 2 doesn’t work similar to 0. Now option 3 has no sound, but on the other hand has an interesting error message:

[    0.054181] Kernel command line: initrd=\efi\nixos\mrjgql6ddf7d84vk83xwl91w7p5sd8b2-initrd-linux-6.6.8-initrd.efi init=/nix/store/8isgmfdypcsakqrwhrdm6m1a23zflpbh-nixos-system-nyxos-24.05.20231224.5f64a12/init snd-intel-dspcfg.dsp_driver=3 snd_rn_pci_acp3x.dmic_acpi_check loglevel=4
[    0.055462] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear)
--
[    5.103949] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
[    5.138819] sof-audio-pci-intel-skl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100
[    5.153433] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on minor 0
--
[    5.155548] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input20
[    5.155706] sof-audio-pci-intel-skl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    5.160782] fbcon: i915drmfb (fb0) is primary device
--
[    5.187326] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
[    5.281698] sof-audio-pci-intel-skl 0000:00:1f.3: use msi interrupt mode
[    5.319751] sof-audio-pci-intel-skl 0000:00:1f.3: hda codecs found, mask 5
[    5.319754] sof-audio-pci-intel-skl 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now
[    5.319759] sof-audio-pci-intel-skl 0000:00:1f.3: DMICs detected in NHLT tables: 2
[    5.321303] sof-audio-pci-intel-skl 0000:00:1f.3: Direct firmware load for intel/avs/kbl/dsp_basefw.bin failed with error -2
[    5.321307] sof-audio-pci-intel-skl 0000:00:1f.3: error: sof firmware file is missing, you might need to
[    5.321326] sof-audio-pci-intel-skl 0000:00:1f.3:        download it from https://github.com/thesofproject/sof-bin/
[    5.321342] sof-audio-pci-intel-skl 0000:00:1f.3: error: failed to load DSP firmware -2
[    5.322062] sof-audio-pci-intel-skl 0000:00:1f.3: error: sof_probe_work failed err: .2
[    5.430904] iwlwifi 0000:02:00.0: Applying debug destination EXTERNAL_DRAM

The important thing to note is sof-audio-pci-intel-skl 0000:00:1f.3: Direct firmware load for intel/avs/kbl/dsp_basefw.bin failed with error -2.

I’ve tried adding sof-firmware to my package list. I have tried adding it to the kernel modules, and extra modules. I still can’t get it to add sof-firmware. Is there a special way to configure it to add the appropriate firmware?

Hi, I am experiencing a similiar issue. For me, it looks like the new kernel version 6.7.0 might have introduced this issue.

My system is a Dell XPS 15 9560.

After upgrading to the newest kernel 6.7.0, my audio devices were not available anymore and it just listed a “Dummy output”. Going back one Revision (6.6.8) fixed the issue. Currently I am using 6.6.11, which also runs fine.

These are the interesting parts in my kernel log:

[Mi Jan 17 20:46:07 2024] snd_hda_codec_realtek hdaudioB0D0: autoconfig for ALC3266: line_outs=1 (0x17/0x0/0x0/0x0/0x0) type:speaker
[Mi Jan 17 20:46:07 2024] snd_hda_codec_realtek hdaudioB0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[Mi Jan 17 20:46:07 2024] snd_hda_codec_realtek hdaudioB0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[Mi Jan 17 20:46:07 2024] snd_hda_codec_realtek hdaudioB0D0:    mono: mono_out=0x0
[Mi Jan 17 20:46:07 2024] snd_hda_codec_realtek hdaudioB0D0:    inputs:
[Mi Jan 17 20:46:07 2024] snd_hda_codec_realtek hdaudioB0D0:      Headset Mic=0x18
[Mi Jan 17 20:46:07 2024] snd_hda_codec_realtek hdaudioB0D0:      Headphone Mic=0x1a
[Mi Jan 17 20:46:07 2024] snd_hda_codec_realtek hdaudioB0D0:      Internal Mic=0x12
[Mi Jan 17 20:46:07 2024] snd_hda_codec_realtek hdaudioB0D0: creating for ALC3266 Analog 0
[Mi Jan 17 20:46:07 2024] snd_soc_avs 0000:00:1f.3: Direct firmware load for intel/avs/hda-10ec0298-tplg.bin failed with error -2
[Mi Jan 17 20:46:07 2024] snd_soc_avs 0000:00:1f.3: request topology "intel/avs/hda-10ec0298-tplg.bin" failed: -2
[Mi Jan 17 20:46:07 2024] avs_hdaudio avs_hdaudio.0: trying to load fallback topology hda-generic-tplg.bin
[Mi Jan 17 20:46:07 2024] snd_soc_avs 0000:00:1f.3: Direct firmware load for intel/avs/hda-generic-tplg.bin failed with error -2
[Mi Jan 17 20:46:07 2024] snd_soc_avs 0000:00:1f.3: request topology "intel/avs/hda-generic-tplg.bin" failed: -2
[Mi Jan 17 20:46:07 2024] snd_soc_avs 0000:00:1f.3: ASoC: error at snd_soc_component_probe on hdaudioB0D0-platform: -2
[Mi Jan 17 20:46:07 2024] avs_hdaudio avs_hdaudio.0: ASoC: failed to instantiate card -2
[Mi Jan 17 20:46:07 2024] avs_hdaudio: probe of avs_hdaudio.0 failed with error -2
[Mi Jan 17 20:46:07 2024] snd_hda_codec_hdmi hdaudioB0D2: creating for HDMI 0 0
[Mi Jan 17 20:46:07 2024] snd_hda_codec_hdmi hdaudioB0D2: skipping capture dai for HDMI 0
[Mi Jan 17 20:46:07 2024] snd_hda_codec_hdmi hdaudioB0D2: creating for HDMI 1 1
[Mi Jan 17 20:46:07 2024] snd_hda_codec_hdmi hdaudioB0D2: skipping capture dai for HDMI 1
[Mi Jan 17 20:46:07 2024] snd_hda_codec_hdmi hdaudioB0D2: creating for HDMI 2 2
[Mi Jan 17 20:46:07 2024] snd_hda_codec_hdmi hdaudioB0D2: skipping capture dai for HDMI 2
[Mi Jan 17 20:46:07 2024] snd_soc_avs 0000:00:1f.3: Direct firmware load for intel/avs/hda-8086280b-tplg.bin failed with error -2
[Mi Jan 17 20:46:07 2024] snd_soc_avs 0000:00:1f.3: request topology "intel/avs/hda-8086280b-tplg.bin" failed: -2
[Mi Jan 17 20:46:07 2024] avs_hdaudio avs_hdaudio.2: trying to load fallback topology hda-8086-generic-tplg.bin
[Mi Jan 17 20:46:07 2024] snd_soc_avs 0000:00:1f.3: Direct firmware load for intel/avs/hda-8086-generic-tplg.bin failed with error -2
[Mi Jan 17 20:46:07 2024] snd_soc_avs 0000:00:1f.3: request topology "intel/avs/hda-8086-generic-tplg.bin" failed: -2
[Mi Jan 17 20:46:07 2024] snd_soc_avs 0000:00:1f.3: ASoC: error at snd_soc_component_probe on hdaudioB0D2-platform: -2
[Mi Jan 17 20:46:07 2024] avs_hdaudio avs_hdaudio.2: ASoC: failed to instantiate card -2
[Mi Jan 17 20:46:07 2024] avs_hdaudio: probe of avs_hdaudio.2 failed with error -2

There are people on Arch having similar problems after using 6.7.0 Audio partially broken after update (kernel 6.7) / Kernel & Hardware / Arch Linux Forums

Ah, I just saw in your logs, that you are using 6.6.8, so it might be something else

Hello, I am having a firmware issue.
I need to know how to install sof-firmware for Nix where as the instructions in the official https://github.com/thesofproject/sof-bin/ as listed by the error messages given to me by the system will not work for NixOS because it rearranges the file structure a bit.

I have tried a couple different firmware versions and none make any improvements for my particular needs.

> fd dsp_basefw.bin
nix/store/q7qnbb0lkgzypisd1gmv4m181qkp4laj-linux-firmware-20231111-xz/lib/firmware/intel/catpt/bdw/dsp_basefw.bin.xz
nix/store/q7qnbb0lkgzypisd1gmv4m181qkp4laj-linux-firmware-20231111-xz/lib/firmware/intel/avs/apl/dsp_basefw.bin.xz
nix/store/q7qnbb0lkgzypisd1gmv4m181qkp4laj-linux-firmware-20231111-xz/lib/firmware/intel/avs/skl/dsp_basefw.bin.xz
nix/store/q7qnbb0lkgzypisd1gmv4m181qkp4laj-linux-firmware-20231111-xz/lib/firmware/intel/avs/cnl/dsp_basefw.bin.xz
nix/store/m9hfsvlr1ahyjk673n6qrb1sn835dgqn-linux-firmware-20231211-xz/lib/firmware/intel/catpt/bdw/dsp_basefw.bin.xz
nix/store/m9hfsvlr1ahyjk673n6qrb1sn835dgqn-linux-firmware-20231211-xz/lib/firmware/intel/avs/apl/dsp_basefw.bin.xz
nix/store/m9hfsvlr1ahyjk673n6qrb1sn835dgqn-linux-firmware-20231211-xz/lib/firmware/intel/avs/skl/dsp_basefw.bin.xz
nix/store/m9hfsvlr1ahyjk673n6qrb1sn835dgqn-linux-firmware-20231211-xz/lib/firmware/intel/avs/cnl/dsp_basefw.bin.xz
> ls nix/store/m9hfsvlr1ahyjk673n6qrb1sn835dgqn-linux-firmware-20231211-xz/lib/firmware/intel/avs/
apl  cnl  skl

intel/avs/kbl/dsp_basefw.bin is indeed not found.

Now why is the kernel looking in the kbl branch? I assume there is a reason.
Then again why is there not a kbl branch?

Hi, I just upgraded to 6.7 on nixos-23.11 and now I have the exact same issue…
Dell XPS 9560 too.
Did you manage to find a solution?

@valentino @slips

No, unfortunately not. I stayed on the 6.6 kernel for now.