Skip to content

[BUG] Lenovo Yoga Pro 9i 16IMH9 - Quad Speaker System Audio Quality (Missing Dolby Atmos DSP Coefficients) #519

@acutm

Description

@acutm

Summary
The Lenovo Yoga Pro 9i 16IMH9 exhibits severe audio quality degradation on Linux compared to Windows, where the system uses Dolby Atmos with Smart AMP processing.It presents distorted sound at low volumes, missing bass frequencies, poor crossover separation, and lack of proper DSP coefficient implementation.

Hardware Specifications

Model: Lenovo Yoga Pro 9i 16IMH9 (Type 83DN)
Audio Codec: Realtek ALC287 / ALC3306
Speaker Configuration: Quad speaker system

2 Woofers (bass drivers)
2 Tweeters (treble drivers)

Smart Amplifier: TAS2781 (I2C connected)
Audio Controller: Intel Meteor Lake-P HD Audio Controller (PCI: 00:1f.3, rev 20)
Processor: Intel Core Ultra 9 185H (Meteor Lake)
Platform: Meteor Lake

Audio Configuration Details

Codec: Realtek ALC287
Codec: Intel Meteor Lake HDMI

PCI Audio Controller:
00:1f.3 Multimedia audio controller: Intel Corporation Meteor Lake-P HD Audio Controller (rev 20)

Kernel: Linux (tested with 6.8.x - 6.12.x range)

Boot Parameters:
- intel_idle.max_cstate=4
- i915.enable_psr=0

Root Cause Analysis
The issue stems from incomplete implementation of:

Missing DSP Coefficients: The TAS2781 Smart Amplifier lacks the proper DSP coefficients that Windows' Dolby Atmos driver provides. These coefficients handle:

Frequency crossover management between woofers and tweeters
Driver equalization and speaker compensation
Dynamic range processing
Bass enhancement and tone shaping

Incomplete Speaker Topology: The Linux SOF/ALSA topology does not properly map the quad speaker configuration:

Woofer drivers not correctly routed to output channels
Missing crossover filter configuration
Improper DAC routing to amplifiers

Smart AMP Driver Issues:

snd_hda_scodec_tas2781_i2c driver lacks full hardware volume control
Missing integration with multi-amplifier setups
No dynamic speaker compensation

HDA Codec Configuration: The Realtek ALC287 codec configuration is incomplete for this specific speaker arrangement

Workaround Status

A partial workaround exists using an I2C-based initialization script (2pa-byps.sh), but:

It only partially enables the woofer drivers
Does NOT solve the DSP coefficient problem
Does NOT achieve Windows-equivalent audio quality
Requires manual execution or systemd service after each boot/suspend

Environment

Kernel Version: 6.8.0+ (tested range: 6.8.x - 6.12.x)

Codec Information:

- Codec: Realtek ALC287
- Codec: Intel Meteor Lake HDMI
- Subsystem ID: 0x17aa391d (Lenovo)
- Audio Controller: Intel Meteor Lake-P HD Audio Controller (00:1f.3, rev 20)

Kernel Parameters:

- intel_idle.max_cstate=4
- i915.enable_psr=0

udev rules present:

- Custom power management rules for USB sensors

Related Issues / References

Ubuntu Bug #1926165: "Bass speakers not enabled on Lenovo Yoga 9i"
Fedora Bug #217449: "Bass speakers not working on Lenovo Yoga Pro 9 14IRP8"
Similar issues reported on:

Lenovo Yoga Pro 9i 14IRP8 (Gen 8)
Lenovo Yoga Pro 9i 16IMH9 (Gen 9)
Lenovo Yoga Pro 9i 16IAH10 (Gen 10)

Question for Developers

Where should the DSP coefficients for Smart AMP processing be implemented? SOF firmware or Linux kernel driver?
Can DSP coefficients from Windows Dolby Atmos driver be legally analyzed and reimplemented for Linux?
What is the development timeline for Meteor Lake HDA audio improvements?
Are there any open tasks related to this on the SOF roadmap?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions