* [PATCH] ALSA: hda/realtek: Add quirk for IPASON SmartBook S1
@ 2026-09-16 3:06 周建宇
2026-09-16 7:47 ` Takashi Iwai
0 siblings, 1 reply; 2+ messages in thread
From: 周建宇 @ 2026-09-16 3:06 UTC (permalink / raw)
To: linux-sound; +Cc: Takashi Iwai, Jaroslav Kysela
From 09aa2aa6f566f10eb303dfd4731e1776d0a1c96e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=91=A8=E5=BB=BA=E5=AE=87?= <997536907@qq.com>
Date: Wed, 16 Sep 2026 10:30:17 +0800
Subject: [PATCH] ALSA: hda/realtek: Add quirk for IPASON SmartBook S1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The internal speaker of the IPASON SmartBook S1 (an Emdoor ODM laptop)
stays silent under Linux, while the Bluetooth audio and the headset
output work fine. The same machine plays sound under Windows with the
vendor driver, so the hardware and the amplifier are known good.
The BIOS reports the pin default of the actual internal speaker pin
(NID 0x1b) as 0x411111f0, i.e. the default association 0xf, which means
"unconnected". The pin parser therefore drops that node already at the
pin-configuration time, hence no mixer control is ever created for it
and the pin is never driven, no matter how the output pin 0x14 is set
up. Enabling 0x1b makes the speaker work immediately.
The existing ALC256_FIXUP_HONOR_MRB_XXX_M1020_AUDIO quirk makes the
speaker work, too, but it additionally rewrites the pins 0x14, 0x19 and
0x1a with Honor-specific values, which creates a bogus "Dock Mic" device
that does not exist on this hardware. Add a minimal fixup that only
enables 0x1b as the internal speaker. Touching 0x14 is not needed:
with the pin configuration overridden at runtime, both keeping its BIOS
value (0x90170110) and disabling it (0x411111f0) leave the speaker
working, so 0x1b alone decides the output.
Codec: Realtek ALC256 (0x10ec0256), SSID 0x2782:0x0206
BIOS pincfg: 0x14 0x90170110 0x18 0x411111f0 0x19 0x02a19040
0x1a 0x411111f0 0x1b 0x411111f0 0x1d 0x4067b945
0x1e 0x411111f0 0x21 0x02214020
Tested on 7.2.0-1-MANJARO and 6.18.45-1-MANJARO, with both the SOF and
the legacy HDA driver paths.
Signed-off-by: 周建宇 <997536907@qq.com>
---
sound/hda/codecs/realtek/alc269.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/sound/hda/codecs/realtek/alc269.c b/sound/hda/codecs/realtek/alc269.c
index 3abee61..b0b8dea 100644
--- a/sound/hda/codecs/realtek/alc269.c
+++ b/sound/hda/codecs/realtek/alc269.c
@@ -4383,6 +4383,7 @@ enum {
ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN_HEADSET,
ALC285_LENOVO_DAC_RENAME,
ALC287_FIXUP_YOGA9_SPEAKER2_TO_DAC1,
+ ALC256_FIXUP_IPASON_SMARTBOOK_S1,
};
/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -7129,6 +7130,13 @@ static const struct hda_fixup alc269_fixups[] = {
.chained = true,
.chain_id = ALC287_FIXUP_TXNW2781_I2C,
},
+ [ALC256_FIXUP_IPASON_SMARTBOOK_S1] = {
+ .type = HDA_FIXUP_PINS,
+ .v.pins = (const struct hda_pintbl[]) {
+ { 0x1b, 0x90170110 }, /* the real internal speaker */
+ { }
+ },
+ },
};
static const struct hda_quirk alc269_fixup_tbl[] = {
@@ -8345,6 +8353,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x2014, 0x800a, "Positivo ARN50", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
SND_PCI_QUIRK(0x2039, 0x0001, "Inspur S14-G1", ALC295_FIXUP_CHROME_BOOK),
SND_PCI_QUIRK(0x2145, 0x0001, "Star Labs StarFighter", ALC233_FIXUP_STARLABS_STARFIGHTER),
+ SND_PCI_QUIRK(0x2782, 0x0206, "IPASON SmartBook S1", ALC256_FIXUP_IPASON_SMARTBOOK_S1),
SND_PCI_QUIRK(0x2782, 0x0214, "VAIO VJFE-CL", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
SND_PCI_QUIRK(0x2782, 0x0228, "Infinix ZERO BOOK 13", ALC269VB_FIXUP_INFINIX_ZERO_BOOK_13),
SND_PCI_QUIRK(0x2782, 0x0232, "CHUWI CoreBook XPro", ALC269VB_FIXUP_CHUWI_COREBOOK_XPRO),
@@ -8572,6 +8581,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
{.id = ALC245_FIXUP_BASS_HP_DAC, .name = "alc245-fixup-bass-hp-dac"},
{.id = ALC256_FIXUP_HONOR_MRB_XXX_M1020_AUDIO, .name = "alc256-honor-mrb-xxx-m1020-audio"},
{.id = ALC287_FIXUP_LENOVO_LEGION_AW88399, .name = "alc287-lenovo-legion-aw88399"},
+ {.id = ALC256_FIXUP_IPASON_SMARTBOOK_S1, .name = "alc256-ipason-smartbook-s1"},
{}
};
#define ALC225_STANDARD_PINS \
--
2.55.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] ALSA: hda/realtek: Add quirk for IPASON SmartBook S1
2026-09-16 3:06 [PATCH] ALSA: hda/realtek: Add quirk for IPASON SmartBook S1 周建宇
@ 2026-09-16 7:47 ` Takashi Iwai
0 siblings, 0 replies; 2+ messages in thread
From: Takashi Iwai @ 2026-09-16 7:47 UTC (permalink / raw)
To: 周建宇; +Cc: linux-sound, Takashi Iwai, Jaroslav Kysela
On Wed, 16 Sep 2026 05:06:00 +0200,
周建宇 wrote:
>
> From 09aa2aa6f566f10eb303dfd4731e1776d0a1c96e Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?=E5=91=A8=E5=BB=BA=E5=AE=87?= <997536907@qq.com>
> Date: Wed, 16 Sep 2026 10:30:17 +0800
> Subject: [PATCH] ALSA: hda/realtek: Add quirk for IPASON SmartBook S1
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> The internal speaker of the IPASON SmartBook S1 (an Emdoor ODM laptop)
> stays silent under Linux, while the Bluetooth audio and the headset
> output work fine. The same machine plays sound under Windows with the
> vendor driver, so the hardware and the amplifier are known good.
>
> The BIOS reports the pin default of the actual internal speaker pin
> (NID 0x1b) as 0x411111f0, i.e. the default association 0xf, which means
> "unconnected". The pin parser therefore drops that node already at the
> pin-configuration time, hence no mixer control is ever created for it
> and the pin is never driven, no matter how the output pin 0x14 is set
> up. Enabling 0x1b makes the speaker work immediately.
>
> The existing ALC256_FIXUP_HONOR_MRB_XXX_M1020_AUDIO quirk makes the
> speaker work, too, but it additionally rewrites the pins 0x14, 0x19 and
> 0x1a with Honor-specific values, which creates a bogus "Dock Mic" device
> that does not exist on this hardware. Add a minimal fixup that only
> enables 0x1b as the internal speaker. Touching 0x14 is not needed:
> with the pin configuration overridden at runtime, both keeping its BIOS
> value (0x90170110) and disabling it (0x411111f0) leave the speaker
> working, so 0x1b alone decides the output.
>
> Codec: Realtek ALC256 (0x10ec0256), SSID 0x2782:0x0206
> BIOS pincfg: 0x14 0x90170110 0x18 0x411111f0 0x19 0x02a19040
> 0x1a 0x411111f0 0x1b 0x411111f0 0x1d 0x4067b945
> 0x1e 0x411111f0 0x21 0x02214020
>
> Tested on 7.2.0-1-MANJARO and 6.18.45-1-MANJARO, with both the SOF and
> the legacy HDA driver paths.
>
> Signed-off-by: 周建宇 <997536907@qq.com>
The code change looks mostly OK, but could you try to use western
alphabets for your sign-off and from tags? That makes easier to
handle for many other people.
Also, you don't have to add always the model name string; nowadays a
quick can be applied via the ID alias (xxx:yyy form).
So drop the addition to alc269_fixup_models[] unless you believe this
must be added inevitably.
thanks,
Takashi
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-16 7:47 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-16 3:06 [PATCH] ALSA: hda/realtek: Add quirk for IPASON SmartBook S1 周建宇
2026-09-16 7:47 ` Takashi Iwai
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.