
Hi everyone, I got a Lenovo Yoga Pro 9 16IMH9 and noticed the built-in speakers were extremely quiet (~10-15% volume). I fixed it for the 6.x zen kernel but upgrading to 7.x broke things. After some digging, I found a few issues in the audio stack and wanted to share a workaround for anyone else on this hardware.
The Situation:
- SSID Collision: This model shares a PCI SSID with the Legion S7, causing the kernel to pick the wrong quirk and fail to bind the TAS2781 amplifiers. I've submitted a patch to the ALSA maintainers using a unique Codec SSID quirk to disambiguate the two. It was accepted today and will be merged into the mainline kernel.
- Cold Boot Firmware Bug: Even with the quirk fixed, the DSP firmware silently fails to load during cold boots because of the BIOS state. I’ve filed a kernel bug report for this.
- WirePlumber Crash: Attempting to power-cycle the I2C controller to fix the firmware issue revealed a SIGSEGV in WirePlumber (reported upstream).
The Workaround: Since it will take a while for the patch to hit stable releases, I’ve put together a GitHub repo with a DKMS module and a systemd reset service. It handles the quirk override and the cold-boot reset automatically.
GitHub: https://github.com/ramonvanraaij/yoga9-tas2781-hda
Technical Details:
- Kernel: Tested on
7.0.2-zen1 - Fix: Adds
HDA_CODEC_QUIRKfor17aa:38d6to route toALC287_FIXUP_TAS2781_I2C. - Reset: PCI remove/rescan of the I2C controller (
0000:00:15.2) to force a firmware reload.
The repo includes a build.sh that sets up the DKMS module and the systemd services. Hopefully, this saves someone else a few days of troubleshooting!