Re: Sound issues with Dell Latitude 7490 (kabylake)

From: Johannes Lundberg <johalun0_at_gmail.com>
Date: Tue, 2 Oct 2018 21:55:42 +0100
On Tue, Oct 2, 2018 at 9:36 PM Johannes Lundberg <johalun0_at_gmail.com> wrote:

>
>
> On Tue, Oct 2, 2018 at 9:32 PM Jakob Alvermark <jakob_at_alvermark.net>
> wrote:
>
>> On 10/2/18 9:56 PM, Johannes Lundberg wrote:
>>
>>
>>
>> On Mon, Oct 1, 2018 at 10:12 PM Jakob Alvermark <jakob_at_alvermark.net>
>> wrote:
>>
>>> On 10/1/18 10:56 PM, Johannes Lundberg wrote:
>>> > On Mon, Oct 1, 2018 at 8:37 PM Jakob Alvermark <jakob_at_alvermark.net>
>>> wrote:
>>> >
>>> >> On 10/1/18 5:57 PM, Johannes Lundberg wrote:
>>> >>> Hi
>>> >>>
>>> >>> While sound work out of the box (with headphone switching) on the 1-2
>>> >> year
>>> >>> older Latitude 7270, it does not on my new machine.
>>> >>>
>>> >>> The internal speaker works fine. If I plug in external speakers in
>>> the
>>> >>> headphone jack, sound still goes to the internal speaker while a very
>>> >> load
>>> >>> buzz comes from the external speakers.
>>> >>>
>>> >>> Do we have a solution for this?
>>> >>>
>>> >>> # cat /dev/sndstat
>>> >>> Installed devices:
>>> >>> pcm0: <Realtek ALC256 (Internal Analog)> (play/rec) default
>>> >>> pcm1: <Realtek ALC256 (Front Analog Headphones)> (play)
>>> >>> pcm2: <Intel Kabylake (HDMI/DP 8ch)> (play)
>>> >>> No devices installed from userspace.
>>> >>>
>>> >>> # sysctl hw.snd
>>> >>> hw.snd.maxautovchans: 16
>>> >>> hw.snd.default_unit: 0
>>> >>> hw.snd.version: 2009061500/amd64
>>> >>> hw.snd.default_auto: 1
>>> >>> hw.snd.verbose: 0
>>> >>> hw.snd.vpc_mixer_bypass: 1
>>> >>> hw.snd.feeder_rate_quality: 1
>>> >>> hw.snd.feeder_rate_round: 25
>>> >>> hw.snd.feeder_rate_max: 2016000
>>> >>> hw.snd.feeder_rate_min: 1
>>> >>> hw.snd.feeder_rate_polyphase_max: 183040
>>> >>> hw.snd.feeder_rate_presets: 100:8:0.85 100:36:0.92 100:164:0.97
>>> >>> hw.snd.feeder_eq_exact_rate: 0
>>> >>> hw.snd.feeder_eq_presets:
>>> >>>
>>> PEQ:16000,0.2500,62,0.2500:-9,9,1.0:44100,48000,88200,96000,176400,192000
>>> >>> hw.snd.basename_clone: 1
>>> >>> hw.snd.compat_linux_mmap: 0
>>> >>> hw.snd.syncdelay: -1
>>> >>> hw.snd.usefrags: 0
>>> >>> hw.snd.vpc_reset: 0
>>> >>> hw.snd.vpc_0db: 45
>>> >>> hw.snd.vpc_autoreset: 1
>>> >>> hw.snd.timeout: 5
>>> >>> hw.snd.latency_profile: 1
>>> >>> hw.snd.latency: 5
>>> >>> hw.snd.report_soft_matrix: 1
>>> >>> hw.snd.report_soft_formats: 1
>>> >>>
>>> >>> # sysctl dev.pcm
>>> >>> dev.pcm.2.bitperfect: 0
>>> >>> dev.pcm.2.buffersize: 65536
>>> >>> dev.pcm.2.play.vchanformat: s16le:2.0
>>> >>> dev.pcm.2.play.vchanrate: 48000
>>> >>> dev.pcm.2.play.vchanmode: passthrough
>>> >>> dev.pcm.2.play.vchans: 1
>>> >>> dev.pcm.2.play.32bit: 24
>>> >>> dev.pcm.2.%parent: hdaa1
>>> >>> dev.pcm.2.%pnpinfo:
>>> >>> dev.pcm.2.%location: nid=3
>>> >>> dev.pcm.2.%driver: pcm
>>> >>> dev.pcm.2.%desc: Intel Kabylake (HDMI/DP 8ch)
>>> >>> dev.pcm.1.bitperfect: 0
>>> >>> dev.pcm.1.buffersize: 65536
>>> >>> dev.pcm.1.play.vchanformat: s16le:2.0
>>> >>> dev.pcm.1.play.vchanrate: 48000
>>> >>> dev.pcm.1.play.vchanmode: fixed
>>> >>> dev.pcm.1.play.vchans: 1
>>> >>> dev.pcm.1.play.32bit: 24
>>> >>> dev.pcm.1.%parent: hdaa0
>>> >>> dev.pcm.1.%pnpinfo:
>>> >>> dev.pcm.1.%location: nid=33
>>> >>> dev.pcm.1.%driver: pcm
>>> >>> dev.pcm.1.%desc: Realtek ALC256 (Front Analog Headphones)
>>> >>> dev.pcm.0.bitperfect: 0
>>> >>> dev.pcm.0.buffersize: 65536
>>> >>> dev.pcm.0.rec.vchanformat: s16le:2.0
>>> >>> dev.pcm.0.rec.vchanrate: 48000
>>> >>> dev.pcm.0.rec.vchanmode: fixed
>>> >>> dev.pcm.0.rec.vchans: 1
>>> >>> dev.pcm.0.rec.autosrc: 2
>>> >>> dev.pcm.0.rec.32bit: 24
>>> >>> dev.pcm.0.play.vchanformat: s16le:2.0
>>> >>> dev.pcm.0.play.vchanrate: 48000
>>> >>> dev.pcm.0.play.vchanmode: fixed
>>> >>> dev.pcm.0.play.vchans: 2
>>> >>> dev.pcm.0.play.32bit: 24
>>> >>> dev.pcm.0.%parent: hdaa0
>>> >>> dev.pcm.0.%pnpinfo:
>>> >>> dev.pcm.0.%location: nid=20,18
>>> >>> dev.pcm.0.%driver: pcm
>>> >>> dev.pcm.0.%desc: Realtek ALC256 (Internal Analog)
>>> >>> dev.pcm.%parent:
>>> >>
>>> >> You could try
>>> >>
>>> >> sysctl dev.hdaa.0.nid33_config="as=1 seq=15 device=Headphones"
>>> >>
>>> >> sysctl dev.hdaa.0.reconfig=1
>>> >>
>>> >>
>>> >> It should result in you having only one pcm device for the two outputs
>>> >> and it should switch from
>>> >>
>>> >> internal to external when you plug in the external speakers and vice
>>> versa.
>>> >>
>>> >> To make it permanent put 'hint.hdaa.0.nid33.config="as=1 seq=15
>>> >> device=Headphones"' in your loader.conf
>>> >>
>>> >>
>>> >> The loud buzz is a bit worrying, it could be related to the problem I
>>> >> have been having, where I got strange sound
>>> >>
>>> >> when using headphones on my laptop. I have worked around it by
>>> patching
>>> >> the sound driver, I have kept my local
>>> >>
>>> >> patch for years.
>>> >>
>>> >>
>>> > With that hint it does turn off the internal speakers but I can hear
>>> > nothing in my headphones. Turning the volume to 100% I can hear the
>>> > playback in my internal speakers at very low volume (with headphones
>>> > connected).
>>> > The headphones has no buzzing sound, that is only my external speakers
>>> and
>>> > they only act like that when connect to this laptop (kind of like the
>>> buzz
>>> > noise you get when the connector touches something (ground?))...
>>>
>>>
>>> Do the headphones work with this patch?
>>>
>>> Index: sys/dev/sound/pci/hda/hdaa.c
>>> ===================================================================
>>> --- sys/dev/sound/pci/hda/hdaa.c    (revision 339076)
>>> +++ sys/dev/sound/pci/hda/hdaa.c    (working copy)
>>> _at__at_ -5034,11 +5034,13 _at__at_
>>>           pincap = w->wclass.pin.cap;
>>>
>>>           /* Disable everything. */
>>> +        /*
>>>           w->wclass.pin.ctrl &= ~(
>>>               HDA_CMD_SET_PIN_WIDGET_CTRL_HPHN_ENABLE |
>>>               HDA_CMD_SET_PIN_WIDGET_CTRL_OUT_ENABLE |
>>>               HDA_CMD_SET_PIN_WIDGET_CTRL_IN_ENABLE |
>>>               HDA_CMD_SET_PIN_WIDGET_CTRL_VREF_ENABLE_MASK);
>>> +        */
>>>
>>>           if (w->enable == 0) {
>>>               /* Pin is unused so left it disabled. */
>>>
>>>
>>>
>> YES!!!!
>>
>> With this patch and this in loader.conf
>> hint.hdaa.0.nid33.config="as=1 seq=15 device=Headphones"
>>
>> I got it switching automatically between internal and headphones and no
>> more buzzing sound in my external speakers when they are connected to the
>> headphone jack.
>>
>>
>> Ok, great! So my suspicion was right.
>>
>> I had a similar problem on my laptop, where the audio in the headphones
>> was really strange, like the ground pin was not connected somehow.
>>
>> It worked fine running Windows.
>>
>> My understanding is this:
>>
>> 1. The BIOS/firmware is supposed to set up the parameters correctly when
>> you boot the machine.
>>
>> 2. When snd_hda starts, it clears some of the settings, for reasons I
>> don't understand.
>>
>> 3. hdaa_patches.c adds some specific settings for particular hardware.
>>
>>
>> What I did was commenting out what was happening in (2) above. That's
>> what the patch does. My headphones worked!
>>
>> So, your headphone pins are correctly set up by your firmware, and
>> snd_hda destroys that.
>>
>> You could compare the output of 'sysctl dev.hdaa.0' with and without the
>> patch and see what changed, that would be interesting.
>>
>>
>> Jakob
>>
>
> Thanks, will do! Now, onto the next problem. Minecraft sound effects are
> distorted and openal cause crashes.... (openal-soft with oss backend -
> default installations)
>

Ok, that's being caused by openal 1.19.  18.2 is fine. on to bugzilla.
Received on Tue Oct 02 2018 - 18:56:21 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:18 UTC