Intel Tiger Lake-H HD Audio Controller

I have a Lenovo Thinkpad P15 laptop, and the Cpu is i9-11950H.
I used to run Archlinux on it, but soon I was tired of it updating the software version without my attention, so I wanted to change it to Freebsd.
After repeated attempts, I successfully installed Freebsd13.1, boot on zfs with efi on the second nvme hard disk, and then installed the plasma5 desktop environment and configured the wireless network (Intel Ax210). Everything was OK, but the remaining hardware still failed to work: audio, bluetooth, and several other unimportant ones, such as SD reader, lightning, etc
The first thing to be solved is audio. I have tried various methods, but they can't work.

Code:
❯ pciconf -lvV
...
none5@pci0:0:31:3:    class=0x040100 rev=0x11 hdr=0x00 vendor=0x8086 device=0x43c8 subvendor=0x17aa subdevice=0x22d8
    vendor     = 'Intel Corporation'
    device     = 'Tiger Lake-H HD Audio Controller'
    class      = multimedia
    subclass   = audio
...

❯ dmesg | grep hda
hdac0: <NVIDIA (0x2291) HDA Controller> mem 0xae000000-0xae003fff at device 0.1 on pci1
hdacc0: <NVIDIA (0x00a0) HDA CODEC> at cad 0 on hdac0
hdaa0: <NVIDIA (0x00a0) Audio Function Group> at nid 1 on hdacc0
pcm0: <NVIDIA (0x00a0) (HDMI/DP 8ch)> at nid 4 on hdaa0
pcm1: <NVIDIA (0x00a0) (HDMI/DP 8ch)> at nid 5 on hdaa0
pcm2: <NVIDIA (0x00a0) (HDMI/DP 8ch)> at nid 6 on hdaa0
pcm3: <NVIDIA (0x00a0) (HDMI/DP 8ch)> at nid 7 on hdaa0
hdac0: <NVIDIA (0x2291) HDA Controller> mem 0xae000000-0xae003fff at device 0.1 on pci1
hdacc0: <NVIDIA (0x00a0) HDA CODEC> at cad 0 on hdac0
hdaa0: <NVIDIA (0x00a0) Audio Function Group> at nid 1 on hdacc0
pcm0: <NVIDIA (0x00a0) (HDMI/DP 8ch)> at nid 4 on hdaa0
pcm1: <NVIDIA (0x00a0) (HDMI/DP 8ch)> at nid 5 on hdaa0
pcm2: <NVIDIA (0x00a0) (HDMI/DP 8ch)> at nid 6 on hdaa0
pcm3: <NVIDIA (0x00a0) (HDMI/DP 8ch)> at nid 7 on hdaa0


❯ cat /dev/sndstat
Installed devices:
pcm0: <NVIDIA (0x00a0) (HDMI/DP 8ch)> (play) default
pcm1: <NVIDIA (0x00a0) (HDMI/DP 8ch)> (play)
pcm2: <NVIDIA (0x00a0) (HDMI/DP 8ch)> (play)
pcm3: <NVIDIA (0x00a0) (HDMI/DP 8ch)> (play)
No devices installed from userspace.

Please help
Thank you.
 
Continued
I'm pretty sure now module 'snd_hda' does not support new audio hardware, but linux seems to be able to.
Is there any way to transplant it?
 
What do you mean without your attention?

I mean you still have to install and confirm updates as we do it here with pkg.

I always use 'yay -Syu'. Every time, a lot of modules need to be updated. It is too difficult to check one by one.
I am a back-end programmer. The postgresql and node I use are always updated.
Although I know it can be configured to exclude when commit update, it is not convenient after all.
Later, I had to put postgresql into docker and node into nvm
 
I'm pretty sure now module 'snd_hda' does not support new audio hardware,
❯ pciconf -lvV
...
none5@pci0:0:31:3: class=0x040100 rev=0x11 hdr=0x00 vendor=0x8086 device=0x43c8 subvendor=0x17aa subdevice=0x22d8

The Intel Tiger Lake HDA Controller with device ID 0x43c8 is supported, at least on a i5-11500.

From a forum users dmesg:
Rich (BB code):
...
 CPU: 11th Gen Intel(R) Core(TM) i5-11500 @ 2.70GHz (2712.00-MHz K8-class CPU)
...
 hdac0: <Intel (0x43c8) HDA Controller> mem 0x6001110000-0x6001113fff,0x6001000000-0x60010fffff at device 31.3 on pci0
...
The device is recognized but there is no hint about working sound, the user was looking into graphics issues.


There is also HDA driver support for Tiger Lake in FreeBSD source present:
sys/dev/sound/pci/hda/hdac.c
Code:
...
 * Intel High Definition Audio (CODEC) driver for FreeBSD.
...
    { HDA_INTEL_TGLK,    "Intel Tiger Lake",    0, 0 },
...

sys/dev/sound/pci/hda/hdacc.c
Code:
    { HDA_CODEC_INTELTGLK, 0,    "Intel Tiger Lake" },

Not sure why the device on your system is not recognized. FreeBSD developers are rarely visiting FreeBSD forums, if you want this issue to be looked into, better open a PR (Problem Report) on https://bugs.freebsd.org.
 
The Intel Tiger Lake HDA Controller with device ID 0x43c8 is supported, at least on a i5-11500.

From a forum users dmesg:
Rich (BB code):
...
 CPU: 11th Gen Intel(R) Core(TM) i5-11500 @ 2.70GHz (2712.00-MHz K8-class CPU)
...
 hdac0: <Intel (0x43c8) HDA Controller> mem 0x6001110000-0x6001113fff,0x6001000000-0x60010fffff at device 31.3 on pci0
...
The device is recognized but there is no hint about working sound, the user was looking into graphics issues.


There is also HDA driver support for Tiger Lake in FreeBSD source present:
sys/dev/sound/pci/hda/hdac.c
Code:
...
 * Intel High Definition Audio (CODEC) driver for FreeBSD.
...
    { HDA_INTEL_TGLK,    "Intel Tiger Lake",    0, 0 },
...

sys/dev/sound/pci/hda/hdacc.c
Code:
    { HDA_CODEC_INTELTGLK, 0,    "Intel Tiger Lake" },

Not sure why the device on your system is not recognized. FreeBSD developers are rarely visiting FreeBSD forums, if you want this issue to be looked into, better open a PR (Problem Report) on https://bugs.freebsd.org.
sys/dev/sound/pci/hda/hdac.h
Code:
...
#define HDA_INTEL_KBLK        HDA_MODEL_CONSTRUCT(INTEL, 0xa171)
#define HDA_INTEL_KBLKH        HDA_MODEL_CONSTRUCT(INTEL, 0xa2f0)
#define HDA_INTEL_CFLK        HDA_MODEL_CONSTRUCT(INTEL, 0xa348)
#define HDA_INTEL_CMLKS        HDA_MODEL_CONSTRUCT(INTEL, 0xa3f0)
#define HDA_INTEL_CNLK        HDA_MODEL_CONSTRUCT(INTEL, 0x9dc8)
#define HDA_INTEL_ICLK        HDA_MODEL_CONSTRUCT(INTEL, 0x34c8)
#define HDA_INTEL_CMLKLP    HDA_MODEL_CONSTRUCT(INTEL, 0x02c8)
#define HDA_INTEL_CMLKH        HDA_MODEL_CONSTRUCT(INTEL, 0x06c8)
#define HDA_INTEL_TGLK        HDA_MODEL_CONSTRUCT(INTEL, 0xa0c8) <---
...

It may be because "tiger lake" and "tiger lake-H" have different Ids.

From the above content, TGLK is 0xa0c8 instead of 0x43c8.

Is that so? I'm not familiar with this

Thank you very much for your reply!
 
It may be because "tiger lake" and "tiger lake-H" have different Ids.

From the above content, TGLK is 0xa0c8 instead of 0x43c8.
That wouldn't explain the device ID of the HDA controller from the i5-11500. It shows 0x43c8 and not 0xa0c8.

But, just to make sure, you could try patching the hda source code, and build/install a new kernel. I would assist.

Alternatively open a PR to have a FreeBSD developer look into the issue. It might take a while to get noticed and looked into it.
 
That wouldn't explain the device ID of the HDA controller from the i5-11500. It shows 0x43c8 and not 0xa0c8.

But, just to make sure, you could try patching the hda source code, and build/install a new kernel. I would assist.

Alternatively open a PR to have a FreeBSD developer look into the issue. It might take a while to get noticed and looked into it.

Ok, let me try. Thank you very much for your help
Patch?Of course I have never done this before.
Is it modified directly in ports/src, and then make install?
Let me try first, and the results will be fed back here

Thanks again!
 
Following up on this, I just received a thinkpad x1 gen 9 and I am facing the same issue.
The sound is muffled and low on FBSD13.1-RELEASE-p6 but works on other OS' (Windows10, Kubuntu)

This is my
#cat /dev/sndstat

Code:
Installed devices:
pcm0: <Realtek (0x0287) (Analog 3.1/2.0)> (play/rec) default
pcm1: <Intel Tiger Lake (HDMI/DP 8ch)> (play)
No devices installed from userspace.

My mixer vol is at 100 and I have already loaded snd_hda

The sound card uses the ALC3306 codec

pciconf -lvV
Code:
hdac0@pci0:0:31:3:    class=0x040380 rev=0x20 hdr=0x00 vendor=0x8086 device=0xa0c8 subvendor=0x17aa subdevice=0x22d5
    vendor     = 'Intel Corporation'
    device     = 'Tiger Lake-LP Smart Sound Technology Audio Controller'
    class      = multimedia
    subclass   = HDA
 
Maybe all the new Intel HD audio devices are like this.

So, I temporarily shelved the plan to switch OS

Archlinux may still work for a while.
 
Back
Top