You are not logged in.

#1 2021-10-13 09:22:38

TheStroyer
Member
Registered: 2018-08-28
Posts: 54

Speaker suddenly becomes almost inaudible when below a certain volume

To reproduce this I put up a song to have some constant audio. I then tweak the output volume down with increments of 2%. At some point I reach the threshold and over the course of a second the audible volume drops to a level that's just barely audible. Note that this is not at a (software) volume level where you would expect that. When I raise the volume I have to raise the volume 10-15% before the sound picks up again.

This can also be reproduced by only turning down the volume of the specific stream. This seems to be dependent on the actual loudness of the sound, because when the music is louder, the threshold is lower. And when there's a quiet part in the music, the volume also drops the same way as described before.

I'm suspecting this is a driver/firmware issue, but I tried both with and without sof-firmware, but it doesn't seem to make a difference. I have alsa-ucm-conf and alsa-firmware installed. I haven't changed any settings or that I know of.


alsa-info.sh: http://alsa-project.org/db/?f=08c306cd5 … 3666e7eda7

pactl list cards # without sof-firmware installed

https://pastebin.com/q1tQHLE9

pactl list sources # without sof-firmware installed

https://pastebin.com/MH57qMbA

Last edited by TheStroyer (2021-10-13 09:23:50)

Offline

#2 2021-10-13 09:48:50

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

Re: Speaker suddenly becomes almost inaudible when below a certain volume

list sinks is the more interesting output, sources are microphones.

Percentages are a nice "human" representation, but are ultimately meaningless as the hardware doesn't work with percentages and conversing to and from a percentage view is prone to rounding errors. You have multiple controls here. And since "Master" is the main one that's likely what will be adjusted by the logical software volume of pipewire. The Master channel has comparatively small increments at 74 and thus relevantly larger effects when doing "percentage" jumps.  You'll likely get better/lower increments if you manually adjust the PCM control of the card in alsamixer with e.g.

alsamixer -c0

see also the amixer output of the alsa-info script which shows that the current level the master is at will lead to a dB reduction of -49 from the base volume, I'm assuming that between the lower increment where it turns inaudible that is a big enough reduction/jump to reach a cutoff point in the HW. So I'd first test if you can bring down the volume lower by directly adjusting the PCM rather than the master control/or use actual volume increments rather than percents.

Last edited by V1del (2021-10-13 09:51:21)

Offline

#3 2021-10-13 11:08:47

TheStroyer
Member
Registered: 2018-08-28
Posts: 54

Re: Speaker suddenly becomes almost inaudible when below a certain volume

Here are the sinks:

pactl list sinks
Sink #48
	State: RUNNING
	Name: alsa_output.pci-0000_00_1f.3.analog-stereo
	Description: Built-in Audio Analog Stereo
	Driver: PipeWire
	Sample Specification: s32le 2ch 48000Hz
	Channel Map: front-left,front-right
	Owner Module: 4294967295
	Mute: no
	Volume: front-left: 7759 /  12% / -55.60 dB,   front-right: 7759 /  12% / -55.60 dB
	        balance 0.00
	Base Volume: 65536 / 100% / 0.00 dB
	Monitor Source: alsa_output.pci-0000_00_1f.3.analog-stereo.monitor
	Latency: 0 usec, configured 0 usec
	Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
	Properties:
		object.path = "alsa:pcm:0:front:0:playback"
		api.alsa.path = "front:0"
		api.alsa.pcm.card = "0"
		api.alsa.pcm.stream = "playback"
		audio.channels = "2"
		audio.position = "FL,FR"
		device.routes = "2"
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "CX11970 Analog"
		alsa.id = "CX11970 Analog"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "0"
		alsa.card = "0"
		alsa.card_name = "HDA Intel PCH"
		alsa.long_card_name = "HDA Intel PCH at 0x404a108000 irq 152"
		alsa.driver_name = "snd_hda_intel"
		device.profile.name = "analog-stereo"
		device.profile.description = "Analog Stereo"
		card.profile.device = "8"
		device.id = "43"
		factory.name = "api.alsa.pcm.sink"
		priority.driver = "1009"
		priority.session = "1009"
		media.class = "Audio/Sink"
		node.nick = "HDA Intel PCH"
		node.name = "alsa_output.pci-0000_00_1f.3.analog-stereo"
		device.description = "Built-in Audio Analog Stereo"
		device.icon_name = "audio-card-analog"
		device.bus = "pci"
		device.bus_path = "pci-0000:00:1f.3"
		device.form_factor = "internal"
		node.pause-on-idle = "false"
		factory.id = "18"
		client.id = "32"
		node.driver = "true"
		factory.mode = "merge"
		audio.adapt.follower = ""
		library.name = "audioconvert/libspa-audioconvert"
		object.id = "48"
		node.max-latency = "8192/48000"
	Ports:
		analog-output-speaker: Speakers (type: Speaker, priority: 10000, availability group: Legacy 3, availability unknown)
		analog-output-headphones: Headphones (type: Headphones, priority: 9900, availability group: Legacy 4, not available)
	Active Port: analog-output-speaker
	Formats:
		pcm

Sink #56
	State: SUSPENDED
	Name: alsa_output.pci-0000_01_00.1.hdmi-stereo-extra6
	Description: GP107GL High Definition Audio Controller Digital Stereo (HDMI 7)
	Driver: PipeWire
	Sample Specification: s16le 2ch 48000Hz
	Channel Map: front-left,front-right
	Owner Module: 4294967295
	Mute: no
	Volume: front-left: 32112 /  49% / -18.59 dB,   front-right: 32112 /  49% / -18.59 dB
	        balance 0.00
	Base Volume: 65536 / 100% / 0.00 dB
	Monitor Source: alsa_output.pci-0000_01_00.1.hdmi-stereo-extra6.monitor
	Latency: 0 usec, configured 0 usec
	Flags: HARDWARE DECIBEL_VOLUME LATENCY SET_FORMATS 
	Properties:
		object.path = "alsa:pcm:1:hdmi:1,6:playback"
		api.alsa.path = "hdmi:1,6"
		api.alsa.pcm.card = "1"
		api.alsa.pcm.stream = "playback"
		audio.channels = "2"
		audio.position = "FL,FR"
		device.routes = "1"
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "HDMI 6"
		alsa.id = "HDMI 6"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "12"
		alsa.card = "1"
		alsa.card_name = "HDA NVidia"
		alsa.long_card_name = "HDA NVidia at 0xe6000000 irq 17"
		alsa.driver_name = "snd_hda_intel"
		device.profile.name = "hdmi-stereo-extra6"
		device.profile.description = "Digital Stereo (HDMI 7)"
		card.profile.device = "25"
		device.id = "42"
		factory.name = "api.alsa.pcm.sink"
		priority.driver = "488"
		priority.session = "488"
		media.class = "Audio/Sink"
		node.nick = "HDA NVidia"
		node.name = "alsa_output.pci-0000_01_00.1.hdmi-stereo-extra6"
		device.description = "GP107GL High Definition Audio Controller Digital Stereo (HDMI 7)"
		device.icon_name = "audio-card-hdmi"
		device.bus = "pci"
		device.bus_path = "pci-0000:01:00.1"
		node.pause-on-idle = "false"
		factory.id = "18"
		client.id = "32"
		node.driver = "true"
		factory.mode = "merge"
		audio.adapt.follower = ""
		library.name = "audioconvert/libspa-audioconvert"
		object.id = "56"
		node.max-latency = "8192/48000"
	Ports:
		hdmi-output-6: HDMI / DisplayPort 7 (type: HDMI, priority: 5300, availability group: Legacy 7, available)
	Active Port: hdmi-output-6
	Formats:
		pcm

To get into the details, pipewire adjusts the "Master" channel when I adjust my volume (with small tweaks of "PCM" from ~ -1 dB to 0 dB gain to reach the exact volume level I suppose) . There's also the "Speaker" and "PCM" channel that adjust the same volume level.

The Master channel has comparatively small increments at 74

You probably mean big increments, but yeah that's true. Pipewire solves this by using the PCM channel as well for the smaller increments.

Side note: The volume levels that are visible from a program like pavucontrol are different from the levels in alsamixer. In pavucontrol I see 17% and in alsamixer I see 12%. Weirdly enough, 6% in pavucontrol is 0% on the master channel in alsamixer.


I tried out what you said, adjusting the volume levels with alsamixer.
- If I keep the master at -36 dB (20%), I can lower the PCM until around -13.8 dB (52%) before it's being cut off.
- Keeping "Master on 100% and "Speaker" on -36 dB (20%) results in a cut-off point of ~-13.60 dB (53%).
- If I just lower the volume with pipewire (mainly "Master" channel), it's being cut off at -49 dB (same for when I manually do only the master channel).
- Adjusting only the PCM with "Master" on 100% results in a cut-off point of about -46.60 dB.

The audible loudness of the cut-off point seems about the same for every option. Note again that the exact cutoff point in dB gain depends on the loudness of the sound.

EDIT:
The bug is not always reproducible. I currently can lower "Master" all the way down without hearing any weird volume drops. Pactl is not showing much difference.

pactl list sinks
Sink #48
	State: RUNNING
	Name: alsa_output.pci-0000_00_1f.3.analog-stereo
	Description: Built-in Audio Analog Stereo
	Driver: PipeWire
	Sample Specification: s32le 2ch 48000Hz
	Channel Map: front-left,front-right
	Owner Module: 4294967295
	Mute: no
	Volume: front-left: 13107 /  20% / -41.94 dB,   front-right: 12490 /  19% / -43.20 dB
	        balance -0.05
	Base Volume: 65536 / 100% / 0.00 dB
	Monitor Source: alsa_output.pci-0000_00_1f.3.analog-stereo.monitor
	Latency: 0 usec, configured 0 usec
	Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
	Properties:
		object.path = "alsa:pcm:0:front:0:playback"
		api.alsa.path = "front:0"
		api.alsa.pcm.card = "0"
		api.alsa.pcm.stream = "playback"
		audio.channels = "2"
		audio.position = "FL,FR"
		device.routes = "2"
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "CX11970 Analog"
		alsa.id = "CX11970 Analog"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "0"
		alsa.card = "0"
		alsa.card_name = "HDA Intel PCH"
		alsa.long_card_name = "HDA Intel PCH at 0x404a108000 irq 152"
		alsa.driver_name = "snd_hda_intel"
		device.profile.name = "analog-stereo"
		device.profile.description = "Analog Stereo"
		card.profile.device = "8"
		device.id = "43"
		factory.name = "api.alsa.pcm.sink"
		priority.driver = "1009"
		priority.session = "1009"
		media.class = "Audio/Sink"
		node.nick = "HDA Intel PCH"
		node.name = "alsa_output.pci-0000_00_1f.3.analog-stereo"
		device.description = "Built-in Audio Analog Stereo"
		device.icon_name = "audio-card-analog"
		device.bus = "pci"
		device.bus_path = "pci-0000:00:1f.3"
		device.form_factor = "internal"
		node.pause-on-idle = "false"
		factory.id = "18"
		client.id = "32"
		node.driver = "true"
		factory.mode = "merge"
		audio.adapt.follower = ""
		library.name = "audioconvert/libspa-audioconvert"
		object.id = "48"
		node.max-latency = "8192/48000"
	Ports:
		analog-output-speaker: Speakers (type: Speaker, priority: 10000, availability group: Legacy 3, availability unknown)
		analog-output-headphones: Headphones (type: Headphones, priority: 9900, availability group: Legacy 4, not available)
	Active Port: analog-output-speaker
	Formats:
		pcm

Sink #56
	State: SUSPENDED
	Name: alsa_output.pci-0000_01_00.1.hdmi-stereo-extra6
	Description: GP107GL High Definition Audio Controller Digital Stereo (HDMI 7)
	Driver: PipeWire
	Sample Specification: s16le 2ch 48000Hz
	Channel Map: front-left,front-right
	Owner Module: 4294967295
	Mute: no
	Volume: front-left: 52428 /  80% / -5.81 dB,   front-right: 52428 /  80% / -5.81 dB
	        balance 0.00
	Base Volume: 65536 / 100% / 0.00 dB
	Monitor Source: alsa_output.pci-0000_01_00.1.hdmi-stereo-extra6.monitor
	Latency: 0 usec, configured 0 usec
	Flags: HARDWARE DECIBEL_VOLUME LATENCY SET_FORMATS 
	Properties:
		object.path = "alsa:pcm:1:hdmi:1,6:playback"
		api.alsa.path = "hdmi:1,6"
		api.alsa.pcm.card = "1"
		api.alsa.pcm.stream = "playback"
		audio.channels = "2"
		audio.position = "FL,FR"
		device.routes = "1"
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "HDMI 6"
		alsa.id = "HDMI 6"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "12"
		alsa.card = "1"
		alsa.card_name = "HDA NVidia"
		alsa.long_card_name = "HDA NVidia at 0xe6000000 irq 17"
		alsa.driver_name = "snd_hda_intel"
		device.profile.name = "hdmi-stereo-extra6"
		device.profile.description = "Digital Stereo (HDMI 7)"
		card.profile.device = "25"
		device.id = "42"
		factory.name = "api.alsa.pcm.sink"
		priority.driver = "488"
		priority.session = "488"
		media.class = "Audio/Sink"
		node.nick = "HDA NVidia"
		node.name = "alsa_output.pci-0000_01_00.1.hdmi-stereo-extra6"
		device.description = "GP107GL High Definition Audio Controller Digital Stereo (HDMI 7)"
		device.icon_name = "audio-card-hdmi"
		device.bus = "pci"
		device.bus_path = "pci-0000:01:00.1"
		node.pause-on-idle = "false"
		factory.id = "18"
		client.id = "32"
		node.driver = "true"
		factory.mode = "merge"
		audio.adapt.follower = ""
		library.name = "audioconvert/libspa-audioconvert"
		object.id = "56"
		node.max-latency = "8192/48000"
	Ports:
		hdmi-output-6: HDMI / DisplayPort 7 (type: HDMI, priority: 5300, availability group: Legacy 7, available)
	Active Port: hdmi-output-6
	Formats:
		pcm

The new alsa-info seems to be slightly different and can be seen on http://alsa-project.org/db/?f=0394a7ff1 … 19900b5234.

Last edited by TheStroyer (2021-10-14 14:45:19)

Offline

Board footer

Powered by FluxBB