[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87o6m71n4u.wl-tiwai@suse.de>
Date: Mon, 02 Feb 2026 11:00:01 +0100
From: Takashi Iwai <tiwai@...e.de>
To: Samuel Dionne-Riel <samuel@...nne-riel.com>
Cc: Jaroslav Kysela <perex@...ex.cz>,
Takashi Iwai <tiwai@...e.com>,
linux-sound@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 2/2] ALSA: hda/realtek: Add quirk for Minisforum V3 SE
On Mon, 02 Feb 2026 00:12:15 +0100,
Samuel Dionne-Riel wrote:
>
> This likely will apply for the Minisforum V3, though there isn't a lot
> of information to confirm whether or not the identifiers are the same.
>
> The Minisforum V3 is likely to benefit from the same fix, as it exhibits
> similar symptoms. Though users reportedly work around it by forcing the
> software mixer.
>
> This was verified on the Minisforum V3 SE, and the root cause (the bass
> speakers routing) was found out by using pink noise, and playing with
> the mixers.
>
> Signed-off-by: Samuel Dionne-Riel <samuel@...nne-riel.com>
>
> ---
>
> For posterity, and hoping it helps someone else in the future, here's
> the breadcrumbs I followed to get to this fix.
>
> (Stopping other software, like Wireplumber, is needed here.)
>
> The following command was used for the pink noise:
>
> speaker-test -Dhw:1,0 -c2
>
> By using `alsamixer -c1`, muting either of the "Speaker" or "Bass
> Speaker" channels showed that the speakers were indeed separate. On the
> side of the device, there are two speaker grills next to each other, and
> by moving an obstacle in front clearly shows the channels are
> independent.
>
> This differs from the “well-known” wisdom, where it is assumed the
> speaker can't be controlled with the mixer. To be fair, software like
> Wireplumber will mute the Bass Speaker in sync with the main Speaker,
> which makes it seem like there is no control at all.
>
> Knowing this fact, finding plausible fixes in the sound stack pointed at
> the kernel driver being responsible for tying controls to the outputs.
> And after fighting with some of the tooling, finding out that the
> necessary knowledge is found in /proc/asound/card1/codec#0 in a quite
> usable format unblocked me.
>
> As a final hint, selecting an output using `hda-verb` uses the following
> form:
>
> hda-verb /dev/snd/hwC1D0 $NODE SET_CONNECT_SEL $INDEX
>
> Where `$NODE` is the node identifier found under
> `/proc/asound/card1/codec#0`, and `$INDEX` is the index of the desired
> DAC connection under `Connection:` in the same `/proc` file.
>
> For my particular system, the `$NODE` is `0x17`, and the DAC can be
> either `0` or `1`, as `0x06` is the DAC without volume control, and
> `0x08` is an input.
>
> ~ $ cat /proc/asound/card1/codec#0 | grep -A15 '^Node 0x17'
> Node 0x17 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
> Control: name="Bass Speaker Playback Switch", index=0, device=0
> ControlAmp: chs=3, dir=Out, idx=0, ofs=0
> Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-Out vals: [0x80 0x80]
> Pincap 0x0000001c: OUT HP Detect
> Pin Default 0x90170120: [Fixed] Speaker at Int N/A
> Conn = Analog, Color = Unknown
> DefAssociation = 0x2, Sequence = 0x0
> Misc = NO_PRESENCE
> Pin-ctls: 0x40: OUT
> Unsolicited: tag=00, enabled=0
> Power states: D0 D1 D2 D3 EPSS
> Power: setting=D0, actual=D0
> Connection: 4
> 0x02 0x03 0x06* 0x08
>
> ~ $ cat /proc/asound/card1/codec#0 | grep '^Node 0x0[2368]'
> Node 0x02 [Audio Output] wcaps 0x41d: Stereo Amp-Out
> Node 0x03 [Audio Output] wcaps 0x41d: Stereo Amp-Out
> Node 0x06 [Audio Output] wcaps 0x411: Stereo
> Node 0x08 [Audio Input] wcaps 0x10051b: Stereo Amp-In
>
> Signed-off-by: Samuel Dionne-Riel <samuel@...nne-riel.com>
> ---
> sound/hda/codecs/realtek/alc269.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/sound/hda/codecs/realtek/alc269.c b/sound/hda/codecs/realtek/alc269.c
> index 5d38e371a6836..bcac3e9f106ca 100644
> --- a/sound/hda/codecs/realtek/alc269.c
> +++ b/sound/hda/codecs/realtek/alc269.c
> @@ -7370,6 +7370,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
> SND_PCI_QUIRK(0xf111, 0x0009, "Framework Laptop", ALC295_FIXUP_FRAMEWORK_LAPTOP_MIC_NO_PRESENCE),
> SND_PCI_QUIRK(0xf111, 0x000b, "Framework Laptop", ALC295_FIXUP_FRAMEWORK_LAPTOP_MIC_NO_PRESENCE),
> SND_PCI_QUIRK(0xf111, 0x000c, "Framework Laptop", ALC295_FIXUP_FRAMEWORK_LAPTOP_MIC_NO_PRESENCE),
> + SND_PCI_QUIRK(0x1f4c, 0xe001, "Minisforum V3 (SE)", ALC245_FIXUP_BASS_HP_DAC),
The table is sorted in PCI SSID order. Please put at the appropriate
position.
thanks,
Takashi
Powered by blists - more mailing lists