Bug 203909 - ASUS Zenbook UX550VD-7700 Harman/Kardon: ALSA: Master channel is do not affect the output volume, only the PCM one does.
Summary: ASUS Zenbook UX550VD-7700 Harman/Kardon: ALSA: Master channel is do not affec...
Status: RESOLVED CODE_FIX
Alias: None
Product: Drivers
Classification: Unclassified
Component: Sound(ALSA) (show other bugs)
Hardware: Intel Linux
: P1 high
Assignee: Jaroslav Kysela
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-06-16 18:21 UTC by Alexandre BIQUE
Modified: 2021-11-16 14:56 UTC (History)
4 users (show)

See Also:
Kernel Version: 5.1.9
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Alexandre BIQUE 2019-06-16 18:21:10 UTC
Hi,

Since I bought this laptop: UX550VD-7700 one year and half ago, the pulse audio volume control never worked.

The issue is that the master channel in alsamixer do not affect the output volume of my sound card. Only the pcm channel does.

Please let me know if you need further information.

Regards,
Alexandre
Comment 1 Alexandre BIQUE 2019-06-16 18:21:45 UTC
lspci 

00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 05)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16) (rev 05)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 630 (rev 04)
00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 05)
00:14.0 USB controller: Intel Corporation 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller (rev 31)
00:14.2 Signal processing controller: Intel Corporation 100 Series/C230 Series Chipset Family Thermal Subsystem (rev 31)
00:15.0 Signal processing controller: Intel Corporation 100 Series/C230 Series Chipset Family Serial IO I2C Controller #0 (rev 31)
00:15.1 Signal processing controller: Intel Corporation 100 Series/C230 Series Chipset Family Serial IO I2C Controller #1 (rev 31)
00:16.0 Communication controller: Intel Corporation 100 Series/C230 Series Chipset Family MEI Controller #1 (rev 31)
00:17.0 SATA controller: Intel Corporation HM170/QM170 Chipset SATA Controller [AHCI Mode] (rev 31)
00:1c.0 PCI bridge: Intel Corporation 100 Series/C230 Series Chipset Family PCI Express Root Port #1 (rev f1)
00:1c.2 PCI bridge: Intel Corporation 100 Series/C230 Series Chipset Family PCI Express Root Port #3 (rev f1)
00:1c.4 PCI bridge: Intel Corporation 100 Series/C230 Series Chipset Family PCI Express Root Port #5 (rev f1)
00:1f.0 ISA bridge: Intel Corporation HM175 Chipset LPC/eSPI Controller (rev 31)
00:1f.2 Memory controller: Intel Corporation 100 Series/C230 Series Chipset Family Power Management Controller (rev 31)
00:1f.3 Audio device: Intel Corporation CM238 HD Audio Controller (rev 31)
00:1f.4 SMBus: Intel Corporation 100 Series/C230 Series Chipset Family SMBus (rev 31)
01:00.0 3D controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Mobile] (rev a1)
02:00.0 Unassigned class [ff00]: Alcor Micro Device 6621
03:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)
Comment 2 Alexandre BIQUE 2019-06-16 18:23:26 UTC
My ALSA info:

http://alsa-project.org/db/?f=7dbc0154d55522402f6c096e266bd8baab16b1e3
Comment 3 Alexandre BIQUE 2019-06-19 21:25:01 UTC
This bug is quite important because the volume control being broken gives a really bad user experience.
Comment 4 Alexandre BIQUE 2019-07-16 12:28:52 UTC
Hi,

Is there anything I can do to help?

The issue seems to be stuck.

Regards,
Alexandre
Comment 5 Takashi Iwai 2019-08-12 12:35:56 UTC
It means likely a bogus pin configuration, i.e. a BIOS bug.
Try to figure out the speaker and the headphone pins by hdajackretask, and set up the proper pins.
Comment 6 Alexandre BIQUE 2019-08-12 12:37:25 UTC
But on Windows everything works correctly. How do you explain it?
Comment 7 Takashi Iwai 2019-08-12 12:49:47 UTC
Very simple: Windows driver defines the own pin configuration in it or obtains the extra information from *.INI file.  You need the similar fix up in Linux driver as well.  Many hardware vendors don't care about the BIOS breakage as long as Windows driver runs.
Comment 8 Alexandre BIQUE 2019-08-12 12:52:17 UTC
Thank you for the explanation. I'm not sure how to proceed with hdajackretask.

Hint: in alsamixer the master volume does nothing, yet muting the master stops the sound, and the pcm volume does something.

How to find out to which pin is the master volume connected?
Comment 9 Alexandre BIQUE 2019-08-12 13:08:57 UTC
To be honest I'm quite lost.

What is PCM, is it the raw data being pushed to the driver through snd_pcm_write()?

If yes then the PCM volume control should act as the master volume control right? Because it would be applied before the sound gets into any other output (speakers, headphones, ...).

Then what is currently called Master should be called "Laptop Speakers" in my case right?

And my job is to figure out which pin is currently changing the volume of the "Laptop Speaker". Am I right?
Comment 10 Takashi Iwai 2019-08-12 13:15:28 UTC
You misunderstand about the master volume.  There is *no* actual pin that corresponds to the master volume or master mute.  The master volume and mute are virtual mixer elements that change the all connected outputs like the headphone and the speaker.

And PCM volume is yet another virtual one, a pseudo mixer element that changes the volume in software, implemented inside alsa-lib.  This is even not about the kernel driver.

So you're trying to scratch a wrong side.

What you need is to identify the actual I/O pins, e.g. headphone, speaker, mic, etc.  hdajackretask is often a help for that.

But before going further, you may try other known quirks.  ALC295 is compatible with ALC296, and there are lots of entries for these codecs.  See Documentation/sound/hdaudio/models.rst, and the instruction in Documentation/sound/hdaudio/notes.rst.
Comment 11 Alexandre BIQUE 2019-08-12 13:17:41 UTC
In my case the master volume is doing nothing, so it is unrelated to the bios/pin right? Because it happens before this part.
Comment 12 Takashi Iwai 2019-08-12 13:35:22 UTC
No, you still misunderstand the situation.  There is *NO* Master volume at all on the hardware.  This is all implemented in software.

That is, Master volume does nothing but adjusting the all output volumes (headphone, speaker) *IN SOFTWARE*.

So, forget about Master volume.  I don't exclude possible bugs in the current code, but as long as sticking with this Master thingy, we can't go ahead.

Again, the first thing to check is the pin configuration -- whether the existing mixer element (Headphone, Speaker, etc) really corresponds to the actual I/O.
If not, the likely problem is the bogus pin configuration from BIOS.  If the pin mapping looks correct but it still doesn't work, then it's a bug in the driver code (or some extra configuration required).
Comment 13 Rustam Abdullaev 2021-10-11 15:10:07 UTC
The following workaround works on Asus UX550VD:

sudo gedit /usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common

Add before [PCM settings]:

[Element Master]
switch = mute
volume = ignore

Reboot.

However, as is often the case with a 4-speaker ASUS system, only the 2 top speakers work. The bottom speakers do not, and I couldn't find a way to enable them no matter the amount of HDA jack retasking :-(
Comment 14 Rafael Linnankoski 2021-10-12 05:27:26 UTC
Thanks for chiming in on this issue!:)

I've also filed a related bug to this here: https://bugzilla.kernel.org/show_bug.cgi?id=212641

The workaround you suggested indeed creates a partial workaround for the issue, but while it doesn't solve it completely (the speaker issue you mention), it also introduces a new problem on my system. With the fix applied, headphone output doesn't work properly anymore (when connected with a cable to the audio jack).

Do headphones work for you with the workaround?

I haven't tested mic with/without headphones, so not sure about that either.

I'm still hoping that perhaps one of these days this bug will be fixed, like what happened here on a different Asus laptop that had the same issue (didn't fix the issue for this model unfortunately): https://bugzilla.kernel.org/show_bug.cgi?id=212547
Comment 15 Rustam Abdullaev 2021-10-15 16:55:02 UTC
Indeed it seems adding an override for [Element Master] breaks headphones.
Interestingly, even varying left/right balance individually in pavucontrol has no effect - the volume remains at max level except when it reaches 0, then it's 0.

Here's alsa-info with a 5.14 kernel, where the issue still very much exists:

http://alsa-project.org/db/?f=5de92734e253aa16b5ef8e1b77abc252fc8aef72
Comment 16 Rafael Linnankoski 2021-11-07 03:21:57 UTC
Hi!

Wanted to let you know that the bug for UX550VE was fixed by a patch supplied by Takashi Iwai yesterday. I've tested it both on 5.14.16 and 15.15.1 kernels and it fixes the issue on my system.

I'm not sure if the UX550VD has the same issue as my model (it seems to have been some quirk in the PCI SSID configuration), but perhaps it's worth giving it a shot!:)

The related the bug is this one: https://bugzilla.kernel.org/show_bug.cgi?id=212641

And a direct link to the patch itself: https://bugzilla.kernel.org/attachment.cgi?id=299461&action=edit
Comment 17 Rustam Abdullaev 2021-11-07 20:56:14 UTC
Oh wow, the patch from #212641 fixes both the Master volume *and* the bottom speakers! I guess that resolves this one, too. Many thanks Takashi! BTW, UX550VD and UX550VE have an identical motherboard. So the patch could perhaps say just "ASUS UX550".

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 3601749f2df6..a6098c942aeb 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -8698,6 +8698,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
 	SND_PCI_QUIRK(0x1043, 0x18b1, "Asus MJ401TA", ALC256_FIXUP_ASUS_HEADSET_MIC),
 	SND_PCI_QUIRK(0x1043, 0x18f1, "Asus FX505DT", ALC256_FIXUP_ASUS_HEADSET_MIC),
 	SND_PCI_QUIRK(0x1043, 0x194e, "ASUS UX563FD", ALC294_FIXUP_ASUS_HPE),
+	SND_PCI_QUIRK(0x1043, 0x1970, "ASUS UX550", ALC289_FIXUP_ASUS_GA401),
 	SND_PCI_QUIRK(0x1043, 0x1982, "ASUS B1400CEPE", ALC256_FIXUP_ASUS_HPE),
 	SND_PCI_QUIRK(0x1043, 0x19ce, "ASUS B9450FA", ALC294_FIXUP_ASUS_HPE),
 	SND_PCI_QUIRK(0x1043, 0x19e1, "ASUS UX581LV", ALC295_FIXUP_ASUS_MIC_NO_PRESENCE),
--
Comment 18 Rafael Linnankoski 2021-11-08 01:55:01 UTC
Great, so happy to hear that. Enjoy the new convenience!:P
Comment 19 Takashi Iwai 2021-11-16 14:56:31 UTC
Let's close the bug.

Note You need to log in before you can comment on or make changes to this bug.