# [SOLVED] SOF Driver can't load intel/sof/sof-cnl.ri

## Zazu

Because I have a relatively new laptop, my mic is only supported by the sof driver. I have installed sof-firmware, but it still won't work. I am not sure if my kernel config is wrong, or there is a problem with sof-firmware.

dmesg | grep audio:

```
[    1.983227] sof-audio-pci 0000:00:1f.3: warning: No matching ASoC machine driver found

[    1.983231] sof-audio-pci 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100

[    1.983357] sof-audio-pci 0000:00:1f.3: use msi interrupt mode

[    1.987518] sof-audio-pci 0000:00:1f.3: hda codecs found, mask 5

[    1.987519] sof-audio-pci 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now

[    3.021499] sof-audio-pci 0000:00:1f.3: error: codec #2 probe error, ret: -5

[    3.021843] sof-audio-pci 0000:00:1f.3: Direct firmware load for intel/sof/sof-cnl.ri failed with error -2

[    3.021845] sof-audio-pci 0000:00:1f.3: error: request firmware intel/sof/sof-cnl.ri failed err: -2

[    3.021846] sof-audio-pci 0000:00:1f.3: error: failed to load DSP firmware -2

[    3.022116] sof-audio-pci 0000:00:1f.3: error: sof_probe_work failed err: -2
```

Do I need to install sof-firmware from github because it is outdated? I am new to Gentoo, so if I am making rookie mistakes, that is why.Last edited by Zazu on Sun Aug 02, 2020 6:14 am; edited 1 time in total

----------

## halcon

 *Zazu wrote:*   

> 
> 
> ```
> [    3.021843] sof-audio-pci 0000:00:1f.3: Direct firmware load for intel/sof/sof-cnl.ri failed with error -2
> 
> ...

 

You issue is similar to that one, but with one difference: there was the problem with sof-icl.ri, not with sof-cnl.ri.

 *ShadowHawkBV wrote:*   

> 
> 
> ```
> [    4.524739] sof-audio-pci 0000:00:1f.3: Direct firmware load for intel/sof/sof-icl.ri failed with error -2
> 
> ...

 

----------

## Zazu

I copied it over as described in that other thread, and I am no longer getting that error. But, I am still not getting any sound. Here is the output of dmesg | grep audio now:

```
[    0.571305] snd_hda_intel 0000:01:00.1: Handle vga_switcheroo audio client

[    1.985621] sof-audio-pci 0000:00:1f.3: warning: No matching ASoC machine driver found

[    1.985715] sof-audio-pci 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100

[    1.985826] sof-audio-pci 0000:00:1f.3: use msi interrupt mode

[    1.992997] sof-audio-pci 0000:00:1f.3: hda codecs found, mask 5

[    1.992999] sof-audio-pci 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now

[    3.084952] sof-audio-pci 0000:00:1f.3: error: codec #2 probe error, ret: -5

[    3.087906] sof-audio-pci 0000:00:1f.3: unexpected ipc interrupt raised!

[    3.087907] sof-audio-pci 0000:00:1f.3: error: no reply expected, received 0x0

[    3.202836] sof-audio-pci 0000:00:1f.3: Firmware info: version 1:5:1-88707

[    3.202837] sof-audio-pci 0000:00:1f.3: Firmware: ABI 3:16:0 Kernel ABI 3:10:0

[    3.202838] sof-audio-pci 0000:00:1f.3: warn: FW ABI is more recent than kernel

[    3.203089] sof-audio-pci 0000:00:1f.3: firmware boot complete
```

----------

## halcon

 *Zazu wrote:*   

> I copied it over as described in that other thread

 

How exactly did you do it?

I see 2 steps there:

1. *ShadowHawkBV wrote:*   

> 
> 
> ```
> $/lib/firmware sudo cp sof-icl-v1.4.2.ri intel/sof/sof-icl.ri && sudo cp sof-icl-v1.4.2.ldc intel/sof/sof-icl.ldc
> ```
> ...

 

I think you should not repeat that exactly, because you have cnl, not icl. If there were sof-cnl-v1.4.2.ri and sof-cnl-v1.4.2.ldc in Gentoo, it would be easy to "substitute". But there are no, correct? I am not yet sure what to be done here...

2. *ShadowHawkBV wrote:*   

> I copied sof-hda-generic.tplg to /lib/firmware/intel/sof-tplg and renamed it to sof-hda-generic-2ch.tplg

 When ShadowHawkBV was doing that, he had sof-hda-generic.tplg from Fedora. If you don't have Fedora, you should take it from Arch:

 *DONAHUE wrote:*   

> visit https://www.archlinux.org/packages/extra/any/sof-firmware/
> 
> find "Package Actions" in the upper right corner of the page
> 
> select "Download From Mirror"
> ...

 

Edit:

I see there are cnl files in the Arch archive linked in the corresponding Gentoo bug (733254):

```

usr/lib/firmware/intel/sof/v1.5.1/intel-signed/sof-cnl-v1.5.1.ri

usr/lib/firmware/intel/sof/v1.5.1/sof-cnl-v1.5.1.ldc   

```

They should be fine for the step 1.Last edited by halcon on Mon Jul 27, 2020 9:28 pm; edited 2 times in total

----------

## Zazu

1. I downloaded the package from here

2. mkdir sof (in ~/Downloads)

3. cp sof-firmware-1.5.1-1-any.pkg.tar.zst sof/

4. cd sof

5. tar -I zstd -xvf sof-firmware-1.5.1-1-any.pkg.tar.zst

6. cd usr/lib/firmware/intel/sof/v1.5.1

7. doas mkdir /lib/firmware/intel/sof

8. doas cp sof-cnl.ri /lib/firmware/intel/sof

9. loginctl reboot

----------

## halcon

OK... Try to add also usr/lib/firmware/intel/sof-tplg/sof-hda-generic-2ch.tplg (it's the path in the archive from Bugzilla; may be slightly different in your archive) to your system, to /lib/firmware/intel/sof-tplg .

----------

## Zazu

I copied it, but it didn't make any difference. I also was trying to change my kernel config to fix these, I am not sure what I did. Now, something else appears when I do dmesg | grep audio:

[

```
    0.690383] snd_hda_codec_generic hdaudioC0D0: autoconfig for Generic: line_outs=0 (0x0/0x0/0x0/0x0/0x0) type:line

[    0.690952] snd_hda_codec_generic hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)

[    0.691525] snd_hda_codec_generic hdaudioC0D0:    hp_outs=0 (0x0/0x0/0x0/0x0/0x0)

[    0.692094] snd_hda_codec_generic hdaudioC0D0:    mono: mono_out=0x0

[    0.692668] snd_hda_codec_generic hdaudioC0D0:    dig-out=0x7/0x0

[    0.693235] snd_hda_codec_generic hdaudioC0D0:    inputs:

[    1.946181] sof-audio-pci 0000:00:1f.3: warning: No matching ASoC machine driver found

[    1.946186] sof-audio-pci 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100

[    1.946318] sof-audio-pci 0000:00:1f.3: use msi interrupt mode

[    1.974211] sof-audio-pci 0000:00:1f.3: hda codecs found, mask 5

[    1.974213] sof-audio-pci 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now

[    2.979209] sof-audio-pci 0000:00:1f.3: error: codec #2 probe error, ret: -5

[    2.981263] sof-audio-pci 0000:00:1f.3: unexpected ipc interrupt raised!

[    2.981265] sof-audio-pci 0000:00:1f.3: error: no reply expected, received 0x0

[    3.096830] sof-audio-pci 0000:00:1f.3: Firmware info: version 1:5:1-88707

[    3.096831] sof-audio-pci 0000:00:1f.3: Firmware: ABI 3:16:0 Kernel ABI 3:10:0

[    3.096831] sof-audio-pci 0000:00:1f.3: warn: FW ABI is more recent than kernel

[    3.097091] sof-audio-pci 0000:00:1f.3: firmware boot complete
```

----------

## halcon

Looks like firmware has worked... I see similar dmesg messages in that sof bug, they were related to wrong kernel configuration (CONFIG_SND_SOC*).

----------

## Zazu

On Arch, I had a much newer kernel, like 5.7 something, so I tried that. It complained about another missing lib, which I copied over the same way as the first one. I have noticed something. On Arch, snd_hda_codec_realtek gets loaded where snd_hda_codec_generic gets loaded on Gentoo. I have snd_hda_codec_realtek enabled in my config. Also, starting with the line about topology, Gentoo dmesg doesn't show anything.

Here is the output of dmesg | grep audio on Arch: 

```
Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: enabling device (0000 -> 0002)

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: use msi interrupt mode

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: hda codecs found, mask 5

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: Firmware info: version 1:5:1-88707

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: Firmware: ABI 3:16:0 Kernel ABI 3:13:0

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warn: FW ABI is more recent than kernel

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: unknown ext header type 3 size 0x1c

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: unknown ext header type 4 size 0x10

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: Topology: ABI 3:16:0 Kernel ABI 3:13:0

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warn: topology ABI is more recent than kernel

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 7 name iDisp3 Tx not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 0 name codec0_in not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 7 name iDisp2 Tx not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 0 name codec1_in not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 7 name iDisp1 Tx not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 1 name codec0_out not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 7 name Analog CPU Playback not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 1 name codec1_out not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 7 name Digital CPU Playback not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 0 name codec2_in not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 7 name Alt Analog CPU Playback not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 1 name codec2_out not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 0 name Analog CPU Capture not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 1 name iDisp1_out not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 0 name Digital CPU Capture not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 1 name iDisp2_out not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 0 name Alt Analog CPU Capture not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: warning: widget type 1 name iDisp3_out not handled

Jun 19 21:19:24 bigblue kernel: sof-audio-pci 0000:00:1f.3: ASoC: Parent card not yet available, widget card binding deferred

Jun 19 21:19:24 bigblue kernel: snd_hda_codec_realtek ehdaudio0D0: autoconfig for ALC3254: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker

Jun 19 21:19:24 bigblue kernel: snd_hda_codec_realtek ehdaudio0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)

Jun 19 21:19:24 bigblue kernel: snd_hda_codec_realtek ehdaudio0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)

Jun 19 21:19:24 bigblue kernel: snd_hda_codec_realtek ehdaudio0D0:    mono: mono_out=0x0

Jun 19 21:19:24 bigblue kernel: snd_hda_codec_realtek ehdaudio0D0:    inputs:

Jun 19 21:19:24 bigblue kernel: snd_hda_codec_realtek ehdaudio0D0:      Headphone Mic=0x1b

Jun 19 21:19:24 bigblue kernel: snd_hda_codec_realtek ehdaudio0D0:      Headset Mic=0x19

Jun 19 21:19:24 bigblue kernel: snd_hda_codec_realtek ehdaudio0D0: ASoC: sink widget AIF1TX overwritten

Jun 19 21:19:24 bigblue kernel: snd_hda_codec_realtek ehdaudio0D0: ASoC: source widget AIF1RX overwritten
```

and here it is on gentoo: 

```
[    0.571243] sof-audio-pci 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100

[    0.572419] sof-audio-pci 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver

[    0.573303] sof-audio-pci 0000:00:1f.3: enabling device (0000 -> 0002)

[    0.574240] sof-audio-pci 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100

[    0.577578] sof-audio-pci 0000:00:1f.3: use msi interrupt mode

[    0.580886] snd_hda_codec_generic hdaudioC0D0: autoconfig for Generic: line_outs=0 (0x0/0x0/0x0/0x0/0x0) type:line

[    0.582070] snd_hda_codec_generic hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)

[    0.583261] snd_hda_codec_generic hdaudioC0D0:    hp_outs=0 (0x0/0x0/0x0/0x0/0x0)

[    0.584452] snd_hda_codec_generic hdaudioC0D0:    mono: mono_out=0x0

[    0.585635] snd_hda_codec_generic hdaudioC0D0:    dig-out=0x7/0x0

[    0.586806] snd_hda_codec_generic hdaudioC0D0:    inputs:

[    1.580289] sof-audio-pci 0000:00:1f.3: codec #2 probe error, ret: -5

[    1.581440] sof-audio-pci 0000:00:1f.3: hda codecs found, mask 1

[    1.582484] sof-audio-pci 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now

[    1.702908] sof-audio-pci 0000:00:1f.3: Firmware info: version 1:5:1-88707

[    1.702909] sof-audio-pci 0000:00:1f.3: Firmware: ABI 3:16:0 Kernel ABI 3:13:0

[    1.702910] sof-audio-pci 0000:00:1f.3: warn: FW ABI is more recent than kernel

[    1.703294] sof-audio-pci 0000:00:1f.3: warning: unknown ext header type 3 size 0x1c

[    1.703314] sof-audio-pci 0000:00:1f.3: warning: unknown ext header type 4 size 0x10
```

kernel config: dpaste

----------

## halcon

 *Zazu wrote:*   

> On Arch, I had a much newer kernel, like 5.7 something, so I tried that. It complained about another missing lib, which I copied over the same way as the first one. I have noticed something. On Arch, snd_hda_codec_realtek gets loaded where snd_hda_codec_generic gets loaded on Gentoo.

 

You didn't mention whether the sound in Arch works. If it does, it could be helpful to compare its kernel .config with Gentoo's one, and modules loaded... as ShadowHawkBV did. I'm afraid I can't be of much help here (I don't use sof).

----------

## Zazu

 *halcon wrote:*   

> You didn't mention whether the sound in Arch works. If it does, it could be helpful to compare its kernel .config with Gentoo's one, and modules loaded... as ShadowHawkBV did. I'm afraid I can't be of much help here (I don't use sof).

  Yes, it does work, I forgot to mention. I will try comparing their configs that are relavent, though what I have looked at so far, Arch just compiles everything as modules, so it might be hard to tell what is actually needed. Thank you for helping me get this far.

----------

## Anon-E-moose

 *Zazu wrote:*   

>  *halcon wrote:*   You didn't mention whether the sound in Arch works. If it does, it could be helpful to compare its kernel .config with Gentoo's one, and modules loaded... as ShadowHawkBV did. I'm afraid I can't be of much help here (I don't use sof).  Yes, it does work, I forgot to mention. I will try comparing their configs that are relavent, though what I have looked at so far, Arch just compiles everything as modules, so it might be hard to tell what is actually needed. Thank you for helping me get this far.

 

lsmod will tell you what modules are loaded, it's not that complicated to figure out kernel settings for those modules, once you know what they are.

----------

## Zazu

Unfortunately I will have to reinstall Arch, I actually needed to anyway. I need Arch for school since I haven't fixed Gentoo yet.

----------

## halcon

There are good news:

The bug reported by ShadowHawkBV has already been resolved. No more downloading from Arch + copying files.

Also, ShadowHawkBV shared his working (Gentoo's) kernel .config.

Issues like these would rise less often if the relevant changes get merged as default choices in gentoo-sources?.. Not sure if it's possible though. Just a thought.

----------

## Zazu

I have reinstalled arch, all I had to do was install sof-firmware and everything worked. Hopefully with this, I can fix the audio on gentoo so I can use that as my daily driver. Also saw that sof-firmware got updated to 1.15.1, and I didn't need to copy any libs from the arch package. That's awesome.

----------

## Zazu

After I disabled CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODE in the kernel, which they said is deprecated, I am getting new errors in dmesg.

Here is the output of dmesg | grep audio now:

```
[    6.182643] sof-audio-pci 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100

[    6.184043] sof-audio-pci 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver

[    6.185146] sof-audio-pci 0000:00:1f.3: enabling device (0000 -> 0002)

[    6.186349] sof-audio-pci 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100

[    6.187563] sof-audio-pci 0000:00:1f.3: bound 0000:00:02.0 (ops 0xffffffffb56b6b60)

[    6.195251] sof-audio-pci 0000:00:1f.3: use msi interrupt mode

[    6.207833] sof-audio-pci 0000:00:1f.3: hda codecs found, mask 5

[    6.208946] sof-audio-pci 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now

[    6.211709] sof-audio-pci 0000:00:1f.3: Direct firmware load for intel/sof/sof-cfl.ri failed with error -2

[    6.212809] sof-audio-pci 0000:00:1f.3: error: request firmware intel/sof/sof-cfl.ri failed err: -2

[    6.213922] sof-audio-pci 0000:00:1f.3: error: failed to load DSP firmware -2

[    6.215307] sof-audio-pci 0000:00:1f.3: error: sof_probe_work failed err: -2
```

Yet another firmware loading error, but this time, the file is there. It is located at /lib/firmware/intel/sof/sof-cfl.ri, so I am not sure what to do.

----------

## halcon

 *Zazu wrote:*   

> After I disabled CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODE in the kernel,.. 

 

Have you assigned to all CONFIG_SND_SOC* symbols the same values as in ShadowHawkBV's .config?

----------

## Zazu

After tweaking some parts of his config, I got everything to work! I'm so happy, thank you for helping me.  :Very Happy: 

----------

## halcon

 *Zazu wrote:*   

> After tweaking some parts of his config, I got everything to work! I'm so happy, thank you for helping me. 

 

Finally, congratulations!

Please don't forget to mark the topic as "solved".

BTW, Aren't you registered at the Gentoo's Wiki? I am not and I think to correct that... I remember, in other topic, it was said that it would be good to post the info there. As nobody replied to my question about default choices in gentoo-sources, you could at least make a page for SOF Audio, with the "kernel" chapter.

----------

## Zazu

I will try to do that tomorrow.

----------

