One open source project that provides drivers and firmware for newer sound devices (or technically speaking, digital sound processors) is the Sound Open Firmware (SOF) project. The SOF driver may be the only driver that supports a sound device, especially with Intel Comet Lake, Ice Lake, and Tiger Lake devices, or it may be the only driver that supports a feature of a sound device, for example a digital microphone. In these cases, the Debian kernel will try to use the SOF driver, but sometimes it will fail to work.
This topic is intended to give some advice for Buslleye with sound issues due to the SOF driver.
How do I know if my computer needs the SOF driver?
Code: Select all
dmesg | grep sof
Code: Select all
[ 16.646946] sof-audio-pci-intel-tgl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100
[ 16.647040] sof-audio-pci-intel-tgl 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver
Code: Select all
lspci -k | grep -A 4 Audio
Code: Select all
00:1f.3 Audio device: Intel Corporation Comet Lake PCH-LP cAVS
DeviceName: Onboard - Sound
Subsystem: Pegatron Comet Lake PCH-LP cAVS
Kernel driver in use: sof-audio-pci-intel-cnl
Kernel modules: snd_hda_intel, snd_sof_pci_intel_cnl
First make sure the package
Code: Select all
firmware-sof-signed
Code: Select all
$ apt policy firemware-sof-signed
Sometimes this is enough to get sound working! See this thread.
Sadly, however, it often isn't. Manufacturers release new devices all the time, and of course they also produce drivers for these devices. Computers made with the new device come with the driver for that device, but in Linux there is a delay before a working driver and firmware are included in a distribution.
An important point to make is that Debian Bullseye was released on August 14th, 2021. The SOF project is under constant development, and support for new devices (and bug fixes for supported devices) are added regularly. Because of the nature of Debian Stable, bullseye does not add these updates to the SOF driver or firmware. Devices that need the SOF driver may be supported in the upstream driver (as released by the SOF project), but not work in Bullseye because of its stage in the release cycle. Debian Bookworm will be released later this year, with a more up to date SOF driver.
My computer is trying to use the SOF driver but it doesn't work. What can I do?
Check with dmesg for errors:
Code: Select all
# dmesg | grep 'sof\|firmware\|audio'
Code: Select all
[ 5.364213] sof-audio-pci 0000:00:1f.3: hda codecs found, mask 5
[ 5.364214] sof-audio-pci 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now
[ 5.364218] sof-audio-pci 0000:00:1f.3: DMICs detected in NHLT tables: 2
[ 5.365253] sof-audio-pci 0000:00:1f.3: firmware: direct-loading firmware intel/sof/sof-tgl.ri
[ 5.365257] sof-audio-pci 0000:00:1f.3: warning: unknown sof_ext_man header type 6 size 0x20
[ 5.365258] sof-audio-pci 0000:00:1f.3: Firmware info: version 1:7:0-47d07
[ 5.365259] sof-audio-pci 0000:00:1f.3: Firmware: ABI 3:18:1 Kernel ABI 3:17:0
[ 5.365259] sof-audio-pci 0000:00:1f.3: warn: FW ABI is more recent than kernel
[ 5.365261] sof-audio-pci 0000:00:1f.3: warning: unknown sof_ext_man header type 3 size 0x30
[ 5.365262] sof-audio-pci 0000:00:1f.3: warning: unknown sof_ext_man header type 5 size 0x20
[ 5.454336] sof-audio-pci 0000:00:1f.3: Firmware info: version 1:7:0-47d07
[ 5.454338] sof-audio-pci 0000:00:1f.3: Firmware: ABI 3:18:1 Kernel ABI 3:17:0
[ 5.454338] sof-audio-pci 0000:00:1f.3: warn: FW ABI is more recent than kernel
[ 5.629177] sof-audio-pci 0000:00:1f.3: firmware: direct-loading firmware intel/sof-tplg/sof-hda-generic-2ch.tplg
[ 5.629184] sof-audio-pci 0000:00:1f.3: Topology: ABI 3:18:1 Kernel ABI 3:17:0
[ 5.629184] sof-audio-pci 0000:00:1f.3: warn: topology ABI is more recent than kernel
[ 5.650921] sof-audio-pci 0000:00:1f.3: ASoC: Parent card not yet available, widget card binding deferred
Code: Select all
/etc/modprobe.d/inteldsp.conf
Code: Select all
options snd_intel_dspcfg dsp_driver=1
(Devices that are only partially supported in Bullseye may be fully supported in future releases, so if you have forced the legacy driver, try the SOF driver again after updating to Bookworm.)
If your device does not work after installing SOF firmware, and cannot use the legacy driver, an option to try in the meantime is installing a newer kernel (which includes a newer SOF driver) from Debian Backports. The SOF driver may also require the latest firmware (firmware-sof-signed) and ALSA Use Case Manager configuration files (alsa-ucm-conf). These are not available in Debian Backports. It is safe to install firmware-sof-signed manually from Sid (or to extract the required firmware files to the appropriate location), but alsa-ucm-conf requires a newer version of ibrasound2 than that in Bullseye.
One example of a device that will not work in Bullseye is the ES8336 codec from Everest Audio on platforms such as AppoloLake, GeminiLake, JasperLake, CometLake and AlderLake. SOF support for this device started with the kernel 5.19, so it will not work in Debian Bullseye, which has kernel 5.10, but may well work in Debian Bookworm, which has kernel 6.1 at the time of writing.
SOF ProjectEnd-users can verify if the hardware uses this configuration by running the ‘alsa-info’ command and checking for the presence an ACPI _HID, e.g.
/sys/bus/acpi/devices/ESSX8336:00/status 15
/sys/bus/acpi/devices/ESSX8326:00/status 15
One way to find out if your device is supported in the next Debian release is to try a live image of bookworm. Bear in mind that this is not yet the stable release, and may contain bugs.
Comments/corrections/suggestion below please.
If you have got sound working where the SOF driver was involved, or helped somebody to do so, please leave a comment with the device name and what worked.
Sid/Testing users, please tell us if your SOF device works.
Please do NOT use this topic for support issues. Start your own thread for that.