I recently newly installed Fedora 43 on a ThinkPad X9 14” (Gen 1), but I’m only hearing the same mono mix from both the left and right built-in speakers. For example, if I do a sound test in KDE Plasma’s sound settings, I hear the “front left” test sound from both the left and right speakers, and the same goes for the “front right” test sound. This issue does not occur with a Bazzite live image.
Apparently, if the proper firmware isn’t present for Cirrus amps, the audio can be “a mono mix of left and right channels”: Audio drivers for Cirrus Logic CS35L54/56/57/63 Boosted Smart Amplifiers — The Linux Kernel documentation
The audio-related parts in dmesg | grep cs shows this:
[ 16.609572] sof-audio-pci-intel-lnl 0000:00:1f.3: hda codecs found, mask 4
[ 16.658200] sof-audio-pci-intel-lnl 0000:00:1f.3: Topology file: intel/sof-ipc4-tplg/sof-lnl-cs42l43-l0-cs35l56-l3-2ch.tplg
[ 16.668609] cs42l43 sdw:0:0:01fa:4243:01: supply vdd-p not found, using dummy regulator
[ 16.668683] cs42l43 sdw:0:0:01fa:4243:01: supply vdd-d not found, using dummy regulator
[ 16.668700] cs42l43 sdw:0:0:01fa:4243:01: supply vdd-a not found, using dummy regulator
[ 16.668710] cs42l43 sdw:0:0:01fa:4243:01: supply vdd-io not found, using dummy regulator
[ 16.668728] cs42l43 sdw:0:0:01fa:4243:01: supply vdd-cp not found, using dummy regulator
[ 16.671497] cs42l43 sdw:0:0:01fa:4243:01: devid: 0x042a43, rev: 0xa1, otp: 0x03
[ 16.702908] cs42l43 sdw:0:0:01fa:4243:01: Slave 6 state check1: UNATTACHED, status was 1
[ 16.733690] cs35l56 sdw:0:3:01fa:3556:01:0: supply VDD_P not found, using dummy regulator
[ 16.733713] cs35l56 sdw:0:3:01fa:3556:01:0: supply VDD_IO not found, using dummy regulator
[ 16.733720] cs35l56 sdw:0:3:01fa:3556:01:0: supply VDD_A not found, using dummy regulator
[ 16.745648] cs35l56 sdw:0:3:01fa:3556:01:0: Cirrus Logic CS35L56 Rev B0 OTP3 fw:3.4.4 (patched=0)
[ 16.754702] cs35l56 sdw:0:3:01fa:3556:01:0: Slave 1 state check1: UNATTACHED, status was 1
[ 16.754719] cs35l56 sdw:0:3:01fa:3556:01:1: supply VDD_P not found, using dummy regulator
[ 16.754742] cs35l56 sdw:0:3:01fa:3556:01:1: supply VDD_IO not found, using dummy regulator
[ 16.754749] cs35l56 sdw:0:3:01fa:3556:01:1: supply VDD_A not found, using dummy regulator
[ 16.765554] cs35l56 sdw:0:3:01fa:3556:01:1: Cirrus Logic CS35L56 Rev B0 OTP3 fw:3.4.4 (patched=0)
[ 16.775630] cs35l56 sdw:0:3:01fa:3556:01:1: Slave 2 state check1: UNATTACHED, status was 1
[ 16.948588] cs42l43-codec cs42l43-codec: supply vdd-amp not found, using dummy regulator
[ 16.988423] cs35l56 sdw:0:3:01fa:3556:01:0: supply VDD_B not found, using dummy regulator
[ 16.988452] cs35l56 sdw:0:3:01fa:3556:01:0: supply VDD_AMP not found, using dummy regulator
[ 16.989863] cs35l56 sdw:0:3:01fa:3556:01:1: supply VDD_B not found, using dummy regulator
[ 16.989890] cs35l56 sdw:0:3:01fa:3556:01:1: supply VDD_AMP not found, using dummy regulator
[ 16.995469] cs35l56 sdw:0:3:01fa:3556:01:0: DSP1: Firmware: 1a00d6 vendor: 0x2 v3.4.4, 37 algorithms
[ 16.996844] cs35l56 sdw:0:3:01fa:3556:01:1: DSP1: Firmware: 1a00d6 vendor: 0x2 v3.4.4, 37 algorithms
[ 17.044703] cs35l56 sdw:0:3:01fa:3556:01:0: Slave 1 state check1: UNATTACHED, status was 1
[ 17.045116] cs35l56 sdw:0:3:01fa:3556:01:1: Slave 2 state check1: UNATTACHED, status was 1
[ 17.055099] cs35l56 sdw:0:3:01fa:3556:01:0: Calibration disabled due to missing firmware controls
[ 17.056355] cs35l56 sdw:0:3:01fa:3556:01:0: Can't read tuning IDs
[ 17.062050] cs35l56 sdw:0:3:01fa:3556:01:1: Calibration disabled due to missing firmware controls
[ 17.062948] cs35l56 sdw:0:3:01fa:3556:01:1: Can't read tuning IDs
Meanwhile, the same on the Bazzite live image shows this:
[ 9.586462] sof-audio-pci-intel-lnl 0000:00:1f.3: hda codecs found, mask 4
[ 9.649370] sof-audio-pci-intel-lnl 0000:00:1f.3: Topology file: intel/sof-ipc4-tplg/sof-lnl-cs42l43-l0-cs35l56-l3-2ch.tplg
[ 9.649671] cs42l43 sdw:0:0:01fa:4243:01: supply vdd-p not found, using dummy regulator
[ 9.649702] cs42l43 sdw:0:0:01fa:4243:01: supply vdd-d not found, using dummy regulator
[ 9.649715] cs42l43 sdw:0:0:01fa:4243:01: supply vdd-a not found, using dummy regulator
[ 9.649725] cs42l43 sdw:0:0:01fa:4243:01: supply vdd-io not found, using dummy regulator
[ 9.649733] cs42l43 sdw:0:0:01fa:4243:01: supply vdd-cp not found, using dummy regulator
[ 9.653698] cs42l43 sdw:0:0:01fa:4243:01: devid: 0x042a43, rev: 0xa1, otp: 0x03
[ 9.679158] cs42l43 sdw:0:0:01fa:4243:01: Slave 6 state check1: UNATTACHED, status was 1
[ 9.727570] cs35l56 sdw:0:3:01fa:3556:01:0: supply VDD_P not found, using dummy regulator
[ 9.728126] cs35l56 sdw:0:3:01fa:3556:01:0: supply VDD_IO not found, using dummy regulator
[ 9.728147] cs35l56 sdw:0:3:01fa:3556:01:0: supply VDD_A not found, using dummy regulator
[ 9.745974] cs35l56 sdw:0:3:01fa:3556:01:0: Cirrus Logic CS35L56 Rev B0 OTP3 fw:3.4.4 (patched=0)
[ 9.752813] cs35l56 sdw:0:3:01fa:3556:01:0: Slave 1 state check1: UNATTACHED, status was 1
[ 9.752957] cs35l56 sdw:0:3:01fa:3556:01:1: supply VDD_P not found, using dummy regulator
[ 9.752977] cs35l56 sdw:0:3:01fa:3556:01:1: supply VDD_IO not found, using dummy regulator
[ 9.752985] cs35l56 sdw:0:3:01fa:3556:01:1: supply VDD_A not found, using dummy regulator
[ 9.762950] cs35l56 sdw:0:3:01fa:3556:01:1: Cirrus Logic CS35L56 Rev B0 OTP3 fw:3.4.4 (patched=0)
[ 9.768452] cs35l56 sdw:0:3:01fa:3556:01:1: Slave 2 state check1: UNATTACHED, status was 1
[ 10.045224] cs42l43-codec cs42l43-codec: supply vdd-amp not found, using dummy regulator
[ 10.118468] cs35l56 sdw:0:3:01fa:3556:01:0: supply VDD_B not found, using dummy regulator
[ 10.118541] cs35l56 sdw:0:3:01fa:3556:01:0: supply VDD_AMP not found, using dummy regulator
[ 10.121223] cs35l56 sdw:0:3:01fa:3556:01:1: supply VDD_B not found, using dummy regulator
[ 10.121327] cs35l56 sdw:0:3:01fa:3556:01:1: supply VDD_AMP not found, using dummy regulator
[ 10.139460] cs35l56 sdw:0:3:01fa:3556:01:0: DSP1: cirrus/cs35l56-b0-dsp1-misc-17aa233c.wmfw: format 3 timestamp 0x670eca18
[ 10.139469] cs35l56 sdw:0:3:01fa:3556:01:0: DSP1: cirrus/cs35l56-b0-dsp1-misc-17aa233c.wmfw: Tue 15 Oct 2024 15:01:28 Central Daylight Time
[ 10.140515] cs35l56 sdw:0:3:01fa:3556:01:1: DSP1: cirrus/cs35l56-b0-dsp1-misc-17aa233c.wmfw: format 3 timestamp 0x670eca18
[ 10.140524] cs35l56 sdw:0:3:01fa:3556:01:1: DSP1: cirrus/cs35l56-b0-dsp1-misc-17aa233c.wmfw: Tue 15 Oct 2024 15:01:28 Central Daylight Time
[ 11.266258] cs35l56 sdw:0:3:01fa:3556:01:0: DSP1: Firmware: 1a00d6 vendor: 0x2 v3.11.28, 41 algorithms
[ 11.323594] cs35l56 sdw:0:3:01fa:3556:01:0: DSP1: cirrus/cs35l56-b0-dsp1-misc-17aa233c-amp1.bin: v3.11.28
[ 11.323599] cs35l56 sdw:0:3:01fa:3556:01:0: DSP1: Misc: C:\Documents\JIRA\DRV-7805 - Cal failure on Alloy 3.11.28\3.11.28_2.41.0.0_smartCalApproved2\Alloy S
[ 11.367664] cs35l56 sdw:0:3:01fa:3556:01:1: DSP1: Firmware: 1a00d6 vendor: 0x2 v3.11.28, 41 algorithms
[ 11.410176] cs35l56 sdw:0:3:01fa:3556:01:1: DSP1: cirrus/cs35l56-b0-dsp1-misc-17aa233c-amp2.bin: v3.11.28
[ 11.410181] cs35l56 sdw:0:3:01fa:3556:01:1: DSP1: Misc: C:\Documents\JIRA\DRV-7805 - Cal failure on Alloy 3.11.28\3.11.28_2.41.0.0_smartCalApproved2\Alloy S
[ 12.097232] cs35l56 sdw:0:3:01fa:3556:01:0: Slave 1 state check1: UNATTACHED, status was 1
[ 12.106544] cs35l56 sdw:0:3:01fa:3556:01:1: Slave 2 state check1: UNATTACHED, status was 1
[ 12.108917] cs35l56 sdw:0:3:01fa:3556:01:0: Calibration applied
[ 12.110056] cs35l56 sdw:0:3:01fa:3556:01:0: Tuning PID: 0x24, SID: 0x11, TID: 0x1
[ 12.116892] cs35l56 sdw:0:3:01fa:3556:01:1: Calibration applied
[ 12.117927] cs35l56 sdw:0:3:01fa:3556:01:1: Tuning PID: 0x24, SID: 0x11, TID: 0x1
What’s gone wrong here? How can I get it to output a proper stereo mix like it does with Bazzite?