You are not logged in.

#1 2023-01-01 14:24:31

jonatanhanssen
Member
Registered: 2023-01-01
Posts: 1

Cannot independently control speaker & headphone volume on Huawei D14

Output of "sudo dmidecode | grep -A3 '^System Information'"

System Information
	Manufacturer: HUAWEI
	Product Name: NBD-WXX9
	Version: M1010

Output of "lscpi | grep -i audio"

00:1f.3 Multimedia audio controller: Intel Corporation Tiger Lake-LP Smart Sound Technology Audio Controller (rev 20)

Output of "alsa-info.sh"

http://alsa-project.org/db/?f=db8b23b23 … c0b9073a1a


I know that this laptop has had some audio issues in the past, which apparently has been fixed as of 6.1.1. While I have no problem getting audio from the speakers or from headphones, I am not able to only play sound from one of them. Using alsamixer, I can see that alsa is correctly muting the "Speaker" control and unmuting the "Headphone" control when headphones are plugged in, and doing the inverse when they are plugged out (images below). The same can be seen with "pactl list sinks" which correctly shows that the active port is either "analog-output-speaker" or "analog-output-headphones" depending on whether the headphones are plugged in or not.

Output of "pactl list sinks"

Sink #0
	State: IDLE
	Name: alsa_output.pci-0000_00_1f.3-platform-sof-essx8336.stereo-fallback
	Description: Tiger Lake-LP Smart Sound Technology Audio Controller Stereo
	Driver: module-alsa-card.c
	Sample Specification: s16le 2ch 48000Hz
	Channel Map: front-left,front-right
	Owner Module: 6
	Mute: no
	Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB
	        balance 0.00
	Base Volume: 65536 / 100% / 0.00 dB
	Monitor Source: alsa_output.pci-0000_00_1f.3-platform-sof-essx8336.stereo-fallback.monitor
	Latency: 71436 usec, configured 75000 usec
	Flags: HARDWARE HW_MUTE_CTRL DECIBEL_VOLUME LATENCY
	Properties:
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = ""
		alsa.id = "ES8336 (*)"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "0"
		alsa.card = "0"
		alsa.card_name = "sof-essx8336"
		alsa.long_card_name = "HUAWEI-NBD_WXX9-M1010-NBD_WXX9_PCB_B4"
		alsa.driver_name = "snd_soc_sof_es8336"
		device.bus_path = "pci-0000:00:1f.3-platform-sof-essx8336"
		sysfs.path = "/devices/pci0000:00/0000:00:1f.3/sof-essx8336/sound/card0"
		device.bus = "pci"
		device.vendor.id = "8086"
		device.vendor.name = "Intel Corporation"
		device.product.id = "a0c8"
		device.product.name = "Tiger Lake-LP Smart Sound Technology Audio Controller"
		device.string = "hw:0"
		device.buffering.buffer_size = "65536"
		device.buffering.fragment_size = "16384"
		device.access_mode = "mmap+timer"
		device.profile.name = "stereo-fallback"
		device.profile.description = "Stereo"
		device.description = "Tiger Lake-LP Smart Sound Technology Audio Controller Stereo"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card-pci"
	Ports:
		analog-output-speaker: Speakers (type: Speaker, priority: 10000, availability unknown)
		analog-output-headphones: Headphones (type: Headphones, priority: 9900, availability group: Legacy 1, not available)
	Active Port: analog-output-speaker
	Formats:
		pcm

With headphones:

https://i.imgur.com/uPQ2xmu.png

Without:

https://i.imgur.com/dYUL832.png

However, both the speaker and headphones are in fact affected by the Headphone control, and the Speaker control does not have the pvolume ability, which I assume it should have. Plugging out the headphones sets the Headphone control to 0%, but this decreases the volume of the Speaker as well (but not completely).

Using pulseaudio and pavucontrol, the output section either lists the Speakers as unavailiable or the Headphones as unplugged, but I can select them both regardless of whether the Headphones are plugged in or not. Selecting headphones makes the sound louder, but this is simply because it sets the Headphone control to 100%, which has an effect on the Speakers as well (this can be seen in alsamixer).

Using "jackhdaretask" I am only able to select the "Intel Tigerlake HDMI" codec, which seems strange. Therefore I looked at this output:

cat /proc/asound/card0/codec* | grep Codec

Codec: Intel Tigerlake HDMI

Which also seems weird, although I do not know much about sound systems. Should I have a different codec?

Things I've tried:

- Adding "options snd_hda_intel model=dell-headset-multi" to a .conf file in "/etc/modprobe.d". This was recommended if one has problems with detecting the headphone jack, however that is not my problem so this probably has no effect.

- Switching to pipewire

Any idea what may cause this problem? Is it a driver issue, or something with the codec?

Offline

#2 2023-01-01 14:59:31

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 21,410

Re: Cannot independently control speaker & headphone volume on Huawei D14

Your system does not use the old HDA driver framework anymore so any and all solutions with hdajackretask or snd_hda_intel are not going to have an effect.

Stuff like this will depend on sof-firmware and the jack setup logistics found in alsa-ucm-conf, in your particular case /usr/share/alsa/ucm2/Intel/sof-essx8336/sof-essx8336.conf and /usr/share/alsa/ucm2/Intel/sof-essx8336/HiFi.conf

Looking at these files there's also a reason given for the cicumstance

SectionDevice."Speaker" {
	...
	Value {
		PlaybackPriority 100
		PlaybackPCM "hw:${CardId}"
		# The es8316 only has a HP-amp which is muxed to the speaker
		# or to the headpones output
		PlaybackMixerElem "Headphone Mixer"
		PlaybackMasterElem "DAC"
	}
}

So this is apparently a codec level limitation.

Last edited by V1del (2023-01-01 15:04:47)

Offline

Board footer

Powered by FluxBB