First I think I am going to split this mail into two topics, starting
with the easiest one, the External Base speaker.
The code above added two new options: Surround 2.1 and Surround 4.0. After plugging in the base speaker:
- The Base speaker plays without this code (but the previous code was
necessary) on the Speakers.
- The Base speaker does not play on Surround 2.1
- The Base speaker does play on Surround 4.0
- The Base speaker does not switch automatically to any Surround when
plugged in.
How do you test ? Using sound preference or alsa speaker-test
https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pc...
Seem pulseaudio bug since driver only define stereo and 2.1 channel map and there is no surround 4.0 channel map
http://git.alsa-project.org/?p=alsa-lib.git;a=commitdiff;h=48f1b308cc66152eb...
+ ttable.0.FL 1 + ttable.1.FR 1 + ttable.2.LFE 1
surround21 is supposed to be also used on 5.1 speaker since it only check
Do you mean it only work on 5.1 speaker since there are three combination of 2.1 chmap ?
https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound?id...
1) hda default 2.1
{ .channels = 4, .map = { SNDRV_CHMAP_FL, SNDRV_CHMAP_FR, SNDRV_CHMAP_LFE , SNDRV_CHMAP_LFE } }, { }
2) acer aspire /* LFE only on left */
{ .channels = 4, .map = { SNDRV_CHMAP_FL, SNDRV_CHMAP_FR, SNDRV_CHMAP_LFE, SNDRV_CHMAP_NA} }, /* LFE only on left */ { }
3) LFE only on right on asus latop external sonic master subwoofer { .channels = 4, .map = { SNDRV_CHMAP_FL, SNDRV_CHMAP_FR, SNDRV_CHMAP_NA, SNDRV_CHMAP_LFE } }, /* LFE only on right */ { }
speaker-test don't check channel map
Those asus n series laptop with alc663 seem use node 0x1e to for the detection of external subwoofer but node 0x1e pincap does not support detect and unsol event
This mean those subwoofer need to use __snd_hda_jack_add_kctl() which does not check pincap and unsol event
This require change of __snd_hda_jack_add_kctl() by adding new parameter sense_nid to use another nid for jack sense without enable unsol event
However there is bug in hda_jack implementation , snd_hda_jack_detect() can be called in patch_realtek.c before creation of the jacktbl entry (i.e. before snd_hda_jack_add_kctls()
https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1040873/comments/...
Did you found the message " lfe filter activated (LR4 type)" in pulseaudio verbose log ?