[alsa-devel] Headphone output problems with HP ProDesk 600 G1 (Realtek ALC221)

Raymond Yau superquad.vortex2 at gmail.com
Wed Feb 19 01:52:18 CET 2014


> >>> I have a HP ProDesk 600 G1 machine which seems to have some strange
> > behavior with the front headphone jack(s) running under Fedora 20
> > (running 3.13.2 kernel):

  HP ProDesk 600 G1 SFF

Do SFF mean small form factor model ?


HD audio with Realtek ALC221 codec
DTS Studio Sound audio management technology
Microphone and headphone front ports (3.5mm)
Line-out and Line-In rear Ports (3.5mm)
Multi-streaming capable
Internal speaker (standard)

Since all-in-one-pc model is usng ALC3228

DTS Sound+™; Realtek ALC 3228 Audio – 16 & 24-bit PCM; High performance
integrated stereo speakers; Volume control and mute buttons; Stereo
headphone jack; Microphone in; Stereo line out

> >
> >>> This machine has two front jacks: a headphone jack and a
> > microphone/headphone jack. When the headphones are plugged into the
> > headphone jack, there's usually no change in the sound outputs list in
> > the Sound control panel. The audio (mostly) works if the audio output
> > device is set to Analog Output, but sometimes spuriously changes back
> > to Speakers and the headphone output stops working (I suspect maybe
> > from a spurious jack-sensing event, though I'm not certain). More
> > confusingly, a couple of times I have gotten it into the state
> > (through various fiddling with jacks and playing in the Sound control
> > panel) where plugging into this jack is detected and causes the
> > Headphone output to be selected in the control panel. I haven't been
> > able to figure out consistently what causes this to happen.
> >
> >>> If the headphone is plugged into the microphone/headphone jack, then
> > the control panel consistently switches to the Headphone output and
> > consistently switches back the way it was when it's unplugged.
> > However, there's no actual audio output coming out of that jack. (From
> > some of the HP manuals, it sounds like with the Windows driver, when
> > you plug into this jack, it's supposed to pop up a prompt asking you
> > whether you want to use it as a microphone or headphones.)
> >
> >>> The other strange thing is that intermittently, on the headphone jack
> > you'll start getting a bunch of loud static (clicking noises) and any
> > actual audio playback becomes very faint and distorted.
> >
> >>> I'm guessing perhaps something isn't being initialized/setup properly
> > in the codec, causing this kind of erratic behavior. The alsa-info
> > output is uploaded at:
> >
> >
http://www.alsa-project.org/db/?f=594e837b7af07ffbe3473cf807465bc81a587880
> >

> >
> > Node 0x14 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out
> >   Control: name="PCM Playback Switch", index=0, device=0
> >     ControlAmp: chs=3, dir=Out, idx=0, ofs=0
> >   Control: name="Line Out Jack", index=0, device=0
> >   Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> >   Amp-Out vals:  [0x00 0x00]
> >   Pincap 0x00010014: OUT EAPD Detect
> >   EAPD 0x2: EAPD
> >   Pin Default 0x01014020: [Jack] Line Out at Ext Rear
> >     Conn = 1/8, Color = Green
> >     DefAssociation = 0x2, Sequence = 0x0
> >
> > it is a driver bug which assign PCM playback Switch to Line Out Jack
> >
> > try the patch  https://bugzilla.kernel.org/attachment.cgi?id=124971
>
> With this patch, I get no audio output at all (totally silent on all
> ports). Even with playing around with alsamixer and muting/unmuting
> outputs I could not get anything coming out.
>
> The alsa-info output from the patched kernel is here:
>
> http://www.alsa-project.org/db/?f=df5874b4fdc01fd6d2c9541c9cde380fe844ac6c

autoconfig: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:line
    speaker_outs=1 (0x17/0x0/0x0/0x0/0x0)
    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
    mono: mono_out=0x0
    inputs:
      Mic=0x1a
      Line=0x1b

do you mean one of the front panel jacks support TRRS headset ?

use hda-jack-sense-test to find the nodes of front panel jacks and rear
panel jacks

> >
> > Node 0x02 [Audio Output] wcaps 0x1d: Stereo Amp-Out
> >   Control: name="Speaker Playback Volume", index=0, device=0
> >     ControlAmp: chs=3, dir=Out, idx=0, ofs=0
> >   Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=0x02, mute=0
> >   Amp-Out vals:  [0x00 0x00]

> > Node 0x03 [Audio Output] wcaps 0x1d: Stereo Amp-Out
> >   Control: name="PCM Playback Volume", index=0, device=0
> >     ControlAmp: chs=3, dir=Out, idx=0, ofs=0

if small form factor is multistreaming capable , line out and headphone
have to use different audio output 0x02 and 0x03 instead of sharing the
same audio output 0x03

http://www.intel.com/support/motherboards/desktop/sb/CS-034206.htm

you still need to modify patch_realtek.c

spec->gen.indep_hp = 1;


@@ -1493,16 +1497,26 @@ static bool indep_hp_possible(struct hda_codec
*codec)
     struct hda_gen_spec *spec = codec->spec;
     struct auto_pin_cfg *cfg = &spec->autocfg;
     struct nid_path *path;
+    hda_nid_t nid;
     int i, idx;

-    if (cfg->line_out_type == AUTO_PIN_HP_OUT)
-        idx = spec->out_paths[0];
-    else
-        idx = spec->hp_paths[0];
-    path = snd_hda_get_path_from_idx(codec, idx);
+    if (cfg->line_out_type != AUTO_PIN_LINE_OUT)
+        return false;
+
+    path = snd_hda_get_path_from_idx(codec, spec->out_paths[0]);
     if (!path)
         return false;
+    nid = path->path[0];

+    idx =  spec->hp_paths[0];
+    path = snd_hda_get_path_from_idx(codec, idx);
+    if (!path)
+        return false;
+
+    /* Headphone and Line Out must use different Audio Output */
+    if (path->path[0] == nid)
+        return false;
+
     /* assume no path conflicts unless aamix is involved */
     if (!spec->mixer_nid || !is_nid_contained(path, spec->mixer_nid))
         return true;


More information about the Alsa-devel mailing list