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

Reply via email to