-
Notifications
You must be signed in to change notification settings - Fork 140
Description
Binary Speaker Volume Control on Lenovo Yoga Pro 7 14IMH9 (Intel Meteor Lake + Realtek ALC287)
System Information
- Laptop Model: Lenovo Yoga Pro 7 14IMH9 (LNVNB161216)
- CPU: Intel Core Ultra 9 (Meteor Lake-P)
- Audio Controller: Intel Meteor Lake-P HD Audio Controller (PCI ID: 8086:7a50, rev 20)
- Audio Codec: Realtek ALC287 (Subsystem: 17aa:38cf)
- OS: Fedora 43 Workstation
- Kernel: 6.17.5-300.fc43.x86_64
- Firmware: linux-firmware-20251021-1.fc43
- Audio Stack: PipeWire 1.4.9 + WirePlumber
Problem Description
The internal laptop speakers exhibit binary volume control behavior: the speakers are either:
- Completely muted (when volume control is set to mute), OR
- Always at maximum loudness regardless of volume level setting (5%, 50%, or 100% all produce maximum volume)
There is no gradual volume adjustment between mute and maximum.
Expected Behavior
Volume control should provide smooth, gradual adjustment from 0% to 100%, with each percentage point producing a proportionally different loudness level.
Actual Behavior
- Mute (0%): Speakers are silent ✓ (works correctly)
- Any level 1-100%: Speakers play at maximum volume ✗ (broken)
- Setting volume to 5% → maximum loudness
- Setting volume to 50% → maximum loudness
- Setting volume to 100% → maximum loudness
Audio Hardware Details
Codec Information
Codec: Realtek ALC287
Vendor Id: 0x10ec0287
Subsystem Id: 0x17aa38cf
Revision Id: 0x100002
Speaker Node (from codec dump)
Node 0x14 [Pin Complex] - Internal Speaker
Pin Default: 0x90170110
Node 0x17 [Pin Complex] - Bass Speaker
Pin Default: 0x90170111
ALSA Mixer Controls
The Speaker control shows volume changes in ALSA:
$ amixer -c 1 sget 'Speaker'
Simple mixer control 'Speaker',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 87
# Volume changes reflected here but not in actual hardware outputPipeWire Sink Flags
Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY
Diagnostic Steps Taken
-
✅ Disabled DRC (Dynamic Range Compression):
amixer -c 1 sset 'Post Mixer Analog Playback DRC switch' off- Result: Made speakers slightly quieter but still binary behavior
-
❌ Tried forcing software volume control via:
.asoundrcconfiguration- WirePlumber rules with
api.alsa.ignore-dB = true - Result: No effect, hardware still exhibits binary behavior
-
✅ Verified ALSA controls respond to commands:
- ALSA mixer values change correctly
- PipeWire volume adjustments propagate to ALSA
- Issue is at hardware/firmware level, not software
-
✅ Confirmed USB audio works correctly:
- Logitech USB Headset H340 has smooth volume control
- Problem is specific to internal speakers
Hypothesis
The smart speaker amplifier (likely TI TAS2781 or similar) is not properly controlled by the SOF (Sound Open Firmware) driver. The amplifier appears to be operating in a binary on/off mode instead of accepting fine-grained volume commands from the codec.
Similar Issues
This appears similar to other Lenovo laptop audio issues with smart amplifiers:
- ThinkPad P1 Gen 6 audio issues
- Legion series amplifier control problems
- Other Meteor Lake + Realtek combinations
Request
This hardware configuration appears to need:
- SOF topology updates for Meteor Lake + ALC287 + smart amplifier combination
- Proper amplifier initialization/control via I2C
- UCM profile adjustments for Lenovo Yoga Pro 7 14IMH9
Additional Information
Complete diagnostic data including:
- Full codec dump
- ALSA mixer controls
- PipeWire sink configuration
- Kernel dmesg audio logs
- SOF firmware versions
Full diagnostic logs: https://gist.github.com/spasoye-json/fb4c6b140b07c1c50f23df08d2aa4cc1
Workaround
Currently using USB headset as the internal speakers are unusable due to always-maximum volume.