From owner-freebsd-current@freebsd.org Tue Oct 2 20:32:34 2018 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6108410AB97D for ; Tue, 2 Oct 2018 20:32:34 +0000 (UTC) (envelope-from jakob@alvermark.net) Received: from out.alvermark.net (out.alvermark.net [185.34.136.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id EFEEC7B479 for ; Tue, 2 Oct 2018 20:32:33 +0000 (UTC) (envelope-from jakob@alvermark.net) Received: from c-42bc70d5.06-431-73746f70.bbcust.telenor.se ([213.112.188.66] helo=mail.alvermark.net) by out.alvermark.net with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.91 (FreeBSD)) (envelope-from ) id 1g7RLM-0000Fa-DF; Tue, 02 Oct 2018 22:32:32 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=alvermark.net; s=x; h=Content-Type:In-Reply-To:MIME-Version:Date:Message-ID :From:References:Cc:To:Subject:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=rQTZB5rsu3YTxrzODwmI2tSsGfKxkSNmgxKk4+eH5Kc=; b=H2aviI1ijBsq2r9t0jvYstoNDE xsIse1lbO9jIUpUUDGovr88oRoQbUj7q4b5UxljrklAIlIoEfB2kRtTqKujHeni2wCZ38Tu1bVxFS Ct7LhUYJK3SjJf40bIhty6Wdu3NWbez47ciVGHU5j/L6vels4pvliy/Ip1rcdCm9lY20JdAajU0Qo 6YHa+ZKs1eG2lTtxMZ38r+UlSwTHc9Sk7tn9yL76ez18gKndQjOEbjRpArefxKlnetfaE7EAnsI+i 5DofK4iH7eyaV1ClwA2i5gCYcn/Wy5dwmrUr4lR1Iyb1PMAmsARs21bWYRKlvBLtc2YYAhz9VUauR IeYNCzkg==; Received: from [192.168.67.33] by mail.alvermark.net with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.91 (FreeBSD)) (envelope-from ) id 1g7RLL-0000JB-Qb; Tue, 02 Oct 2018 22:32:31 +0200 Subject: Re: Sound issues with Dell Latitude 7490 (kabylake) To: Johannes Lundberg Cc: freebsd-current References: <85518f55-20a8-f534-7266-a9e847912afc@alvermark.net> <596a89fa-d7a3-1d39-d296-e07359cb487f@alvermark.net> From: Jakob Alvermark Message-ID: <3a68412a-493c-a242-58db-419702687b13@alvermark.net> Date: Tue, 2 Oct 2018 22:32:31 +0200 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:60.0) Gecko/20100101 Thunderbird/60.0.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Content-Filtered-By: Mailman/MimeDel 2.1.27 X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Oct 2018 20:32:34 -0000 On 10/2/18 9:56 PM, Johannes Lundberg wrote: > > > On Mon, Oct 1, 2018 at 10:12 PM Jakob Alvermark > wrote: > > On 10/1/18 10:56 PM, Johannes Lundberg wrote: > > On Mon, Oct 1, 2018 at 8:37 PM Jakob Alvermark > > 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: (play/rec) default > >>> pcm1: (play) > >>> pcm2: (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) > @@ -5034,11 +5034,13 @@ >           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