9

I have a Lenovo Ideapad 100S 14'' IBR-14'' Intel Celeron CPU N3060 @ 1.60GHz, 32GB SSD, 4GB RAM, with a Realtek ALC269 as the chip sound.

The machine is running FreeBSD 12.0; I have managed to setup successfully the sound on it for the internal speaker(s) and the headphone jack. However I am having problems switching automatically between them.

For switching I do run:

For activating the speaker(s) (and also do it at boot time):

sudo sysctl hw.snd.default_unit=1

For activating the headphone sound:

sudo sysctl hw.snd.default_unit=0

If I do not change the default_unit, it will default to 0, which is the headphones jack in this model.

I have heard people were successful into making an automatic transition from the internal speaker(s) to headphones when needed.

At the moment, as I said, I only have got the sound going through the Internal Speakers or headphones manually, and it is setup as such:

/boot/loader.conf

# load sound driver
snd_hda="YES"
# load mixer
mixer_enable="YES"
sound_load="YES"
# Minimize the number of interrupts from the sound card 
hint.pcm.0.buffersize=65536 
hint.pcm.1.buffersize=65536 
hw.snd.feeder_buffersize=65536 
hw.snd.latency=7 

/etc/sysctl.conf

# Without this sound does not even work, both in speakers or headphones
dev.hdac.0.polling=1
# Sound for speakers when booting
hw.snd.default_unit=1

I also have tried to use to setup the switching for the headphones:

Adding to /boot/loader.conf:

# Out : speaker + headphones 
hint.hdac.0.cad0.nid25.config="as=1 seq=15" 

Adding to /boot/devices.hints:

hint.hdaa.0.nid20.config="as=1 seq=0 device=Speaker"
hint.hdaa.0.nid21.config="as=1 seq=15 device=Headphones"

and also:

hint.hdaa.1.nid20.config="as=1 seq=0"
hint.hdaa.1.nid21.config="as=1 seq=15 device=Headphones"

I also tried yet adding to /etc/sysctl.conf:

hw.snd.default_auto=1

The modifications for the switching from headphones to speakers were not successful.

I am out of ideas for now, any suggestions?

PCI info

# pciconf -l | grep hda
hdac0@pci0:0:27:0:  class=0x040300 card=0x390517aa chip=0x22848086 rev=0x35 hdr=0x00

# pciconf -lVv -a hdac0
hdac0@pci0:0:27:0:  class=0x040300 card=0x390517aa chip=0x22848086 rev=0x35 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series High Definition Audio Controller'
    class      = multimedia
    subclass   = HDA

Extra DEBUG info for the system:

$ dmesg | grep pcm
pcm0: <Realtek ALC269 (Right Analog)> at nid 21 and 24 on hdaa0
pcm1: <Realtek ALC269 (Internal Analog)> at nid 20 and 18 on hdaa0
pcm2: <Intel (0x2883) (HDMI/DP 8ch)> at nid 5 on hdaa1

$ cat /dev/sndstat
Installed devices:
pcm0: <Realtek ALC269 (Right Analog)> (play/rec)
pcm1: <Realtek ALC269 (Internal Analog)> (play/rec) default
pcm2: <Intel (0x2883) (HDMI/DP 8ch)> (play)
No devices installed from userspace.

$ dmesg | grep hdac
hdac0: <Intel (0x2284) HDA Controller> mem 0x91310000-0x91313fff at device 27.0 on pci0
hdacc0: <Realtek ALC269 HDA CODEC> at cad 0 on hdac0
hdaa0: <Realtek ALC269 Audio Function Group> at nid 1 on hdacc0
hdacc1: <Intel (0x2883) HDA CODEC> at cad 2 on hdac0
hdaa1: <Intel (0x2883) Audio Function Group> at nid 1 on hdacc1

$sysctl hw | grep snd
hw.snd.maxautovchans: 16
hw.snd.default_unit: 1
hw.snd.version: 2009061500/amd64
hw.snd.default_auto: 0
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

Relevant dmesg output booting with boot_verbose=1 in /boot/loader.conf:

hdac0: <Intel (0x2284) HDA Controller> mem 0x91310000-0x91313fff at device 27.0 on pci0
hdacc0: <Realtek ALC269 HDA CODEC> at cad 0 on hdac0
hdaa0: <Realtek ALC269 Audio Function Group> at nid 1 on hdacc0
hdaa0: hdaa_audio_as_parse: Duplicate pin 0 (21) in association 1! Disabling association.
pcm0: <Realtek ALC269 (Right Analog Mic)> at nid 24 on hdaa0
pcm1: <Realtek ALC269 (Internal Analog Mic)> at nid 18 on hdaa0
hdacc1: <Intel (0x2883) HDA CODEC> at cad 2 on hdac0
hdaa1: <Intel (0x2883) Audio Function Group> at nid 1 on hdacc1
pcm2: <Intel (0x2883) (HDMI/DP 8ch)> at nid 5 on hdaa1
can't evaluate \134_SB_.PCI0.GFX0.ISP0._DCS - AE_NOT_FOUND
FreeBSD 12.0-CURRENT #0 r315864: Thu Mar 23 18:13:29 UTC 2017
CPU: Intel(R) Celeron(R) CPU  N3060  @ 1.60GHz (1600.05-MHz K8-class CPU)
  Origin="GenuineIntel"  Id=0x406c4  Family=0x6  Model=0x4c  Stepping=4
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
hdac0: <Intel (0x2284) HDA Controller> mem 0x91310000-0x91313fff at device 27.0 on pci0
hdacc0: <Realtek ALC269 HDA CODEC> at cad 0 on hdac0
hdaa0: <Realtek ALC269 Audio Function Group> at nid 1 on hdacc0
pcm0: <Realtek ALC269 (Right Analog)> at nid 21 and 24 on hdaa0
pcm1: <Realtek ALC269 (Internal Analog)> at nid 20 and 18 on hdaa0
hdacc1: <Intel (0x2883) HDA CODEC> at cad 2 on hdac0
hdaa1: <Intel (0x2883) Audio Function Group> at nid 1 on hdacc1
pcm2: <Intel (0x2883) (HDMI/DP 8ch)> at nid 5 on hdaa1
info: [drm] Initialized drm 1.1.0 20060810
Calibrating TSC clock ... TSC clock: 1600051020 Hz
CPU: Intel(R) Celeron(R) CPU  N3060  @ 1.60GHz (1600.05-MHz K8-class CPU)
  Origin="GenuineIntel"  Id=0x406c4  Family=0x6  Model=0x4c  Stepping=4
snd_unit_init() u=0x00ff8000 [512] d=0x00007c00 [32] c=0x000003ff [1024]
feeder_register: snd_unit=-1 snd_maxautovchans=16 latency=7 feeder_rate_min=1 feeder_rate_max=2016000 feeder_rate_round=25
ahci0: <AHCI SATA controller> port 0x1060-0x107f mem 0x9131a000-0x9131a7ff at device 19.0 on pci0
ahci0: attempting to allocate 1 MSI vectors (1 supported)
msi: routing MSI IRQ 256 to local APIC 0 vector 50
ahci0: using IRQ 256 for MSI
ahci0: AHCI v1.31 with 2 6Gbps ports, Port Multiplier not supported
ahci0: Caps: 64bit NCQ AL CLO 6Gbps PMD SSC PSC 32cmd 2ports
ahci0: Caps2: DESO SADM SDS APST
ahcich0: <AHCI channel> at channel 0 on ahci0
ahcich0: Caps: DSP
ahcich1: <AHCI channel> at channel 1 on ahci0
ahcich1: Caps: DSP
hdac0: <Intel (0x2284) HDA Controller> mem 0x91310000-0x91313fff at device 27.0 on pci0
hdac0: PCI card vendor: 0x17aa, device: 0x3905
hdac0: HDA Driver Revision: 20120126_0002
hdac0: Config options: on=0x00000000 off=0x00000000
hdac0: attempting to allocate 1 MSI vectors (1 supported)
msi: routing MSI IRQ 258 to local APIC 0 vector 51
hdac0: using IRQ 258 for MSI
hdac0: Caps: OSS 4, ISS 4, BSS 0, NSDO 1, 64bit, CORB 256, RIRB 256
ioapic0: routing intpin 45 (PCI IRQ 45) to lapic 0 vector 52
ahcich0: AHCI reset...
hdacc0: <Realtek ALC269 HDA CODEC> at cad 0 on hdac0
hdaa0: <Realtek ALC269 Audio Function Group> at nid 1 on hdacc0
hdaa0: Subsystem ID: 0x17aa3802
hdaa0: NumGPIO=2 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=1
hdaa0:  GPIO0: disabled
hdaa0:  GPIO1: disabled
hdaa0: Original pins configuration:
hdaa0: nid   0x    as seq device       conn  jack    loc        color   misc
hdaa0: 18 90a60140 4  0  Mic           Fixed Digital Internal   Unknown 1
hdaa0: 20 90170120 2  0  Speaker       Fixed Analog  Internal   Unknown 1
hdaa0: 21 04211010 1  0  Headphones    Jack  1/8     Right      Black   0
hdaa0: 23 40000000 0  0  Line-out      None  Unknown 0x00       Unknown 0
hdaa0: 24 04a11030 3  0  Mic           Jack  1/8     Right      Black   0
hdaa0: 25 411111f0 15 0  Speaker       None  1/8     Rear       Black   1
hdaa0: 26 411111f0 15 0  Speaker       None  1/8     Rear       Black   1
hdaa0: 27 411111f0 15 0  Speaker       None  1/8     Rear       Black   1
hdaa0: 29 40f4a105 0  5  Other         None  RCA     0x00       Res.A   1
hdaa0: 30 411111f0 15 0  Speaker       None  1/8     Rear       Black   1
hdaa0: Patching widget caps nid=29 0x00400400 -> 0x00700400
hdaa0: Patched pins configuration:
hdaa0: nid   0x    as seq device       conn  jack    loc        color   misc
hdaa0: 18 90a60140 4  0  Mic           Fixed Digital Internal   Unknown 1
hdaa0: 20 90170120 2  0  Speaker       Fixed Analog  Internal   Unknown 1
hdaa0: 21 04211010 1  0  Headphones    Jack  1/8     Right      Black   0
hdaa0: 23 40000000 0  0  Line-out      None  Unknown 0x00       Unknown 0 DISA
hdaa0: 24 04a11030 3  0  Mic           Jack  1/8     Right      Black   0
hdaa0: 25 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa0: 26 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa0: 27 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa0: 30 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa0: 4 associations found:
hdaa0: Association 0 (1) out:
hdaa0:  Pin nid=21 seq=0
hdaa0: Association 1 (2) out:
hdaa0:  Pin nid=20 seq=0
hdaa0: Association 2 (3) in:
hdaa0:  Pin nid=24 seq=0
hdaa0: Association 3 (4) in:
hdaa0:  Pin nid=18 seq=0
hdaa0: Tracing association 0 (1)
hdaa0:  Pin 21 traced to DAC 2
hdaa0: Association 0 (1) trace succeeded
hdaa0: Tracing association 1 (2)
hdaa0:  Pin 20 traced to DAC 3
hdaa0: Association 1 (2) trace succeeded
hdaa0: Tracing association 2 (3)
hdaa0:  Pin 24 traced to ADC 8
hdaa0: Association 2 (3) trace succeeded
hdaa0: Tracing association 3 (4)
hdaa0:  Pin 18 traced to ADC 9
hdaa0: Association 3 (4) trace succeeded
hdaa0: Looking for additional DAC for association 0 (1)
hdaa0: Looking for additional DAC for association 1 (2)
hdaa0: Looking for additional ADC for association 2 (3)
hdaa0: Looking for additional ADC for association 3 (4)
hdaa0: Tracing input monitor
hdaa0:  Tracing nid 11 to out
hdaa0:  nid 11 is input monitor
hdaa0:  Tracing nid 34 to out
hdaa0:  Tracing nid 35 to out
hdaa0: Tracing other input monitors
hdaa0:  Tracing nid 18 to out
hdaa0:  Tracing nid 24 to out
hdaa0: Tracing beeper
hdaa0: Pin sense: nid=21 sense=0x80000000 (connected)
hdaa0: Pin sense: nid=24 sense=0x80000000 (connected)
hdaa0: FG config/quirks: forcestereo ivref50 ivref80 ivref100 ivref
pcm0: <Realtek ALC269 (Right Analog)> at nid 21 and 24 on hdaa0
pcm0: Playback:
pcm0:      Stream cap: 0x00000001 PCM
pcm0:         PCM cap: 0x000e0560 16 20 24 bits, 44 48 96 192 KHz
pcm0:             DAC: 2
pcm0: 
pcm0:     nid=21 [pin: Headphones (Black Jack)]
pcm0:       + <- nid=12 [audio mixer] [src: pcm, mix]
pcm0:              + <- nid=2 [audio output] [src: pcm]
pcm0:              + <- nid=11 [audio mixer] [src: mix]
pcm0: 
pcm0: Record:
pcm0:      Stream cap: 0x00000001 PCM
pcm0:         PCM cap: 0x000e0560 16 20 24 bits, 44 48 96 192 KHz
pcm0:             ADC: 8
pcm0: 
pcm0:     nid=8 [audio input]
pcm0:       + <- nid=35 [audio mixer] [src: speaker, mic, mix]
pcm0:              + <- nid=24 [pin: Mic (Black Jack)] [src: mic]
pcm0:              + <- nid=29 [beep widget] [src: speaker]
pcm0:              + <- nid=11 [audio mixer] [src: mix]
pcm0: 
pcm0: Input Mix:
pcm0: 
pcm0:     nid=11 [audio mixer]
pcm0:       + <- nid=24 [pin: Mic (Black Jack)] [src: mic]
pcm0:       + <- nid=29 [beep widget] [src: speaker]
pcm0: 
pcm0: Master Volume (OSS: vol): -65/0dB
pcm0:    +- ctl  1 (nid   2 out):    -65/0dB (88 steps)
pcm0:    +- ctl 10 (nid  12 in   0): mute
pcm0:    +- ctl 11 (nid  12 in   1): mute
pcm0:    +- ctl 18 (nid  21 in ):    mute
pcm0: 
pcm0: PCM Volume (OSS: pcm): -65/0dB
pcm0:    +- ctl  1 (nid   2 out):    -65/0dB (88 steps)
pcm0:    +- ctl 10 (nid  12 in   0): mute
pcm0: 
pcm0: Microphone Volume (OSS: mic): 0/30dB
pcm0:    +- ctl  5 (nid  11 in   0): -34/12dB (32 steps) + mute
pcm0:    +- ctl 21 (nid  24 out):    0/30dB (4 steps)
pcm0:    +- ctl 35 (nid  35 in   0): mute
pcm0: 
pcm0: Speaker/Beep Volume (OSS: speaker): -34/12dB
pcm0:    +- ctl  9 (nid  11 in   4): -34/12dB (32 steps) + mute
pcm0:    +- ctl 39 (nid  35 in   4): mute
pcm0: 
pcm0: Recording Level (OSS: rec): -17/30dB
pcm0:    +- ctl  3 (nid   8 in   0): -17/30dB (64 steps) + mute
pcm0:    +- ctl 35 (nid  35 in   0): mute
pcm0:    +- ctl 39 (nid  35 in   4): mute
pcm0:    +- ctl 40 (nid  35 in   5): mute
pcm0: 
pcm0: Input Mix Level (OSS: mix): -34/12dB
pcm0:    +- ctl  5 (nid  11 in   0): -34/12dB (32 steps) + mute
pcm0:    +- ctl  9 (nid  11 in   4): -34/12dB (32 steps) + mute
pcm0:    +- ctl 11 (nid  12 in   1): mute
pcm0:    +- ctl 40 (nid  35 in   5): mute
pcm0: 
pcm0: Input Monitoring Level (OSS: igain): 0/0dB
pcm0:    +- ctl 11 (nid  12 in   1): mute
pcm0: 
pcm0: Mixer "vol":
pcm0: Mixer "pcm":
pcm0: Mixer "speaker":
pcm0: Mixer "mic":
pcm0: Mixer "mix":
pcm0: Mixer "rec":
pcm0: Mixer "igain":
pcm0: Mixer "ogain":
pcm0: Playback channel set is: Front Left, Front Right, 
pcm0: Playback channel matrix is: 2.0 (connected)
pcm0: Automatically set rec source to: mic
pcm0: Recording channel set is: Front Left, Front Right, 
pcm0: Recording channel matrix is: 2.0 (connected)
random: harvesting attach, 8 bytes (4 bits) from pcm0
pcm1: <Realtek ALC269 (Internal Analog)> at nid 20 and 18 on hdaa0
pcm1: Playback:
pcm1:      Stream cap: 0x00000001 PCM
pcm1:         PCM cap: 0x000e0560 16 20 24 bits, 44 48 96 192 KHz
pcm1:             DAC: 3
pcm1: 
pcm1:     nid=20 [pin: Speaker (Fixed)]
pcm1:       + <- nid=13 [audio mixer] [src: pcm, mix]
pcm1:              + <- nid=3 [audio output] [src: pcm]
pcm1:              + <- nid=11 [audio mixer] [src: mix]
pcm1: 
pcm1: Record:
pcm1:      Stream cap: 0x00000001 PCM
pcm1:         PCM cap: 0x000e0560 16 20 24 bits, 44 48 96 192 KHz
pcm1:             ADC: 9
pcm1: 
pcm1:     nid=9 [audio input]
pcm1:       + <- nid=34 [audio mixer] [src: speaker, monitor]
pcm1:              + <- nid=29 [beep widget] [src: speaker]
pcm1:              + <- nid=18 [pin: Mic (Fixed)] [src: monitor]
pcm1: 
pcm1: Master Volume (OSS: vol): -65/0dB
pcm1:    +- ctl  2 (nid   3 out):    -65/0dB (88 steps)
pcm1:    +- ctl 12 (nid  13 in   0): mute
pcm1:    +- ctl 13 (nid  13 in   1): mute
pcm1:    +- ctl 17 (nid  20 in ):    mute
pcm1: 
pcm1: PCM Volume (OSS: pcm): -65/0dB
pcm1:    +- ctl  2 (nid   3 out):    -65/0dB (88 steps)
pcm1:    +- ctl 12 (nid  13 in   0): mute
pcm1: 
pcm1: Microphone2 Volume (OSS: monitor): 0/30dB
pcm1:    +- ctl 16 (nid  18 out):    0/30dB (4 steps)
pcm1:    +- ctl 34 (nid  34 in   6): mute
pcm1: 
pcm1: Speaker/Beep Volume (OSS: speaker)
pcm1:    +- ctl 32 (nid  34 in   4): mute
pcm1: 
pcm1: Recording Level (OSS: rec): -17/30dB
pcm1:    +- ctl  4 (nid   9 in   0): -17/30dB (64 steps) + mute
pcm1:    +- ctl 16 (nid  18 out):    0/30dB (4 steps)
pcm1:    +- ctl 32 (nid  34 in   4): mute
pcm1:    +- ctl 34 (nid  34 in   6): mute
pcm1: 
pcm1: Input Mix Level (OSS: mix)
pcm1:    +- ctl 13 (nid  13 in   1): mute
pcm1: 
pcm1: Input Monitoring Level (OSS: igain): 0/0dB
pcm1:    +- ctl 13 (nid  13 in   1): mute
pcm1: 
pcm1: Mixer "vol":
pcm1: Mixer "pcm":
pcm1: Mixer "rec":
pcm1: Mixer "igain":
pcm1: Mixer "ogain":
pcm1: Mixer "monitor":
pcm1: Playback channel set is: Front Left, Front Right, 
pcm1: Playback channel matrix is: 2.0 (unknown)
pcm1: Automatically set rec source to: monitor
pcm1: Recording channel set is: Front Left, Front Right, 
pcm1: Recording channel matrix is: 2.0 (unknown)
hdacc1: <Intel (0x2883) HDA CODEC> at cad 2 on hdac0
hdaa1: <Intel (0x2883) Audio Function Group> at nid 1 on hdacc1
hdaa1: Subsystem ID: 0x80860101
hdaa1: NumGPIO=0 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=0
hdaa1: Original pins configuration:
hdaa1: nid   0x    as seq device       conn  jack    loc        color   misc
hdaa1:  5 18560010 1  0  Digital-out   Jack  Digital 0x18       Unknown 0
hdaa1:  6 58560020 2  0  Digital-out   None  Digital 0x18       Unknown 0
hdaa1:  7 58560030 3  0  Digital-out   None  Digital 0x18       Unknown 0
hdaa1: Patched pins configuration:
hdaa1: nid   0x    as seq device       conn  jack    loc        color   misc
hdaa1:  5 18560010 1  0  Digital-out   Jack  Digital 0x18       Unknown 0
hdaa1:  6 58560020 2  0  Digital-out   None  Digital 0x18       Unknown 0 DISA
hdaa1:  7 58560030 3  0  Digital-out   None  Digital 0x18       Unknown 0 DISA
hdaa1: 1 associations found:
hdaa1: Association 0 (1) out:
hdaa1:  Pin nid=5 seq=0
hdaa1: Tracing association 0 (1)
hdaa1:  Pin 5 traced to DAC 2
hdaa1: Association 0 (1) trace succeeded
hdaa1: Looking for additional DAC for association 0 (1)
hdaa1: Tracing input monitor
hdaa1: Tracing other input monitors
hdaa1: Tracing beeper
hdaa1: FG config/quirks: forcestereo ivref50 ivref80 ivref100 ivref
pcm2: <Intel (0x2883) (HDMI/DP 8ch)> at nid 5 on hdaa1
pcm2: Playback:
pcm2:      Stream cap: 0x00000005 AC3 PCM
pcm2:         PCM cap: 0x001e07f0 16 20 24 32 bits, 32 44 48 88 96 176 192 KHz
pcm2:             DAC: 2
pcm2: 
pcm2:     nid=5 [pin: Digital-out (Jack)]
pcm2:       + <- nid=2 [audio output] [src: pcm]
pcm2: 
pcm2: Master Volume (OSS: vol): 0/0dB
pcm2:    +- ctl  1 (nid   5 in ):    mute
pcm2: 
pcm2: PCM Volume (OSS: pcm): 0/0dB
pcm2:    +- ctl  1 (nid   5 in ):    mute
pcm2: 
pcm2: Mixer "vol":
pcm2: Mixer "pcm":
pcm2: Soft PCM mixer ENABLED
pcm2: Playback channel matrix is: unknown, assuming 7.1 (disconnected)
hdac0: poll interval 1000 -> 500 ticks

Reference: man snd_hda FreeBSD 12.0

3 Answers 3

3

Got back to use FreeBSD in my Lenovo, now using FreeBSD 12.0. The previous answer, while not exactly 100% right, put me in the right track.

To get sound to work, out the box, and switch to headphones, when inserting them in the audiojack:

  • The directive hw.snd.default_unit has to be taken out from sysctl.conf;
  • The as/audioset per default is 2, so 2 has to be used, and not 1. Tried as=1, an definitively does not work as intended.

Based on the default sysctl visual inspection, the question/previous posts, and @Trevor's answer, the complete configuration to get a Lenovo Ideapad 100S IBR for getting sound to work, and switch to headphones automatically is:

File: /etc/sysctl.conf

# Without this sound does not even work, both in speakers or headphones
dev.hdac.0.polling=1

File: /boot/loader.conf

snd_hda_load="YES"
mixer_enable="YES"
sound_load="YES"

File: /boot/device.hints

hint.hdaa.1.nid20.config="as=2 seq=0 device=Speaker conn=Fixed ctype=Analog loc=Internal"
hint.hdaa.0.nid21.config="as=2 seq=15 device=Headphones conn=Jack"

PS. The default system configuration, just for documentation purposes is:

# sysctl -a | egrep "nid20|nid21" | grep original
dev.hdaa.0.nid21_original: 0x04211010 as=1 seq=0 device=Headphones conn=Jack ctype=1/8 loc=Right color=Black misc=0
dev.hdaa.0.nid20_original: 0x90170120 as=2 seq=0 device=Speaker conn=Fixed ctype=Analog loc=Internal color=Unknown misc=1
2
  • Don't you mean /boot/loader.conf? Also, it's /boot/device.hints.
    – Rob
    Dec 26, 2018 at 13:17
  • 1
    Note: "device.hints"
    – Rob
    Dec 26, 2018 at 14:29
1

when you type:

sudo sysctl hw.snd.default_unit=1

or

sudo sysctl hw.snd.default_unit=0

You are switching between pcm1 and pcm0

If you look at your dmesg output, under "Playback:", for both pcm0 & pcm1 you will find what looks like a hierarchy.

line 124:    pcm0:     nid=21 [pin: Headphones (Black Jack)]
             pcm0:       + <- nid=12 [audio mixer] [src: pcm, mix]
             pcm0:              + <- nid=2 [audio output] [src: pcm]
             pcm0:              + <- nid=11 [audio mixer] [src: mix]

line 200:    pcm1:     nid=20 [pin: Speaker (Fixed)]
             pcm1:       + <- nid=13 [audio mixer] [src: pcm, mix]
             pcm1:              + <- nid=3 [audio output] [src: pcm]
             pcm1:              + <- nid=11 [audio mixer] [src: mix]

*Headphones on nid=21 (maps to nid=12, nid=2, & nid=11)

*Speaker on nid=20 (maps to nid=13, nid=3, & nid=11)

For BSD to auto-switch between them, they must both be members of the same (a)udio (s)et:

"as=1" audio set equals one

"seq" sequence ordinal (0,1,2,...15)

your previous attempts at editing /boot/device.hints

[ERROR!!]  hint.hdaa.0.nid20.config="as=1 seq=0 device=Speaker"
[CORRECT]  hint.hdaa.0.nid21.config="as=1 seq=15 device=Headphones"

and also:

[CORRECT]  hint.hdaa.1.nid20.config="as=1 seq=0"
[ERROR!!]  hint.hdaa.1.nid21.config="as=1 seq=15 device=Headphones"

remember:

*the Headphones are on pcm0    (pcm0) = hint.hdaa.0
*the Speaker is on pcm1        (pcm1) = hint.hdaa.1

Solution : put them in the same (a)udio (s)et using the "as" keyword argument.

/boot/device.hints

hint.hdaa.1.nid20.config="as=1 seq=0"
hint.hdaa.0.nid21.config="as=1 seq=15 misc=0"

"misc=0" may be unnecessary. I think it's hw specific.

4
  • 3
    Hi and welcome to the site! Could you expand this a little please? What do these lines do? Should they be added to the file? Removed from it? Please add some explanation of what your answer is proposing.
    – terdon
    Nov 13, 2018 at 9:26
  • Its also worth noting the type of jack. Headphones with a microphone input (designed for a phone) may not fit a stereo input jack properly.
    – Trevor
    Nov 15, 2018 at 0:26
  • @terdon Your questions are answered in the detailed explanation of the problem itself.
    – Trevor
    Nov 15, 2018 at 18:32
  • Tried this solution and unfortunately is does not work. +1 for the explanation and possible clues nonetheless. Dec 23, 2018 at 16:52
0

Thanks. It works fine here too. The difference is my pcm address.

pcm0: <Realtek ALC1220 (Analog 2.0+HP/2.0)> at nid 20,27 and 24,26 on hdaa0
pcm1: <Realtek ALC1220 (Front Analog Mic)> at nid 25 on hdaa0

So I changed my /boot/device.hint to:

hint.hdaa.1.nid20.config="as=1 seq=0"
hint.hdaa.0.nid27.config="as=1 seq=15"

Works like a charm.

2
  • 1
    Hi, your answer would be far more useful with the brand and model of your notebook. Feb 2, 2021 at 11:41
  • Not a notebook but my desktop. And chipset of sound is in msg (Realtek...). By the way My mobo is Placa-mãe Intel LGA-1151 mATX B250G com o codec de áudio SupremeFX S1220A, Intel Gigabit LAN, DDR4 2400MHz, dual M.2, HDMI, DVI e SATA 6 Gbps Feb 4, 2021 at 12:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .