Volume doesn’t scale properly on Meteor Lake + ALC287 (SOF)
Hey, I’ve got an issue with SOF on a new Intel laptop
Laptop: Lenovo Yoga Pro 7 (model 83E2)
CPU: Intel Meteor Lake
Audio: Realtek ALC287
Driver: sof-hda-dsp
System: Arch Linux (fully updated)
Kernel: tried 6.8 and 6.9
SOF firmware: latest from Arch repos
What’s the problem?
The volume control basically doesn't work right.
From 100% to like 10%, the volume doesn’t really change — it stays loud.
Then around 5–10%, it suddenly cuts off completely.
So I can’t lower volume normally. It’s either way too loud or fully muted.
What I’ve tried:
Using PipeWire, PulseAudio, ALSA → same issue With and without EasyEffects Checked alsamixer, pavucontrol, and pactl list cards → all normal Output device is shown as sof-hda-dsp, so SOF is definitely active
What I’m asking
Can you check if this is a bug in SOF for ALC287 / Meteor Lake? Maybe the volume scale or gain mapping is off? I’m happy to test patches or help with logs if needed, just let me know what you need from my side. Thanks a lot!
Hey, just following up with logs as promised:
ALSA info: http://alsa-project.org/db/?f=b668dbba1b38bf6864e07fa719e8a45a2cfaa031
Journal log: https://pastebin.com/2jWfuAYY
Let me know if you need anything else. I’m happy to test or collect more logs if needed.
@plbossart
@singalsu @bardliao do you think this is a UCM problem?
It doesn't look like an UCM issue to me. @LiQvi-Amints Does the issue happen on both speaker and headphone or just speaker?
@kailangyang Could you take a look? Here is the codec info. Codec: Realtek ALC287 Address: 0 AFG Function Id: 0x1 (unsol 1) Vendor Id: 0x10ec0287 Subsystem Id: 0x17aa38cf Revision Id: 0x100002
Thanks for the quick reply. Yes, I just tested with bluetooth headphones, the volume scales normally there. Let me know if you need more logs or want me to test something else.
@LiQvi-Amints Can you test with 3.5mm jack?
Please add below.
@@ -7054,6 +7054,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x17aa, 0x38c8, "Thinkbook 13x Gen 4", ALC287_FIXUP_CS35L41_I2C_4), SND_PCI_QUIRK(0x17aa, 0x38cb, "Y790 YG DUAL", ALC287_FIXUP_TAS2781_I2C), SND_PCI_QUIRK(0x17aa, 0x38cd, "Y790 VECO DUAL", ALC287_FIXUP_TAS2781_I2C), + SND_PCI_QUIRK(0x17aa, 0x38cf, "Yoga Pro 7 14IMH9", ALC285_FIXUP_SPEAKER2_TO_DAC1), SND_PCI_QUIRK(0x17aa, 0x38d2, "Lenovo Yoga 9 14IMH9", ALC287_FIXUP_YOGA9_14IMH9_BASS_SPK_PIN), SND_PCI_QUIRK(0x17aa, 0x38d3, "Yoga S990-16 Pro IMH YC Dual", ALC287_FIXUP_TAS2781_I2C), SND_PCI_QUIRK(0x17aa, 0x38d4, "Yoga S990-16 Pro IMH VECO Dual", ALC287_FIXUP_TAS2781_I2C),
Thanks for the reply I just tested with a 3.5mm jack, volume works fine there. It's smooth and responsive, not like with the built-in speakers. So yeah, seems like the problem only affects the laptop's internal speakers. Let me know if I can test a patch with the quirk added, happy to help.
@LiQvi-Amints It would be better if you can take the patch from https://github.com/thesofproject/linux/issues/5487#issuecomment-3072328218 and build the kernel yourselves. If you can't, you could try mine linux-image-6.16.0-rc5-gd3cb884a8b76-dirty_6.16.0~rc5-gd3cb884a8b76-3406_amd64.zip But, it is not guarantee to work on your device because I don't know your kernel config or is there any required patches not upstream.
Is the volume control adjust for speaker done in SOF with "Post Mixer Analog Playback Volume" or with a codec based control? (open e.g. alsamixer and see which ALSA control changes when you adjust volume, or is all volume adjust done in pipewire).
There may be a DRC enabled in speaker path that amplifies the playback. Check if "Post Mixer Analog Playback DRC switch" is set to "on". Does switching it manually to "off" improve things? Depending on audio content and where the playback volume is implemented the DRC that tries to make playaback louder might appear to cancel some volume steps.
Try also to attach and remove the headset, do you see the DRC switch to change state (DRC off for headset, DRC on for speaker)? There has been in some Linux distros an UCM bug that broke the HDA headset/speaker related things in SOF.