UPDATE: Root cause identified + working workaround
You were right - the quirk IS present and active. I verified this:
1. The SSID pattern 0x1025/0x182c is present in the compiled module
(confirmed via hexdump on snd-hda-codec-alc269.ko: bytes "25 10 2c 18"
at offset 0xe070).
2. The fixup is being applied. Proof from
/sys/class/sound/hwC1D0/driver_pin_configs:
0x17 0x90170151
0x1b 0x90170152
0x19 0x04a11120
These pin reconfigurations are exactly what
ALC287_FIXUP_PREDATOR_SPK_CS35L41_I2C_2 (chained with
ALC255_FIXUP_PREDATOR_SUBWOOFER) writes.
However, the audio is still broken. The actual root cause is one level
deeper - in the DAC routing done by the generic parser:
The ALC245 on this machine has three speaker pins and three DACs:
Pin 0x14 -> DAC 0x02 ("Front Playback Volume") <- carries ALL audio
Pin 0x1b -> DAC 0x03 ("Surround Playback Volume") <- carries NO signal
Pin 0x17 -> DAC 0x06 (no volume control at all) <- carries NO signal
Since the SOF topology (sof-hda-generic-4ch.tplg) only provides a stereo
stream to the codec, only DAC 0x02 receives audio. Result: only 2 of the
6 speakers play (the two woofers driven by the CS35L41 amps, whose tuning
files are named "WooferFront"). These woofers have to reproduce the full
frequency spectrum, which sounds muffled/terrible. The remaining 4
speakers stay silent. Additionally, pin 0x17 is connected to DAC 0x06
which has no volume amp in silicon, so the "LFE" mixer control only
offers a mute switch.
Verification by ear (muting tests):
- Muting 'Front' -> total silence (everything runs over DAC 0x02)
- Setting 'Surround' volume to 0% -> no audible change (DAC 0x03 unused)
WORKAROUND (fully restores audio):
Route all three speaker pins to DAC 0x02 so all 6 speakers receive the
stereo signal:
hda-verb /dev/snd/hwC1D0 0x1b SET_CONNECT_SEL 0
hda-verb /dev/snd/hwC1D0 0x17 SET_CONNECT_SEL 0
hda-verb /dev/snd/hwC1D0 0x14 SET_PIN_WIDGET_CONTROL 0x40
hda-verb /dev/snd/hwC1D0 0x1b SET_PIN_WIDGET_CONTROL 0x40
hda-verb /dev/snd/hwC1D0 0x17 SET_PIN_WIDGET_CONTROL 0x40
hda-verb /dev/snd/hwC1D0 0x14 SET_EAPD_BTLENABLE 0x02
hda-verb /dev/snd/hwC1D0 0x1b SET_EAPD_BTLENABLE 0x02
hda-verb /dev/snd/hwC1D0 0x17 SET_EAPD_BTLENABLE 0x02
After applying this: all 6 speakers play, volume control (including
Fn keys) works across the entire speaker array, and sound quality is
massively improved.
Note: power_save must be disabled (snd_hda_intel power_save=0),
otherwise the codec runtime-suspend resets the connection selectors.
Suggested proper fix: the fixup for these models (1025:1826, 1025:182c,
1025:1844) should also set the connection selectors of pins 0x1b and
0x17 to DAC 0x02 (e.g. via HDA_FIXUP_FUNC with snd_hda_override_conn_list
or explicit SET_CONNECT_SEL verbs), instead of leaving them on the
unconnected DACs chosen by the generic parser.
Happy to test patches on this hardware.
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2156446
Title:
ALSA: hda/realtek: Missing quirk for Acer Predator PH18-73 (SSID
1025:182c) - ALC287_FIXUP_PREDATOR_SPK_CS35L41_I2C_2
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2156446/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs