[FreeBSD 14 RELEASE] No audio with Tiger Lake-LP Smart Sound Technology Audio Controller

Hello everyone,
In an attempt to force myself to learn some freeBSD, i've decided to give it a shot on my laptop, I'm not a newbie to unix-like systems as i've been working as a linux system administrator for more then 2 decades now, but i've never really used freeBSD in depth except from some very basic maintenance of running services like webservers or DBMSs.

The installation on the laptop (an HP Envy X360) went very smooth, the WiFi module was recognized and usable out of the box during the installation, and getting a good desktop experience with the intel integrated graphic was really just a coule of pkg install commands away.

Now I'm facing an issue I cant seem to resolve myself nor searchin through the doc or this forum.

I have, as the subject suggests, a Tiger Lake integrated audio device, which i cant get any audio off from.

pciconf states the following:

hdac0@pci0:0:31:3: class=0x040100 rev=0x20 hdr=0x00 vendor=0x8086 device=0xa0c8 subvendor=0x103c subdevice=0x8825
vendor = 'Intel Corporation'
device = 'Tiger Lake-LP Smart Sound Technology Audio Controller'
class = multimedia
subclass = audio

and the /dev/sndstat says:
$ cat /dev/sndstat
Installed devices:
pcm0: <Realtek ALC245 (Left Analog)> (play/rec) default
pcm1: <Realtek ALC245 (Internal Analog Speaker)> (play)
pcm2: <Intel Tiger Lake (HDMI/DP 8ch)> (play)
No devices installed from userspace.

I think (?) this means the device is recognized correctly?

Unfortunately when i do some audio tests i receive the following error:
Error trying to play a test audio
the system said "No such driver"

since I'm very new to freeBSD, the only way I could think fo to test the audio is by using the integrated KDE volume controls and audio test capabilities.

Now, I don't know if this is any sort of hardware incompatibility issue, or if it's (most likely) something i might have missed in the configuration (if any has to be done)

I'm running the desktop environment as a standard user (not root) by logging in via SDDM. (maybe this is relevant for permissions and such)

Thank you very much in advance for your kind support.

EDIT: Sorry for the first fast edit, I've noticed that if i use the beep command from the terminal, the audio device actually works, but i can only hear the beep with headphones plugged in.I'm trying to experiment by modifying these values in /boot/devices.hint (according to the manual) but i'm not sure i'm doing it correctly.

hint.hdac.0.cad0.nid33.config="as=1 seq=15 device=Headphones"
hint.hdac.0.cad0.nid23.config="as=2 seq=0 device=speakers"
[/qote]
 
Hi, thank you very much for your kind reply.

As far as I can tell, the audio device is "working": as long as i use the audio jack and not the internal speakers audio works perfectly fine, I've managed to play some audio and youtube videos and it works.

The problem is with the internal speakers, which i cant understand how to configure to work properly.
 
Hi, thank you very much for your kind reply.

As far as I can tell, the audio device is "working": as long as i use the audio jack and not the internal speakers audio works perfectly fine, I've managed to play some audio and youtube videos and it works.

The problem is with the internal speakers, which i cant understand how to configure to work properly.

Well, there is a problem that modern amplifiers for speaker output need ACPI entries and some BIOSes do that incorrectly. The manufacturers then hack it up in the Windows drivers to change the ACPI tables at load time. The Linux kernel has some entries to work like that for some more prominent laptops.

You might be suffering from this problem if headphone out works but speakers do not.
 
... i'm not sure i'm doing it correctly.
Code:
hint.hdac.0.cad0.nid33.config="as=1 seq=15 device=Headphones"
hint.hdac.0.cad0.nid23.config="as=2 seq=0 device=speakers"
Just to make sure the device and nids are set correctly, please post dmesg | grep pcm and cat /dev/sndstat.
 
Just to make sure the device and nids are set correctly, please post dmesg | grep pcm and cat /dev/sndstat.

here is the output
$ sudo dmesg | grep pcm
pcm0: <Realtek ALC245 (Left Analog)> at nid 33 and 25 on hdaa0
pcm1: <Realtek ALC245 (Internal Analog Line-out)> at nid 23 on hdaa0
pcm2: <Intel Tiger Lake (HDMI/DP 8ch)> at nid 4 on hdaa1

$ sudo cat /dev/sndstat
Installed devices:
pcm0: <Realtek ALC245 (Left Analog)> (play/rec) default
pcm1: <Realtek ALC245 (Internal Analog Line-out)> (play)
pcm2: <Intel Tiger Lake (HDMI/DP 8ch)> (play)

And sysctl dev.hdac.0.pindump=1 followed by dmesg | grep hdaa might also be helpful.

$ sudo dmesg | grep hdaa
hdaa0: <Realtek ALC245 Audio Function Group> at nid 1 on hdacc0
pcm0: <Realtek ALC245 (Left Analog)> at nid 33 and 25 on hdaa0
pcm1: <Realtek ALC245 (Internal Analog Line-out)> at nid 23 on hdaa0
hdaa1: <Intel Tiger Lake Audio Function Group> at nid 1 on hdacc1
pcm2: <Intel Tiger Lake (HDMI/DP 8ch)> at nid 4 on hdaa1
hdaa0: Dumping AFG pins:
hdaa0: nid 0x as seq device conn jack loc color misc
hdaa0: 18 411111f0 15 0 Speaker None 1/8 Rear Black 1 DISA
hdaa0: Caps: IN
hdaa0: 19 40000000 0 0 Line-out None Unknown 0x00 Unknown 0 DISA
hdaa0: Caps: IN
hdaa0: 20 411111f0 15 0 Speaker None 1/8 Rear Black 1 DISA
hdaa0: Caps: OUT EAPD Sense: 0x00000000 (disconnected)
hdaa0: 23 90070120 2 0 Line-out Fixed Analog Internal Unknown 1
hdaa0: Caps: OUT HP Sense: 0x80000000 (connected)
hdaa0: 24 411111f0 15 0 Speaker None 1/8 Rear Black 1 DISA
hdaa0: Caps: IN Sense: 0x80000000 (connected)
hdaa0: 25 03a11040 4 0 Mic Jack 1/8 Left Black 0
hdaa0: Caps: IN VREF Sense: 0x00000000 (disconnected)
hdaa0: 26 411111f0 15 0 Speaker None 1/8 Rear Black 1 DISA
hdaa0: Caps: IN VREF Sense: 0x00000000 (disconnected)
hdaa0: 27 411111f0 15 0 Speaker None 1/8 Rear Black 1 DISA
hdaa0: Caps: IN OUT EAPD VREF Sense: 0x00000000 (disconnected)
hdaa0: 30 411111f0 15 0 Speaker None 1/8 Rear Black 1 DISA
hdaa0: Caps: OUT
hdaa0: 33 0321101f 1 15 Headphones Jack 1/8 Left Black 0
hdaa0: Caps: OUT HP EAPD Sense: 0x00000000 (disconnected)
hdaa0: NumGPIO=3 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=1
hdaa0: GPIO0: disabled
hdaa0: GPIO1: disabled
hdaa0: GPIO2: disabled
hdaa1: Dumping AFG pins:
hdaa1: nid 0x as seq device conn jack loc color misc
hdaa1: 4 18560010 1 0 Digital-out Jack Digital 0x18 Unknown 0
hdaa1: Caps: OUT Sense: 0x00000000 (disconnected)
hdaa1: NumGPIO=0 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=0

thanks again very much for your help
 
here is the output
Rich (BB code):
$ sudo cat /dev/sndstat
pcm0: <Realtek ALC245 (Left Analog)> (play/rec) default

$ sudo dmesg | grep pcm
 pcm0: <Realtek ALC245 (Left Analog)> at nid 33 and 25 on hdaa0

Try nid25 instead of nid23
Rich (BB code):
hint.hdac.0.cad0.nid33.config="as=1 seq=15 device=Headphones"
hint.hdac.0.cad0.nid25.config="as=2 seq=0 device=speakers"
 
Another thought, lets check the original and configured nid settings:

sysctl -a | grep -E 'nid.._original|nid.._config' | grep -E 'nid25|nid33'
 
Another thought, lets check the original and configured nid settings:

sysctl -a | grep -E 'nid.._original|nid.._config' | grep -E 'nid25|nid33'
$ sudo sysctl -a | grep -E 'nid.._original|nid.._config' | grep -E 'nid25|nid33'
dev.hdaa.0.nid33_original: 0x03211020 as=2 seq=0 device=Headphones conn=Jack ctype=1/8 loc=Left color=Black misc=0
dev.hdaa.0.nid33_config: 0x0321101f as=1 seq=15 device=Headphones conn=Jack ctype=1/8 loc=Left color=Black misc=0
dev.hdaa.0.nid25_original: 0x03a11040 as=4 seq=0 device=Mic conn=Jack ctype=1/8 loc=Left color=Black misc=0
dev.hdaa.0.nid25_config: 0x03a11040 as=4 seq=0 device=Mic conn=Jack ctype=1/8 loc=Left color=Black misc=0

 
Is there sound from speaker when pcm1 is the "default" (current default is pcm0)?
/dev/sndstat
Code:
Installed devices:
pcm0: <Realtek ALC245 (Left Analog)> (play/rec) default
pcm1: <Realtek ALC245 (Internal Analog Speaker)> (play)
pcm2: <Intel Tiger Lake (HDMI/DP 8ch)> (play)
No devices installed from userspace.
Disable (comment with #) /boot/device.hints entries for hint.hdac.0..., reboot system.

sysctl hw.snd.default_unit=1

Test: cat /COPYRIGHT > /dev/dspN.n

N, n should be 1 (/dev/dsp1.1), in case not, try others, if present.
 
im using kabylake i have looked at the source and there may be no codec support although the interface has a driver.... this is confusing may* it be *SAYING theres an alternative codec supplied to the OEM at time of manufacturing?:
 
Hello
sorry for my late reply and feedback.

I've managed to make the internal speakers to work as suggested by T-Daemon by simply supplying the command

sysctl hw.snd.default_unit=1

I think i can place it in rc.conf so that it stays as default?
 
does it show like mine does? when you fiddle with the initial outputs itll show pcm//headphones/output/monitor as different sliders in dsbmixer but in my case the softwares locked up at 0 and though it looks like its recognized wont work anyway my theory is missing code for my codec cs8xxx cirrus logic
 
Back
Top