Bug 91568 - [N56VZ, Realtek ALC663, Black Headphone Out, Right] No sound from Subwoofer in 2.1 mode
Summary: [N56VZ, Realtek ALC663, Black Headphone Out, Right] No sound from Subwoofer i...
Status: RESOLVED MOVED
Alias: None
Product: PulseAudio
Classification: Unclassified
Component: alsa (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: pulseaudio-bugs
QA Contact: pulseaudio-bugs
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-08-05 20:05 UTC by jason.braddock.69
Modified: 2018-07-30 10:15 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments
asus alc663 with sonic master subwoofer detectable jack using pin sense of node 0x1e (17.25 KB, patch)
2015-08-07 07:33 UTC, Raymond
Details | Splinter Review

Description jason.braddock.69 2015-08-05 20:05:14 UTC
Hi,

I have a 2.1 sound system.

When I use the profile "stereo" in pusle audio volume control (Xubuntu 15.04), the subwoofer outputs sound (but it is an incorrect track, sort of miwed with right channel)

When I use profile "Analog surround 2.1", I get no sound at all from subwoofer.

An historical bug was opened on launchpad. There's a lot of history and diffrent versions tested. Read from post #115 : https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1040873/comments/115

Some logs:

$ cat /proc/asound/version 
Advanced Linux Sound Architecture Driver Version k3.19.0-25-generic.

Pulse audio verbose log : https://launchpadlibrarian.net/204577103/15_04_pulseverbose.log

pactl list sinks : https://launchpadlibrarian.net/204577057/15_04_pactlListSinks.txt

Feel free to ask for more tests.

Regards
Comment 1 Raymond 2015-08-06 04:59:02 UTC

pulseaudio 6.0 is not enough as you need those lfe filter patches

you should find the following message in your pukseaudio log

pa_log_debug("  lfe filter activated (LR4 type), the crossover_freq = %uHz", crossover_freq);

http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=c36e191ce5d38173424c3db9ba06638fd6b8408e
Comment 2 Raymond 2015-08-06 05:13:25 UTC
can your sonic master subwoofer be detected by hdajacksensetest ?

since pincap of node 0x1e does not support DETECT



sudo hda-jack-sense-test -a :
 *** Without subwoofer:
 Pin 0x1e (Black SPDIF Out): present = No
 *** With subwoofer:
 Pin 0x1e (Black SPDIF Out): present = Yes
Comment 3 jason.braddock.69 2015-08-06 17:39:40 UTC
(In reply to Raymond from comment #1)
> 
> pulseaudio 6.0 is not enough as you need those lfe filter patches
> 
> you should find the following message in your pukseaudio log
> 
> pa_log_debug("  lfe filter activated (LR4 type), the crossover_freq = %uHz",
> crossover_freq);
> 
> http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/
> ?id=c36e191ce5d38173424c3db9ba06638fd6b8408e

OK, I guess I should update to git version of pulse.
Is there a guide for recompiling Pulse?
Or maybe a ppa with daily builds for ubuntu?
Comment 4 Raymond 2015-08-07 02:28:43 UTC
http://colin.guthr.ie/2010/09/compiling-and-running-pulseaudio-from-git/


you need to ask David whether he has ppa for pulseaudio with lfe filter



AFAIK, Ubuntu 15.10 alpha pulseaudio has LFE filter BUT  it is quite unstable and not suitable for any production computer (numerous bug cannot unlock screen saver )
Comment 5 Raymond 2015-08-07 07:33:50 UTC
Created attachment 117571 [details] [review]
asus alc663 with sonic master subwoofer detectable jack using pin sense of node 0x1e

using modified int __snd_hda_jack_add_kctl() to create "Ext Subwoofer Jack" kctl which use pin sense of 0x1e
Comment 6 jason.braddock.69 2015-09-02 14:29:41 UTC
(In reply to Raymond from comment #2)
> can your sonic master subwoofer be detected by hdajacksensetest ?
> 
> since pincap of node 0x1e does not support DETECT
> 
> 
> 
> sudo hda-jack-sense-test -a :
>  *** Without subwoofer:
>  Pin 0x1e (Black SPDIF Out): present = No
>  *** With subwoofer:
>  Pin 0x1e (Black SPDIF Out): present = Yes


Hi,
how can I install hda-jack-sense-test?
I tried sudo add-apt-repository ppa:diwic/misc but the repository doesn't work anymore...
Or maybe I did something wrong...
Comment 7 Raymond 2015-09-02 16:04:41 UTC
http://git.alsa-project.org/?p=alsa-tools.git;a=tree


you need hdajacksensetest which use parser code in hdajackretask
Comment 8 Raymond 2015-09-02 16:41:36 UTC
you can also use hda-verb when subwoofer is plugged and unplugged

hda-verb /dev/snd/hwC0D0  0x1e GET_PIN_SENSE 0
Comment 9 Raymond 2015-09-05 01:51:37 UTC
when user select 2.1 profile or other surround profile

pulseaudio change to stereo when the headphone is plugged 

but remain at stereo after headphone is unplugged
Comment 10 jason.braddock.69 2015-09-20 14:14:46 UTC
(In reply to Raymond from comment #8)
> you can also use hda-verb when subwoofer is plugged and unplugged
> 
> hda-verb /dev/snd/hwC0D0  0x1e GET_PIN_SENSE 0


WITHOUT subwoofer:
sudo ./hda-verb /dev/snd/hwC0D0  0x1e GET_PIN_SENSE 0
nid = 0x1e, verb = 0xf09, param = 0x0
value = 0x0


WITH subwoofer:
sudo ./hda-verb /dev/snd/hwC0D0  0x1e GET_PIN_SENSE 0
nid = 0x1e, verb = 0xf09, param = 0x0
value = 0x80000000
Comment 11 jason.braddock.69 2015-09-20 14:18:26 UTC
(In reply to Raymond from comment #7)
> http://git.alsa-project.org/?p=alsa-tools.git;a=tree
> 
> 
> you need hdajacksensetest which use parser code in hdajackretask

WITHOUT subwoofer:
sudo ./hdajacksensetest -a
Pin 0x11 (Not connected): present = No
Pin 0x12 (Not connected): present = No
Pin 0x13 (Not connected): present = No
Pin 0x14 (Internal Speaker, ATAPI): present = No
Pin 0x15 (Not connected): present = No
Pin 0x16 (Internal Speaker, ATAPI): present = No
Pin 0x17 (Not connected): present = No
Pin 0x18 (Pink Mic, Rear side): present = No
Pin 0x19 (Internal Mic, ATAPI): present = No
Pin 0x1a (Not connected): present = No
Pin 0x1b (Not connected): present = No
Pin 0x1d (Not connected): present = No
Pin 0x1e (Black SPDIF Out, Right side): present = No
Pin 0x21 (Green Headphone, Rear side): present = No



WITH subwoofer:
sudo ./hdajacksensetest -a
Pin 0x11 (Not connected): present = No
Pin 0x12 (Not connected): present = No
Pin 0x13 (Not connected): present = No
Pin 0x14 (Internal Speaker, ATAPI): present = No
Pin 0x15 (Not connected): present = No
Pin 0x16 (Internal Speaker, ATAPI): present = No
Pin 0x17 (Not connected): present = No
Pin 0x18 (Pink Mic, Rear side): present = No
Pin 0x19 (Internal Mic, ATAPI): present = No
Pin 0x1a (Not connected): present = No
Pin 0x1b (Not connected): present = No
Pin 0x1d (Not connected): present = No
Pin 0x1e (Black SPDIF Out, Right side): present = Yes
Pin 0x21 (Green Headphone, Rear side): present = No
Comment 12 jason.braddock.69 2015-09-25 11:40:29 UTC
(In reply to jason.braddock.69 from comment #11)
> (In reply to Raymond from comment #7)
> > http://git.alsa-project.org/?p=alsa-tools.git;a=tree
> > 
> > 
> > you need hdajacksensetest which use parser code in hdajackretask
> 
> WITHOUT subwoofer:
> sudo ./hdajacksensetest -a
> Pin 0x11 (Not connected): present = No
> Pin 0x12 (Not connected): present = No
> Pin 0x13 (Not connected): present = No
> Pin 0x14 (Internal Speaker, ATAPI): present = No
> Pin 0x15 (Not connected): present = No
> Pin 0x16 (Internal Speaker, ATAPI): present = No
> Pin 0x17 (Not connected): present = No
> Pin 0x18 (Pink Mic, Rear side): present = No
> Pin 0x19 (Internal Mic, ATAPI): present = No
> Pin 0x1a (Not connected): present = No
> Pin 0x1b (Not connected): present = No
> Pin 0x1d (Not connected): present = No
> Pin 0x1e (Black SPDIF Out, Right side): present = No
> Pin 0x21 (Green Headphone, Rear side): present = No
> 
> 
> 
> WITH subwoofer:
> sudo ./hdajacksensetest -a
> Pin 0x11 (Not connected): present = No
> Pin 0x12 (Not connected): present = No
> Pin 0x13 (Not connected): present = No
> Pin 0x14 (Internal Speaker, ATAPI): present = No
> Pin 0x15 (Not connected): present = No
> Pin 0x16 (Internal Speaker, ATAPI): present = No
> Pin 0x17 (Not connected): present = No
> Pin 0x18 (Pink Mic, Rear side): present = No
> Pin 0x19 (Internal Mic, ATAPI): present = No
> Pin 0x1a (Not connected): present = No
> Pin 0x1b (Not connected): present = No
> Pin 0x1d (Not connected): present = No
> Pin 0x1e (Black SPDIF Out, Right side): present = Yes
> Pin 0x21 (Green Headphone, Rear side): present = No

Just to give more precision (not sure if it helps):

- There is an SPDIF output on the right side of the board. It is combined with the standard analogic stereo 3.5jack (same physical port).
I have no SPDIF capable hardware to test the output.

- The subwoofer physical port is located on left side of the board and is a smaller jack (probably a 2.5 jack), with 4 connectors on it... this number is quite weird so maybe the sobwoofer does itself the mix+lowpass? I'll try to open it and see.

In the end, the pin list is messing with SPDIF output and subwoofer while those two outputs are physically distinct...
Comment 13 Lagu 2015-11-06 22:21:44 UTC
Hi ppl, well i'm here to post experiences with this, first i have an asus N46VB with the same audio system, i used this comp with ubuntu debian and now gentoo, i remember fight a lot with all this systems to this works because there are a lot of cases:

Using the Stereo profile -
Comment 14 Lagu 2015-11-06 22:34:55 UTC
some times the external subwoofer works and others not.

if i use a 2.1 profile like in the ubuntu guides some times works, others basically i don't get any sound like this case, or i can't select the profile, bacause don't is available.

well there is the fight to this works, acutally works on gentoo but with some version changes stop working... anyway is a mess with this xD

i realize the tests posted here and i get the same results, including the same pin...

i know in ubuntu you can use the subwoofer but you need start testing profiles and a trick is change the asus-mode in the modules's options, but it don't remove this bug bacause the problem exist anyway, i can confirm this type of issues in my system.

Distr: Gentoo 64
PulseAudio: 7.1
Kernel: 4.1.7 (hardened)
Desktop: Gnome 3.16

respect the patch in the attachments i can't test it here is the log of the patch:

Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c
|index b077bb6..af206a2 100644
|--- a/sound/pci/hda/hda_generic.c
|+++ b/sound/pci/hda/hda_generic.c
--------------------------
File sound/pci/hda/hda_generic.c is read-only; trying to patch anyway
checking file sound/pci/hda/hda_generic.c
Using Plan A...
Hunk #1 succeeded at 1163 (offset -3 lines).
Hunk #2 succeeded at 2100 (offset -3 lines).
Hunk #3 succeeded at 4444 (offset -3 lines).
Hunk #4 succeeded at 4726 (offset -3 lines).
Hmm...  The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/sound/pci/hda/hda_generic.h b/sound/pci/hda/hda_generic.h
|index 56e4139..0803afa 100644
|--- a/sound/pci/hda/hda_generic.h
|+++ b/sound/pci/hda/hda_generic.h
--------------------------
File sound/pci/hda/hda_generic.h is read-only; trying to patch anyway
checking file sound/pci/hda/hda_generic.h
Using Plan A...
Hunk #1 succeeded at 160.
Hunk #2 succeeded at 238.
Hmm...  The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/sound/pci/hda/hda_jack.c b/sound/pci/hda/hda_jack.c
|index 366efbf..f9b61b6 100644
|--- a/sound/pci/hda/hda_jack.c
|+++ b/sound/pci/hda/hda_jack.c
--------------------------
File sound/pci/hda/hda_jack.c is read-only; trying to patch anyway
checking file sound/pci/hda/hda_jack.c
Using Plan A...
Hunk #1 succeeded at 19.
Hunk #2 succeeded at 158.
Hunk #3 succeeded at 218.
Hunk #4 FAILED at 395.
Hunk #5 FAILED at 416.
Hunk #6 FAILED at 433.
Hunk #7 FAILED at 462.
Hunk #8 succeeded at 511 (offset 40 lines).
Hunk #9 succeeded at 528 (offset 40 lines).
Hunk #10 succeeded at 544 (offset 40 lines).
Hunk #11 succeeded at 559 (offset 40 lines).
Hunk #12 succeeded at 580 (offset 40 lines).
4 out of 12 hunks FAILED
Hmm...  The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/sound/pci/hda/hda_jack.h b/sound/pci/hda/hda_jack.h
|index 387d309..ef3d162 100644
|--- a/sound/pci/hda/hda_jack.h
|+++ b/sound/pci/hda/hda_jack.h
--------------------------
File sound/pci/hda/hda_jack.h is read-only; trying to patch anyway
checking file sound/pci/hda/hda_jack.h
Using Plan A...
Hunk #1 FAILED at 41.
1 out of 1 hunk FAILED
Hmm...  The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
|index c456c04..3df56c8 100644
|--- a/sound/pci/hda/patch_realtek.c
|+++ b/sound/pci/hda/patch_realtek.c
--------------------------
File sound/pci/hda/patch_realtek.c is read-only; trying to patch anyway
checking file sound/pci/hda/patch_realtek.c
Using Plan A...
Hunk #1 succeeded at 3598 (offset 5 lines).
Hunk #2 succeeded at 3687 (offset 4 lines).
Hunk #3 succeeded at 3755 (offset 3 lines).
Hunk #4 succeeded at 3823.
Hunk #5 succeeded at 3891 (offset -3 lines).
Hunk #6 succeeded at 3964 (offset -6 lines).
Hunk #7 succeeded at 3980 (offset -6 lines).
Hunk #8 succeeded at 4027 (offset -6 lines).
Hunk #9 succeeded at 6118 (offset -122 lines).
Hunk #10 succeeded at 6289 (offset -122 lines).
Hunk #11 succeeded at 6509 (offset -122 lines).
Hunk #12 succeeded at 6549 (offset -122 lines).
Hunk #13 succeeded at 6574 (offset -122 lines).
Hunk #14 succeeded at 6658 (offset -122 lines).
done

well that is, anything ask.
Thy all
Comment 15 Lagu 2015-11-06 22:46:17 UTC
note, jason.braddock in pulseaudio 7.1 the 2.1 profile exist be default, so you don't need create it anymore, try upgrade to aproaching to that version and may can works the subwoofer, i suppose in my system the issue will be detect the subwoofer when is connected.
Comment 16 Raymond 2015-11-07 09:17:08 UTC
the patch is only useful when pulseaudio can switch automatically from stereo to 2.1 when exterenal subwoofer is plugged.

you can still test pulseaudio 7.1 by maunally change the profile without the above patch
Comment 17 Lagu 2015-11-09 12:28:15 UTC
Note: searching in the web i found a little thing, the alc663 driver is a 5.1 not 2.1, this probably can be extended to the profiles of pulseaudio.

Source:

http://www.realtek.com/products/productsView.aspx?Langid=1&PFid=37&Level=5&Conn=4&ProdID=165

In the kernel bugzilla:

https://bugzilla.kernel.org/show_bug.cgi?id=70821
Comment 18 Lagu 2015-11-09 12:34:30 UTC
Thx for the note raymond.

As you can see in the las message, i check the profiles available in the default.conf and exist a 5.1 profile, ¿why i can't select it?
Comment 19 Raymond 2015-11-10 08:35:14 UTC
https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pci/hda?id=8e38395360844806041ea69ab9690f5f174bc40c


static const struct snd_pcm_chmap_elem asus_pcm_2_1_chmaps[] = {
+	{ .channels = 2,
+	  .map = { SNDRV_CHMAP_FL, SNDRV_CHMAP_FR } },
+	{ .channels = 4,
+	  .map = { SNDRV_CHMAP_FL, SNDRV_CHMAP_FR,
+		   SNDRV_CHMAP_NA, SNDRV_CHMAP_LFE } }, /* LFE only on right */
+	{ }

since the subwoofer node 0x16  does not provide jack detect signal, the driver just create surround speaker phantom jack

for those asus n751jm with alc668 , the subwoofer node 0x1a support jack detect, so  it is possible to create "external subwoofer" jack for the detection of sonic master subwoofer

on alc663 node 0x1e seem can report the status of the subwoofer but pincap does not expose this capability and lack of unsolicited event
Comment 20 Raymond 2015-11-10 10:42:50 UTC
only 4 channels is supported since one DAC is used by the headphone, you need to use 2.1 profile

post the pulseaudio verbose log if it still not working
Comment 21 GitLab Migration User 2018-07-30 10:15:16 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/299.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.