linux icon indicating copy to clipboard operation
linux copied to clipboard

Volume doesn’t scale properly on Meteor Lake + ALC287 (SOF)

Open LiQvi-Amints opened this issue 6 months ago • 9 comments

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!

LiQvi-Amints avatar Jul 09 '25 21:07 LiQvi-Amints

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

LiQvi-Amints avatar Jul 14 '25 01:07 LiQvi-Amints

@singalsu @bardliao do you think this is a UCM problem?

ranj063 avatar Jul 14 '25 20:07 ranj063

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

bardliao avatar Jul 15 '25 01:07 bardliao

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 avatar Jul 15 '25 03:07 LiQvi-Amints

@LiQvi-Amints Can you test with 3.5mm jack?

bardliao avatar Jul 15 '25 06:07 bardliao

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),

KailangYang avatar Jul 15 '25 07:07 KailangYang

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 avatar Jul 15 '25 16:07 LiQvi-Amints

@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.

bardliao avatar Jul 16 '25 06:07 bardliao

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.

singalsu avatar Jul 21 '25 09:07 singalsu