Bug 283793 - uaudio mute just lower the sound
Summary: uaudio mute just lower the sound
Status: Closed Feedback Timeout
Alias: None
Product: Base System
Classification: Unclassified
Component: usb (show other bugs)
Version: CURRENT
Hardware: Any Any
: --- Affects Only Me
Assignee: Christos Margiolis
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-01-02 09:53 UTC by Baptiste Daroussin
Modified: 2025-05-11 15:13 UTC (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Baptiste Daroussin freebsd_committer freebsd_triage 2025-01-02 09:53:32 UTC
Installed devices:
pcm0: <Intel Tiger Lake (HDMI/DP 8ch)> (play)
pcm1: <C-Media Electronics Inc. USB Advanced Audio Device> (play/rec) default

when I mute the device: mixer vol.mute=off the result is it lowers down the audio volume a lot, but it is not actually muting anything.
Comment 1 Christos Margiolis freebsd_committer freebsd_triage 2025-01-02 10:05:08 UTC
Is it a typo, or did you actually run "mixer vol.mute=off"? This will unmute the device.
Comment 2 Christos Margiolis freebsd_committer freebsd_triage 2025-01-07 19:07:51 UTC
I tested this with my USB sound card and cannot reproduce this.
Comment 3 Baptiste Daroussin freebsd_committer freebsd_triage 2025-01-08 09:02:36 UTC
what can I provide or do to debug this?
Comment 4 Christos Margiolis freebsd_committer freebsd_triage 2025-01-08 11:37:41 UTC
Could it be that this low-volume sound is coming from your microphone, if any? Was the command you ran "mixer vol.mute=off" or "mixer vol.mute=on"? In the description you wrote "off", but this unmutes the device, but I want to make sure this is a typo.

Also it might be helpful as a start to share your hw.snd, dev.pcm.1 and hw.usb.uaudio sysctls, as well as /dev/sndstat with hw.snd.verbose=2.
Comment 5 Baptiste Daroussin freebsd_committer freebsd_triage 2025-01-08 12:59:57 UTC
yes this was a typo.

I don't think it comes from the microphone because I can reproduce the same behaviour with a headset plugged in and without (directly on the laptop speakers) (yes my laptop native audio is uaudio).

Note the following it done with headset plugged in (3.5 mm jack)

without mute (mixer vol.mute=off)

# hw.snd

hw.snd.maxautovchans: 16
hw.snd.default_unit: 1
hw.snd.default_auto: 1
hw.snd.verbose: 0
hw.snd.vpc_mixer_bypass: 1
hw.snd.feeder_rate_quality: 1
hw.snd.feeder_rate_round: 25
hw.snd.feeder_rate_max: 2016000
hw.snd.feeder_rate_min: 1
hw.snd.feeder_rate_polyphase_max: 183040
hw.snd.feeder_rate_presets: 100:8:0.85 100:36:0.92 100:164:0.97
hw.snd.feeder_eq_exact_rate: 0
hw.snd.feeder_eq_presets: PEQ:16000,0.2500,62,0.2500:-9,9,1.0:44100,48000,88200,96000,176400,192000
hw.snd.basename_clone: 1
hw.snd.compat_linux_mmap: 0
hw.snd.syncdelay: -1
hw.snd.usefrags: 0
hw.snd.vpc_reset: 0
hw.snd.vpc_0db: 45
hw.snd.vpc_autoreset: 1
hw.snd.timeout: 5
hw.snd.latency_profile: 1
hw.snd.latency: 2
hw.snd.report_soft_matrix: 1
hw.snd.report_soft_formats: 1

# dev.pcm.1
dev.pcm.1.feedback_rate: 0
dev.pcm.1.mixer.mute_3.desc: 
dev.pcm.1.mixer.mute_3.max: 1
dev.pcm.1.mixer.mute_3.min: 0
dev.pcm.1.mixer.mute_3.val: 0
dev.pcm.1.mixer.vol_2.desc: 
dev.pcm.1.mixer.vol_2.max: 7680
dev.pcm.1.mixer.vol_2.min: 0
dev.pcm.1.mixer.vol_2.val: 1920
dev.pcm.1.mixer.mute_1.desc: 
dev.pcm.1.mixer.mute_1.max: 1
dev.pcm.1.mixer.mute_1.min: 0
dev.pcm.1.mixer.mute_1.val: 0
dev.pcm.1.mixer.vol_0_1.desc: 
dev.pcm.1.mixer.vol_0_1.max: 0
dev.pcm.1.mixer.vol_0_1.min: -11520
dev.pcm.1.mixer.vol_0_1.val: -5069
dev.pcm.1.mixer.vol_0_0.desc: 
dev.pcm.1.mixer.vol_0_0.max: 0
dev.pcm.1.mixer.vol_0_0.min: -11520
dev.pcm.1.mixer.vol_0_0.val: -5069
dev.pcm.1.mode: 7
dev.pcm.1.bitperfect: 0
dev.pcm.1.buffersize: 0
dev.pcm.1.rec.vchanformat: s16le:2.0
dev.pcm.1.rec.vchanrate: 48000
dev.pcm.1.rec.vchanmode: fixed
dev.pcm.1.rec.vchans: 1
dev.pcm.1.play.vchanformat: s16le:2.0
dev.pcm.1.play.vchanrate: 48000
dev.pcm.1.play.vchanmode: fixed
dev.pcm.1.play.vchans: 3
dev.pcm.1.hwvol_mixer: vol
dev.pcm.1.hwvol_step: 5
dev.pcm.1.%iommu: 
dev.pcm.1.%parent: uaudio0
dev.pcm.1.%pnpinfo: 
dev.pcm.1.%location: 
dev.pcm.1.%driver: pcm
dev.pcm.1.%desc: C-Media Electronics Inc. USB Advanced Audio Device

# /dev/sndstat
pcm1: <C-Media Electronics Inc. USB Advanced Audio Device> on uaudio0 (1p:3v/1r:1v) default
	snddev flags=0xba<AUTOVCHAN,BUSY,MPSAFE,REGISTERED,VPC>
	[dsp1.play.0]: spd 48000, fmt 0x00200010/0x00210000, flags 0x00002108, 0x00000006
		interrupts 2815138, underruns 0, feed 2815137, ready 0 
		[b:2304/1152/2|bs:2048/1024/2]
		channel flags=0x2108<TRIGGERED,BUSY,HAS_VCHAN>
		{userland} -> feeder_mixer(0x00200010) -> feeder_format(0x00200010 -> 0x00210000) -> {hardware}
	dsp1.play.0[dsp1.virtual_play.0]: spd 48000, fmt 0x00201000/0x00200010, flags 0x1000110c, 0x00000023, pid 75683 (firefox)
		interrupts 0, underruns 0, feed 25336233, ready 14848 
		[b:0/0/0|bs:16384/4096/4]
		channel flags=0x1000110c<RUNNING,TRIGGERED,BUSY,HAS_SIZE,VIRTUAL>
		{userland} -> feeder_root(0x00201000) -> feeder_format(0x00201000 -> 0x00200010) -> feeder_volume(0x00200010) -> {dsp1.play.0}
	dsp1.play.0[dsp1.virtual_play.1]: spd 48000, fmt 0x08801000/0x00200010, flags 0x10000000, 0x00000063
		interrupts 0, underruns 0, feed 0, ready 0 
		[b:0/0/0|bs:65536/8192/8]
		channel flags=0x10000000<VIRTUAL>
		{userland} -> feeder_root(0x08801000) -> feeder_format(0x08801000 -> 0x08800010) -> feeder_matrix(7.1 -> 2.0) -> feeder_volume(0x00200010) -> {dsp1.play.0}
	dsp1.play.0[dsp1.virtual_play.2]: spd 48000, fmt 0x00201000/0x00200010, flags 0x1000110c, 0x00000023, pid 83954 (firefox)
		interrupts 0, underruns 0, feed 22713957, ready 16384 
		[b:0/0/0|bs:16384/4096/4]
		channel flags=0x1000110c<RUNNING,TRIGGERED,BUSY,HAS_SIZE,VIRTUAL>
		{userland} -> feeder_root(0x00201000) -> feeder_format(0x00201000 -> 0x00200010) -> feeder_volume(0x00200010) -> {dsp1.play.0}
	[dsp1.record.0]: spd 48000, fmt 0x00200010/0x00100010, flags 0x00002100, 0x00000045
		interrupts 0, overruns 0, feed 0, hfree 768, sfree 2048
		[b:768/384/2|bs:2048/1024/2]
		channel flags=0x2100<BUSY,HAS_VCHAN>
		{hardware} -> feeder_root(0x00100010) -> feeder_matrix(1.0 -> 2.0) -> feeder_mixer(0x00200010) -> {userland}
	dsp1.record.0[dsp1.virtual_record.0]: spd 8000, fmt 0x00100008, flags 0x10000000, 0x00000000
		interrupts 0, overruns 0, feed 0, hfree 0, sfree 0
		[b:0/0/0|bs:0/0/0]
		channel flags=0x10000000<VIRTUAL>
		{dsp1.record.0} -> feeder_root(0x00000000) -> {userland}

with mute: (mixer vol.mute=on)

# hw.snd
hw.snd.maxautovchans: 16
hw.snd.default_unit: 1
hw.snd.default_auto: 1
hw.snd.verbose: 2
hw.snd.vpc_mixer_bypass: 1
hw.snd.feeder_rate_quality: 1
hw.snd.feeder_rate_round: 25
hw.snd.feeder_rate_max: 2016000
hw.snd.feeder_rate_min: 1
hw.snd.feeder_rate_polyphase_max: 183040
hw.snd.feeder_rate_presets: 100:8:0.85 100:36:0.92 100:164:0.97
hw.snd.feeder_eq_exact_rate: 0
hw.snd.feeder_eq_presets: PEQ:16000,0.2500,62,0.2500:-9,9,1.0:44100,48000,88200,96000,176400,192000
hw.snd.basename_clone: 1
hw.snd.compat_linux_mmap: 0
hw.snd.syncdelay: -1
hw.snd.usefrags: 0
hw.snd.vpc_reset: 0
hw.snd.vpc_0db: 45
hw.snd.vpc_autoreset: 1
hw.snd.timeout: 5
hw.snd.latency_profile: 1
hw.snd.latency: 2
hw.snd.report_soft_matrix: 1
hw.snd.report_soft_formats: 1

# dev.pcm.1

dev.pcm.1.feedback_rate: 0
dev.pcm.1.mixer.mute_3.desc: 
dev.pcm.1.mixer.mute_3.max: 1
dev.pcm.1.mixer.mute_3.min: 0
dev.pcm.1.mixer.mute_3.val: 0
dev.pcm.1.mixer.vol_2.desc: 
dev.pcm.1.mixer.vol_2.max: 7680
dev.pcm.1.mixer.vol_2.min: 0
dev.pcm.1.mixer.vol_2.val: 1920
dev.pcm.1.mixer.mute_1.desc: 
dev.pcm.1.mixer.mute_1.max: 1
dev.pcm.1.mixer.mute_1.min: 0
dev.pcm.1.mixer.mute_1.val: 0
dev.pcm.1.mixer.vol_0_1.desc: 
dev.pcm.1.mixer.vol_0_1.max: 0
dev.pcm.1.mixer.vol_0_1.min: -11520
dev.pcm.1.mixer.vol_0_1.val: -11520
dev.pcm.1.mixer.vol_0_0.desc: 
dev.pcm.1.mixer.vol_0_0.max: 0
dev.pcm.1.mixer.vol_0_0.min: -11520
dev.pcm.1.mixer.vol_0_0.val: -11520
dev.pcm.1.mode: 7
dev.pcm.1.bitperfect: 0
dev.pcm.1.buffersize: 0
dev.pcm.1.rec.vchanformat: s16le:2.0
dev.pcm.1.rec.vchanrate: 48000
dev.pcm.1.rec.vchanmode: fixed
dev.pcm.1.rec.vchans: 1
dev.pcm.1.play.vchanformat: s16le:2.0
dev.pcm.1.play.vchanrate: 48000
dev.pcm.1.play.vchanmode: fixed
dev.pcm.1.play.vchans: 3
dev.pcm.1.hwvol_mixer: vol
dev.pcm.1.hwvol_step: 5
dev.pcm.1.%iommu: 
dev.pcm.1.%parent: uaudio0
dev.pcm.1.%pnpinfo: 
dev.pcm.1.%location: 
dev.pcm.1.%driver: pcm
dev.pcm.1.%desc: C-Media Electronics Inc. USB Advanced Audio Device

# /dev/sndstat
pcm1: <C-Media Electronics Inc. USB Advanced Audio Device> on uaudio0 (1p:3v/1r:1v) default
	snddev flags=0xba<AUTOVCHAN,BUSY,MPSAFE,REGISTERED,VPC>
	[dsp1.play.0]: spd 48000, fmt 0x00200010/0x00210000, flags 0x00002108, 0x00000006
		interrupts 2829872, underruns 0, feed 2829871, ready 0 
		[b:2304/1152/2|bs:2048/1024/2]
		channel flags=0x2108<TRIGGERED,BUSY,HAS_VCHAN>
		{userland} -> feeder_mixer(0x00200010) -> feeder_format(0x00200010 -> 0x00210000) -> {hardware}
	dsp1.play.0[dsp1.virtual_play.0]: spd 48000, fmt 0x00201000/0x00200010, flags 0x1000110c, 0x00000023, pid 75683 (firefox)
		interrupts 0, underruns 0, feed 25468839, ready 13312 
		[b:0/0/0|bs:16384/4096/4]
		channel flags=0x1000110c<RUNNING,TRIGGERED,BUSY,HAS_SIZE,VIRTUAL>
		{userland} -> feeder_root(0x00201000) -> feeder_format(0x00201000 -> 0x00200010) -> feeder_volume(0x00200010) -> {dsp1.play.0}
	dsp1.play.0[dsp1.virtual_play.1]: spd 48000, fmt 0x08801000/0x00200010, flags 0x10000000, 0x00000063
		interrupts 0, underruns 0, feed 0, ready 0 
		[b:0/0/0|bs:65536/8192/8]
		channel flags=0x10000000<VIRTUAL>
		{userland} -> feeder_root(0x08801000) -> feeder_format(0x08801000 -> 0x08800010) -> feeder_matrix(7.1 -> 2.0) -> feeder_volume(0x00200010) -> {dsp1.play.0}
	dsp1.play.0[dsp1.virtual_play.2]: spd 48000, fmt 0x00201000/0x00200010, flags 0x1000110c, 0x00000023, pid 83954 (firefox)
		interrupts 0, underruns 0, feed 22846563, ready 14848 
		[b:0/0/0|bs:16384/4096/4]
		channel flags=0x1000110c<RUNNING,TRIGGERED,BUSY,HAS_SIZE,VIRTUAL>
		{userland} -> feeder_root(0x00201000) -> feeder_format(0x00201000 -> 0x00200010) -> feeder_volume(0x00200010) -> {dsp1.play.0}
	[dsp1.record.0]: spd 48000, fmt 0x00200010/0x00100010, flags 0x00002100, 0x00000045
		interrupts 0, overruns 0, feed 0, hfree 768, sfree 2048
		[b:768/384/2|bs:2048/1024/2]
		channel flags=0x2100<BUSY,HAS_VCHAN>
		{hardware} -> feeder_root(0x00100010) -> feeder_matrix(1.0 -> 2.0) -> feeder_mixer(0x00200010) -> {userland}
	dsp1.record.0[dsp1.virtual_record.0]: spd 8000, fmt 0x00100008, flags 0x10000000, 0x00000000
		interrupts 0, overruns 0, feed 0, hfree 0, sfree 0
		[b:0/0/0|bs:0/0/0]
		channel flags=0x10000000<VIRTUAL>
		{dsp1.record.0} -> feeder_root(0x00000000) -> {userland}
Comment 6 Christos Margiolis freebsd_committer freebsd_triage 2025-01-08 13:31:37 UTC
So I see that your device has mixer controls defined under "dev.pcm.1". When you mute the device, it seems that "dev.pcm.1.mixer.vol_0_0|1.val" goes from -5069 to -11520, which seems to be the minimum volume value, as defined in "dev.pcm.1.mixer.vol_0_0|1.min".

My first guess would be that "dev.pcm.1.mixer.vol_0_0|1.min" is wrong, and should be 0 instead. In sys/dev/sound/pcm/usb/uaudio.c I see that the ".min" control is read-only, but ".val" is read-write. Is it possible to set ".val" to 0 and see what happens?
Comment 7 Baptiste Daroussin freebsd_committer freebsd_triage 2025-01-08 14:23:26 UTC
if I set it to 0, the volume gets to the maximum.
Comment 8 Christos Margiolis freebsd_committer freebsd_triage 2025-01-08 14:31:46 UTC
(In reply to Baptiste Daroussin from comment #7)
Right, I'm not really familiar with this, but these values do not make much sense to me. 0 for max and -11520 for min?

But even in this case, it seems like the lower bound of your card's volume control is not low enough to actually mute the device. So I would guess that this is either a snd_uaudio or hardware issue.
Comment 9 Baptiste Daroussin freebsd_committer freebsd_triage 2025-01-08 14:54:12 UTC
note that if I plug another uaudio device I got the same kind of values for min/max:

dev.pcm.2.feedback_rate: 0
dev.pcm.2.mixer.mute_5.desc: 
dev.pcm.2.mixer.mute_5.max: 1
dev.pcm.2.mixer.mute_5.min: 0
dev.pcm.2.mixer.mute_5.val: 0
dev.pcm.2.mixer.vol_4.desc: 
dev.pcm.2.mixer.vol_4.max: -3072
dev.pcm.2.mixer.vol_4.min: -14592
dev.pcm.2.mixer.vol_4.val: -1920
dev.pcm.2.mixer.mute_3.desc: 
dev.pcm.2.mixer.mute_3.max: 1
dev.pcm.2.mixer.mute_3.min: 0
dev.pcm.2.mixer.mute_3.val: 0
dev.pcm.2.mixer.vol_2_1.desc: 
dev.pcm.2.mixer.vol_2_1.max: 0
dev.pcm.2.mixer.vol_2_1.min: -12800
dev.pcm.2.mixer.vol_2_1.val: -5632
dev.pcm.2.mixer.vol_2_0.desc: 
dev.pcm.2.mixer.vol_2_0.max: 0
dev.pcm.2.mixer.vol_2_0.min: -12800
dev.pcm.2.mixer.vol_2_0.val: -5632
dev.pcm.2.mixer.mute_1.desc: 
dev.pcm.2.mixer.mute_1.max: 1
dev.pcm.2.mixer.mute_1.min: 0
dev.pcm.2.mixer.mute_1.val: 0
dev.pcm.2.mixer.vol_0.desc: 
dev.pcm.2.mixer.vol_0.max: 0
dev.pcm.2.mixer.vol_0.min: -7680
dev.pcm.2.mixer.vol_0.val: -1920
dev.pcm.2.mode: 7
dev.pcm.2.bitperfect: 0
dev.pcm.2.buffersize: 0
dev.pcm.2.rec.vchanformat: s16le:2.0
dev.pcm.2.rec.vchanrate: 32000
dev.pcm.2.rec.vchanmode: fixed
dev.pcm.2.rec.vchans: 1
dev.pcm.2.play.vchanformat: s16le:2.0
dev.pcm.2.play.vchanrate: 48000
dev.pcm.2.play.vchanmode: fixed
dev.pcm.2.play.vchans: 1
dev.pcm.2.hwvol_mixer: vol
dev.pcm.2.hwvol_step: 5
dev.pcm.2.%iommu: 
dev.pcm.2.%parent: uaudio1
dev.pcm.2.%pnpinfo: 
dev.pcm.2.%location: 
dev.pcm.2.%driver: pcm
dev.pcm.2.%desc: Sennheiser Sennheiser SC 1x5 USB

but here mute works as expected
Comment 10 Christos Margiolis freebsd_committer freebsd_triage 2025-01-08 14:58:53 UTC
Does setting the volume manually to 0 using mixer(8) have the same effect?
Comment 11 Baptiste Daroussin freebsd_committer freebsd_triage 2025-01-08 15:33:34 UTC
yes
Comment 12 Christos Margiolis freebsd_committer freebsd_triage 2025-01-08 15:37:16 UTC
I'm not saying this with certainty, but it could be a hardware issue. Maybe you could try seeing if this problem is present on other OSes as well.
Comment 13 Baptiste Daroussin freebsd_committer freebsd_triage 2025-01-08 15:49:34 UTC
I tested on linux and I don't have the problem. I am downloading the linux sources to see if it has quirks for my device.
Comment 14 Mark Johnston freebsd_committer freebsd_triage 2025-01-10 20:57:50 UTC
mixer vol.mute=on doesn't seem to have any effect on a new system I have (but audio seems to work otherwise):

hdac0@pci0:0:31:3:      class=0x040300 rev=0x11 hdr=0x00 vendor=0x8086 device=0x7a50 subvendor=0x1043 subdevice=0x87fb                                         
    vendor     = 'Intel Corporation'                                                                                                                           
    device     = 'Raptor Lake High Definition Audio Controller'                                                                                                
    class      = multimedia                          
    subclass   = HDA

No problems on an older intel system:

hdac0@pci0:0:31:3:      class=0x040380 rev=0x00 hdr=0x00 vendor=0x8086 device=0x02c8 subvendor=0x8086 subdevice=0x2081                                         
    vendor     = 'Intel Corporation'                                           
    device     = 'Comet Lake PCH-LP cAVS'
    class      = multimedia                                                    
    subclass   = HDA
Comment 15 Ed Maste freebsd_committer freebsd_triage 2025-01-10 21:01:59 UTC
FWIW a recent laptop (Dell 3440) works here:

hdac0@pci0:0:31:3:	class=0x040100 rev=0x01 hdr=0x00 vendor=0x8086 device=0x51ca subvendor=0x1028 subdevice=0x0c1d
    vendor     = 'Intel Corporation'
    device     = 'Raptor Lake-P/U/H cAVS'
    class      = multimedia
    subclass   = audio
Comment 16 Christos Margiolis freebsd_committer freebsd_triage 2025-01-10 21:06:16 UTC
(In reply to Mark Johnston from comment #14)
Does the rest of the mixer(8) functionality work (volume setting, recording source selection, ...)?
Comment 17 Christos Margiolis freebsd_committer freebsd_triage 2025-01-10 21:38:41 UTC
(In reply to Mark Johnston from comment #14)
I don't see the ID 7a50 in pci/hda/hdac.h.

Can you post:
1. mixer(8) output for this device.
2. /dev/sndstat with hw.snd.verbose=2 both before and after muting.
Comment 18 Christos Margiolis freebsd_committer freebsd_triage 2025-02-11 12:45:24 UTC
Bump.
Comment 19 Christos Margiolis freebsd_committer freebsd_triage 2025-04-10 19:33:02 UTC
Bump.