On 10/2/18 9:56 PM, Johannes Lundberg wrote:
On Mon, Oct 1, 2018 at 10:12 PM Jakob Alvermark <ja...@alvermark.net
<mailto:ja...@alvermark.net>> wrote:
On 10/1/18 10:56 PM, Johannes Lundberg wrote:
> On Mon, Oct 1, 2018 at 8:37 PM Jakob Alvermark
<ja...@alvermark.net <mailto:ja...@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)
@@ -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
_______________________________________________
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"