Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

cirrus/cs35l41 'Cannot Initialize Firmware. Error: -22'

604 views
Skip to first unread message

Vladimir Drozdik

unread,
May 10, 2023, 6:50:08 AM5/10/23
to
Hi,

What did you try to accomplish?
install debian bookworm on Lenovo Legion 7 16ACHg6

What has happened (wrongly) instead?
a) multiple errors in boot log saying 'failed to load
cirrus/cs35l41...wmf', and after fix attempt 'invalid magic' and 'Cannot
Initialize Firmware. Error: -22'
b) sound is working, but on shutdown there is 'static burst' from speakers
c) when open laptop after suspend there two errors saying suspend and
smth else not supported, and only hard reset hepls

What environment are you using?
$ uname -a
Linux debian 6.1.0-8-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.25-1
(2023-04-22) x86_64 GNU/Linux
gnome 43.4

What did you try to find the cause?
I did steps from 'Firmware missing from Debian' from debian wiki, that
fixed couple rows, then Reddit suggested to symlink .bin to .wmfw, that
fixed most missing files erros but firmware can not be started

Are there error message or log files?

a) initial

debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-l0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-l0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1-l0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1-l0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-r0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-r0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1-r0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1-r0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot.wmfw (-2)

b) after adding cirrus dir to /lib/firmware

debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-l0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-l0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1-l0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1-l0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-r0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-r0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1-r0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1-r0.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847.wmfw (-2)
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
failed to load cirrus/cs35l41-dsp1-spk-prot-17aa3847.wmfw (-2)

c) after symlinking bins to wmf

debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: Cirrus Logic
CS35L41 (35a40), Revision: B2
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: Reset line
busy, assuming shared reset
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: Cirrus Logic
CS35L41 (35a40), Revision: B2
debian kernel: snd_hda_intel 0000:01:00.1: enabling device (0000 -> 0002)
debian kernel: snd_hda_intel 0000:01:00.1: Disabling MSI
debian kernel: snd_hda_intel 0000:01:00.1: Handle vga_switcheroo audio
client
debian kernel: snd_hda_intel 0000:06:00.6: enabling device (0000 -> 0002)
debian kernel: input: HDA NVidia HDMI/DP,pcm=3 as
/devices/pci0000:00/0000:00:01.1/0000:01:00.1/sound/card0/input10
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
direct-loading firmware cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1-l0.wmfw
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: firmware:
direct-loading firmware cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1-l0.bin
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: DSP1:
cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1-l0.wmfw: invalid magic
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: Cannot
Initialize Firmware. Error: -22
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.0: Cannot Run
Firmware, reverting to dsp bypass...
debian kernel: snd_hda_codec_realtek hdaudioC1D0: bound
i2c-CLSA0100:00-cs35l41-hda.0 (ops cs35l41_hda_comp_ops
[snd_hda_scodec_cs35l41])
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
direct-loading firmware cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1-r0.wmfw
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: firmware:
direct-loading firmware cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1-r0.bin
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: DSP1:
cirrus/cs35l41-dsp1-spk-prot-17aa3847-spkid1-r0.wmfw: invalid magic
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: Cannot
Initialize Firmware. Error: -22
debian kernel: cs35l41-hda i2c-CLSA0100:00-cs35l41-hda.1: Cannot Run
Firmware, reverting to dsp bypass...
debian kernel: snd_hda_codec_realtek hdaudioC1D0: bound
i2c-CLSA0100:00-cs35l41-hda.1 (ops cs35l41_hda_comp_ops
[snd_hda_scodec_cs35l41])
debian kernel: snd_hda_codec_realtek hdaudioC1D0: autoconfig for ALC287:
line_outs=1 (0x17/0x0/0x0/0x0/0x0) type:speaker
debian kernel: snd_hda_codec_realtek hdaudioC1D0:    speaker_outs=0
(0x0/0x0/0x0/0x0/0x0)
debian kernel: snd_hda_codec_realtek hdaudioC1D0:    hp_outs=1
(0x21/0x0/0x0/0x0/0x0)
debian kernel: snd_hda_codec_realtek hdaudioC1D0:    mono: mono_out=0x0
debian kernel: snd_hda_codec_realtek hdaudioC1D0:    inputs:
debian kernel: snd_hda_codec_realtek hdaudioC1D0:      Mic=0x19
debian kernel: snd_hda_codec_realtek hdaudioC1D0:      Internal Mic=0x12
debian kernel: input: HDA Digital PCBeep as
/devices/pci0000:00/0000:00:08.1/0000:06:00.6/sound/card1/input14
debian kernel: input: HDA NVidia HDMI/DP,pcm=7 as
/devices/pci0000:00/0000:00:01.1/0000:01:00.1/sound/card0/input11
debian kernel: input: HDA NVidia HDMI/DP,pcm=8 as
/devices/pci0000:00/0000:00:01.1/0000:01:00.1/sound/card0/input12
debian kernel: input: HDA NVidia HDMI/DP,pcm=9 as
/devices/pci0000:00/0000:00:01.1/0000:01:00.1/sound/card0/input13
debian alsactl[919]: Found hardware: "HDA-Intel" "Realtek ALC287"
"HDA:10ec0287,17aa3847,00100002" "0x17aa" "0x382b"
debian /usr/libexec/gdm-x-session[1040]: (II) config/udev: Adding input
device HDA NVidia HDMI/DP,pcm=3 (/dev/input/event4)
debian /usr/libexec/gdm-x-session[1040]: (II) config/udev: Adding input
device HDA NVidia HDMI/DP,pcm=7 (/dev/input/event5)
debian /usr/libexec/gdm-x-session[1040]: (II) config/udev: Adding input
device HDA NVidia HDMI/DP,pcm=8 (/dev/input/event11)
debian /usr/libexec/gdm-x-session[1040]: (II) config/udev: Adding input
device HDA NVidia HDMI/DP,pcm=9 (/dev/input/event12)
debian /usr/libexec/gdm-x-session[1040]: (II) config/udev: Adding input
device HDA Digital PCBeep (/dev/input/event9)
debian /usr/libexec/gdm-x-session[2161]: (II) config/udev: Adding input
device HDA NVidia HDMI/DP,pcm=3 (/dev/input/event4)
debian /usr/libexec/gdm-x-session[2161]: (II) config/udev: Adding input
device HDA NVidia HDMI/DP,pcm=7 (/dev/input/event5)
debian /usr/libexec/gdm-x-session[2161]: (II) config/udev: Adding input
device HDA NVidia HDMI/DP,pcm=8 (/dev/input/event11)
debian /usr/libexec/gdm-x-session[2161]: (II) config/udev: Adding input
device HDA NVidia HDMI/DP,pcm=9 (/dev/input/event12)
debian /usr/libexec/gdm-x-session[2161]: (II) config/udev: Adding input
device HDA Digital PCBeep (/dev/input/event9)

James Addison

unread,
May 11, 2023, 6:40:07 AM5/11/23
to
Hi Vladimir,

As you've found, Debian doesn't yet distribute firmware for the Cirrus
CS35L41, although there is an open bugreport to add support for it
that you can subscribe to:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031912

The recommended symlinks to create after installing firmware directly
from linux-firmware.git can be found in the 'WHENCE' file in the base
directory of that repository (this isn't yet documented in the wiki,
and the format of that file may change in the nearish future).

Please double-check the symlinks you've created against the 'cs35l41'
'Link' entries in that file, and if necessary, make any adjustments to
match. Mismatches there are my best guess at the cause of the
firmware loading failures at the moment.

Thanks,
James
0 new messages