Re: Internal speakers not working on HP ProBook 455 G2

Takashi Iwai
2015-03-24T08:23:27Z

At Tue, 24 Mar 2015 17:09:00 +0900,
Michel D4nzer wrote:
>
> On 28.02.2015 16:58, Takashi Iwai wrote:
> > At Sat, 28 Feb 2015 15:03:41 +0900,
> > Michel D4nzer wrote:
> >>
> >> On 24.02.2015 18:05, Takashi Iwai wrote:
> >>> At Tue, 24 Feb 2015 17:43:10 +0900,
> >>> Michel D4nzer wrote:
> >>>> On 19.02.2015 20:38, Takashi Iwai wrote:
> >>>>> At Thu, 19 Feb 2015 15:24:15 +0900,
> >>>>> Michel D4nzer wrote:
> >>>>>>
> >>>>>> the built-in speakers of my HP ProBook 455 G2 are not working by
> >>>>>> default. I'm attaching the output of alsa-info.sh.
>
> [...]
>
> >>>> In Linux, I haven't seen any visible change when plugging in or out the
> >>>> headphones.
> >>>
> >>> You can watch the output of "alsactl monitor".
> >>
> >> When plugging in headphones:
> >>
> >> card 1, #38 (0,0,0,Mic Jack,0) VALUE
> >
> > So, your headphone is recognized wrongly as a microphone.
>
> Actually, there are two pins for the (black) headphone jack, which BTW
> has a headset icon next to it. Maybe some kind of headset quirk is
> needed, or maybe one of the jacks should be gated by the other one?

For a headset support, yes, some extra quirk would be needed.
But usually the headset pin is assigned as the headphone primarily.
If you don't get the headphone jack detect event, it means that the
headphone pin isn't properly assigned.

> > This implies that the pins aren't properly set up by BIOS. Maybe BIOS
> > update will solve this?
> >
> > If no BIOS update doesn't solve (or you don't want it),
>
> I already have the latest BIOS version.
>
>
> > you have to figure out the right pin configuration by trial and error.
> > hdajackretask and hda-analyzer would be your friend.
>
> I've been playing around with them, but I don't really know what I'm
> doing, and I haven't had much luck yet.

Basically you need to figure out which pin corresponds to the
headphone jack. You can do it even without GUI. For example, to
check whether the pin widget 0x0a:

hda-verb /dev/snd/hwC0D0 0x0a SET_PIN_SENSE 0
hda-verb /dev/snd/hwC0D0 0x0a GET_PIN_SENSE 0

The first triggers the jack detection and the second reads the detected
value. If the jack is detected on that pin, you'll see the bit 31 on.
Repeat this for all widgets until you hit.

(In the above I assume the codec chip is in the card 0, codec address
0. If it's different, use another corresponding hwdep device.)

> Something else I've noticed in the meantime: With inv_jack_detect
> enabled, I can get sound from the speakers by choosing them for output
> in the GNOME sound preferences. If I choose "Analog Output - Built-in
> Audio" there, the sound comes out of the connected headphones.

inv_jack_detect is most likely wrong for new machines. It's only for
some old machines with the wrong h/w implementation. I've never seen
this for the recent machines.

That said, the reason inv_jack_detect makes speaker working is that
the headphone jack is wrongly detected as if constantly plugged. Then
with the inverted logic, it's regarded as constantly unplugged, so the
speaker gets unmuted.

HTH,

Takashi