Headphone jack not recognized?

I'm using a ThinkPad Yoga 370 on FreeBSD 15.1-RELEASE-p6. snd_driver is loaded on boot and the internal speakers work fine. Device hints are set up with their "default" values and also function properly. However, plugging in headphones produces only about half-a-second of sound before cutting out. dmesg | grep pcm currently prints:
Code:
pcm0: <Conexant (0x2008) (Analog 2.0+HP/2.0)> at nid 23,22 and 25 on hdaa0
pcm1: <Intel Kaby Lake (HDMI/DP 8ch)> at nid 3 on hdaa1
In earlier sessions, it printed the headphone jack as pcm1 and the HDMI port as pcm2, and it did produce consistent sound to the headphones. I'm not sure what I could've done to have the ThinkPad suddenly stop recognizing them. Any help would be much appreciated.
 
snd_driver is loaded on boot
Don't. It's a stub "driver" that simply loads all available sound card drivers, useful for figuring out which driver you actually need. It's not intended to be loaded permanently.

The snd_hda(4) driver is baked in the GENERIC kernel, don't need to load it at all. This driver is very, very universal and the actual (hardware) implementation is left up to the OEM. That means you sometimes have to fiddle with the pin assignments to make it work for your specific system. Read its man page.
 
Don't. It's a stub "driver" that simply loads all available sound card drivers, useful for figuring out which driver you actually need. It's not intended to be loaded permanently.

The snd_hda(4) driver is baked in the GENERIC kernel, don't need to load it at all. This driver is very, very universal and the actual (hardware) implementation is left up to the OEM. That means you sometimes have to fiddle with the pin assignments to make it work for your specific system. Read its man page.
That's what I meant. kldload (what i used to check) groups together "currently loaded" and "in the kernel". I'm not loading either snd_hda or snd_driver through /boot/loader.conf. Apologies for the confusion.

Please show us those device hints (assuming /boot/device.hints).

Also:
cat /dev/sndstat
sysctl dev.hdac.0.pindump=1 (look at dmesg(8) for output.)
/boot/device.hints:
Code:
hint.hdac.0.cad0.nid22.config="as=1 seq=15 device=headphones"
hint.hdac.0.cad0.nid26.config="as=2 seq=0 device=speakers"

cat /dev/sndstat:
Code:
Installed devices:
pcm0: <Conexant (0x2008) (Analog 2.0+HP/2.0)> (play/rec) default
pcm1: <Intel Kaby Lake (HDMI/DP 8ch)> (play)
No devices installed from userspace.

dmesg:
Code:
hdacc0: <Conexant (0x2008) HDA CODEC> at cad 0 on hdac0
hdaa0: <Conexant (0x2008) Audio Function Group> at nid 1 on hdacc0
pcm0: <Conexant (0x2008) (Analog 2.0+HP/2.0)> at nid 23,22 and 25 on hdaa0
hdacc1: <Intel Kaby Lake HDA CODEC> at cad 2 on hdac0
hdaa1: <Intel Kaby Lake Audio Function Group> at nid 1 on hdacc1
pcm1: <Intel Kaby Lake (HDMI/DP 8ch)> at nid 3 on hdaa1
 
The problem may lie in your motherboard using two different pcm for audio output. I had a similar issue I haven't solved yet (haven't tried too hard) where my speakers are on pcm0 and headphones are on pcm1. In my case, getting them to switch when I plug in the headphones doesn't work but, as I said, I haven't tried much to solve it.
 
Okay, just hopped into a CachyOS live USB (the OS I was using on my ThinkPad before FreeBSD) and it has the same issue. The jack itself must be busted. Admittedly, I nearly exclusively used Bluetooth audio before, but the process of setting that up on FreeBSD seemed a bit more involved, which is why I wanted to go for wired instead. I guess I'll have to look into getting a replacement part and/or figuring out my way around hccontrol. Thanks for the help regardless.
 
Back
Top