On Mon, 27 Oct 2025 at 07:02, Matthew Schwartz matthew.schwartz@linux.dev wrote:
On Oct 26, 2025, at 12:19 PM, Antheas Kapenekakis lkml@antheas.dev wrote:
On Sun, 26 Oct 2025 at 20:16, Antheas Kapenekakis lkml@antheas.dev wrote:
Bind the realtek codec to TAS2781 I2C audio amps on ASUS Xbox Ally projects. While these projects work without a quirk, adding it increases the output volume significantly.
Also, if you can upstream the firmware files: TAS2XXX13840.bin TAS2XXX13841.bin TAS2XXX13940.bin TAS2XXX13941.bin
This is the firmware at [1], correct? I’m testing the series with that firmware on my ROG Xbox Ally X, and I found something interesting.
By default, with just your kernel patches and the firmware files hosted at [1], my unit is loading:
tas2781-hda i2c-TXNW2781:00-tas2781-hda.0: Loaded FW: TAS2XXX13840.bin, sha256: 58cffa36ae23a2d9b2349ecb6c1d4e89627934cd79218f6ada06eaffe6688246
However, with this firmware file, TAS2XXX13840.bin, there is significant audio clipping above 75% speaker level on my individual unit.
Then, I tried renaming the other firmware file, TAS2XXX13841.bin, into TAS2XXX13840.bin. Now my unit is loading:
tas2781-hda i2c-TXNW2781:00-tas2781-hda.0: Loaded FW: TAS2XXX13840.bin, sha256: 0fda76e7142cb455df1860cfdb19bb3cb6871128b385595fe06b296a070f4b8c
With this firmware file, audio is perfect all the way to 100% speaker level.
If I recall, there have been other ASUS products that required matching amplifier hardware with firmware correctly, right? It looks like this might be another case of since it seems my unit is loading the wrong firmware for its amplifiers.
The original Ally X had a similar setup, yes.
First patch might not be perfect and your speaker pin might be 1. My Xbox Ally's pin is 1. It loads: Loaded FW: TAS2XXX13941.bin, sha256: 0fda76e7142cb455df1860cfdb19bb3cb6871128b385595fe06b296a070f4b8c
And it sounds loud and crisp. So the pin is read.
I had multiple users verify the X works, but perhaps it is not perfect yet. Make sure you are not using a dsp that might be interfering
Antheas
Matt
That would be great :)
Antheas
Cc: stable@vger.kernel.org # 6.17 Signed-off-by: Antheas Kapenekakis lkml@antheas.dev
sound/hda/codecs/realtek/alc269.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/sound/hda/codecs/realtek/alc269.c b/sound/hda/codecs/realtek/alc269.c index 8ad5febd822a..d1ad84eee6d1 100644 --- a/sound/hda/codecs/realtek/alc269.c +++ b/sound/hda/codecs/realtek/alc269.c @@ -6713,6 +6713,8 @@ static const struct hda_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x1043, 0x12f0, "ASUS X541UV", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1043, 0x1313, "Asus K42JZ", ALC269VB_FIXUP_ASUS_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1043, 0x1314, "ASUS GA605K", ALC285_FIXUP_ASUS_GA605K_HEADSET_MIC),
SND_PCI_QUIRK(0x1043, 0x1384, "ASUS RC73XA", ALC287_FIXUP_TXNW2781_I2C),SND_PCI_QUIRK(0x1043, 0x1394, "ASUS RC73YA", ALC287_FIXUP_TXNW2781_I2C), SND_PCI_QUIRK(0x1043, 0x13b0, "ASUS Z550SA", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_ASUS_ZENBOOK), SND_PCI_QUIRK(0x1043, 0x1433, "ASUS GX650PY/PZ/PV/PU/PYV/PZV/PIV/PVV", ALC285_FIXUP_ASUS_I2C_HEADSET_MIC),-- 2.51.1