No more sound on laptop after upgrade (TUXEDO InfinityBook Pro 16 - Gen7)

Hello dear NixOs community.

If I’m opening this, its because I have been trying for many hours now how to fix my sound on my work laptop. It’s a real problem for me since I need to work remotely with others. After some recent nixos-rebuild switch I realised I had no sound any more. No input or output.

I have read dozens of pages from NixOs Discourse, GitHub issues and other related topics like Sound not working, pulseaudio - Fixing No Sound (Dummy Output) Issue in Ubuntu 24.04 - Ask Ubuntu, PipeWire - NixOS Wiki, Audio system not working after an system upgrade on my thinkpad x1yoga gen5 · Issue #330685 · NixOS/nixpkgs · GitHub

The strange thing is that I do not have sound either from a USB-booted NixOs, or from my dual-booted Ubuntu.

I tried many rebuilds with for instance the boot.extraModprobeConfig ='' options snd-hda-intel dmic_detect=0 ''; trick. Nothing worked. I tried regenerating the hardware-configuration.nix with nixos-generate-config, I tried kernels 6_1, 6_11 and current kernel 6.6.51… without success.

So I guess it’s time to summon the community for any ideas. Here are some logs that you might find useful. My config can be found here: GitHub - 0nyr/nixos-config: My NixOS configuration.

Many logs:

 ❮onyr ★ nixos❯ ❮~❯❯ cat /proc/asound/cards
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0x622d188000 irq 185
 1 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0x84080000 irq 17
 ❮onyr ★ nixos❯ ❮~❯❯ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
 ❮onyr ★ nixos❯ ❮~❯❯ arecord -l
**** List of CAPTURE Hardware Devices ****
 ❮onyr ★ nixos❯ ❮~❯❯ lspci | grep -i vga
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] (rev 0c)
01:00.0 VGA compatible controller: NVIDIA Corporation GA104 [Geforce RTX 3070 Ti Laptop GPU] (rev a1)
 ❮onyr ★ nixos❯ ❮~❯❯ sudo lshw -c multimedia
[sudo] password for onyr: 
  *-multimedia              
       description: NVidia
       physical id: 0.1
       bus info: pci@0000:01:00.1
       logical name: card1
       logical name: /dev/snd/controlC1
       logical name: /dev/snd/hwC1D0
       logical name: /dev/snd/pcmC1D3p
       logical name: /dev/snd/pcmC1D7p
       logical name: /dev/snd/pcmC1D8p
       logical name: /dev/snd/pcmC1D9p
       version: a1
       width: 32 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list
       configuration: driver=snd_hda_intel latency=0
       resources: irq:17 memory:84080000-84083fff
  *-usb:2
       description: Video
       product: FHD Webcam
       vendor: SunplusIT Inc
       physical id: 6
       bus info: usb@1:6
       version: 0.10
       serial: 01.00.00
       capabilities: usb-2.01
       configuration: driver=uvcvideo maxpower=500mA speed=480Mbit/s
  *-multimedia
       description: PCH
       physical id: 1f.3
       bus info: pci@0000:00:1f.3
       logical name: card0
       logical name: /dev/snd/controlC0
       logical name: /dev/snd/hwC0D2
       logical name: /dev/snd/pcmC0D3p
       logical name: /dev/snd/pcmC0D7p
       logical name: /dev/snd/pcmC0D8p
       logical name: /dev/snd/pcmC0D9p
       version: 01
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi bus_master cap_list
       configuration: driver=snd_hda_intel latency=32
       resources: iomemory:620-61f iomemory:620-61f irq:185 memory:622d188000-622d18bfff memory:622d000000-622d0fffff
 ❮onyr ★ nixos❯ ❮~❯❯ uname -r
6.6.51
 ❮onyr ★ nixos❯ ❮~❯❯ cat /proc/cmdline
BOOT_IMAGE=(hd0,gpt1)//kernels/gsrnz8jasryy68bdbc4zkp5y4r1yp80x-linux-6.6.51-bzImage init=/nix/store/cddqa8xqh8an8pjq64p3a5wmbarpg471-nixos-system-nixos-24.11.20240916.99dc878/init loglevel=4

Maybe my laptop just has broken sound, on both speakers and output jack… It seems unlikely. How could I check that ?

Any help appreciated. Have a great day.

My first instinct here - have you tried rolling back your configuration to one that had sound working? And if so, was the sound working on it?

I just had this too, or at least similar. Updated my os, and my speakers broke. Mic and headphones still works.

Weirdly, the output is also still broken when I boot up an older config with an older kernel (6.10.3).

I tried the following kernels: 6.6.51, 6.10.10, and 6.10.3. So far no luck, even though I’m pretty sure it worked on 6.10.3 yesterday, so on my end it might actually be a hardware issue.

In the logs (journalctl -b) I get:

Sep 18 09:40:57 lggram kernel: ACPI Error: No handler for Region [XIN1] (0000000004e75a2f) [UserDefinedRegion] (20240322/evregion-126)
Sep 18 09:40:57 lggram kernel: ACPI Error: Region UserDefinedRegion (ID=143) has no handler (20240322/exfldio-261)
Sep 18 09:40:57 lggram kernel: ACPI Error: Aborting method \_SB.PC00.LPCB.LGEC.SEN1._TMP due to previous error (AE_NOT_EXIST) (20240322/psparse-529)
Sep 18 09:40:57 lggram kernel: ACPI Error: No handler for Region [XIN1] (0000000004e75a2f) [UserDefinedRegion] (20240322/evregion-126)
Sep 18 09:40:57 lggram kernel: ACPI Error: Region UserDefinedRegion (ID=143) has no handler (20240322/exfldio-261)
Sep 18 09:40:57 lggram kernel: ACPI Error: Aborting method \_SB.PC00.LPCB.LGEC.SEN2._TMP due to previous error (AE_NOT_EXIST) (20240322/psparse-529)
1 Like

Ok weirder and weird, I changed nothing (just reading online and restarted trying out different configs), and now the speakers are being detected again and working… So maybe it was a hardware thing that’ll prop up again later? I have no clue tbh. The error logs I posted above also no longer show in the latest boot.

Edit: Just remembered, I also tried running sudo rmmod int3403_thermal as suggested here Reddit - Dive into anything , but that didn’t work, at least not after a single reboot. But maybe it only took effect after a few reboots? Who knows.

Edit 2: Seems like int3403_thermal is still there:

❯ lsmod | grep int3403_thermal
int3403_thermal        16384  0
int340x_thermal_zone    16384  2 int3403_thermal,processor_thermal_device

So not sure what’s going on, nor what this means. But hopefully it can give someone some hints in the right direction?

1 Like

Unfortunatly I nix-collect-garbage -d before I had the idea to do that… pretty dumb for sure… So I updated my NixOs on my Desktop, and sound works flawlessly.

EDIT 1

I also did another experiment today. I have a microphone which also has a sound card. When plugged in my laptop, and routing the sound to it with pavucontrol, it works. I have input and output for sound…

So it seems that the issue is with the integrated soundcards in the laptop, and that maybe a key driver is missing or not working.

Here you can see the additional USB-plugged soundcard USB-Audio - Razer Seiren X:

 ❮onyr ★ nixos❯ ❮~❯❯ cat /proc/asound/cards
 0 [X              ]: USB-Audio - Razer Seiren X
                      Razer Inc Razer Seiren X at usb-0000:00:14.0-1, full speed
 1 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0x622d188000 irq 169
 2 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0x84080000 irq 17

EDIT 2

I made another attempt adding "snd_hda_intel" driver to the linux kernel. When I do that, I get no audio card detected and instead get the error in dmesg:

[    2.654760] snd_hda_intel 0000:00:1f.3: Cannot probe codecs, giving up
[    2.647210] snd_hda_intel 0000:01:00.1: Cannot probe codecs, giving up

EDIT 3

I discovered a handy tool: hw-probe: nix-shell -p hw-probe and sudo -E hw-probe -all -upload. It gives the following output showing all hardware and drivers I have so far: HW probe of TUXEDO InfinityBook Pro Gen... #a3f44fecb0

This is likely [24.05] zfs.latestCompatibleLinuxPackages selects linux-libre; unable to load proprietary firmware · Issue #341867 · NixOS/nixpkgs · GitHub

Thanks for the reply. After thorough read, I’m not really sure about that. I do not have ZFS (but ext4), and I’m not sure to know how to detect a problem of loading proprietary firmwares… Maybe you are right, in which case as you mention, your fix will end up in unstable soon. Thanks anyways :slight_smile:

I will continue to investigate the problem and let you know if I even find a fix.

1 Like

If you’ve never used ZFS and didn’t set a libre kernel yourself, this is not your issue.

1 Like

Actually I just talked today with a friend on another distro and he also had the exact same problem at the exact same time. We are now convinced that the problem is with the recent kernel update and that it is not NixOs fault. It’s related to intel CPUs on laptop and interaction between kernel and firmware.

How could I discuss that with someone knowledgeable with linux kernel update ?

1 Like

The only people really knowledgable here are those on the kernel development mailing lists but I don’t know which one you’d contact with your hardware.

The kernel people will likely ask you to bisect, so you should first figure out which kernel update caused this.

Apparently the bug has already been identified by the kernel team and a fix is already on its way.

https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.10.11

commit 87d3436e4c27286bba6e39637b47725e0343af93
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Mon Sep 9 18:47:46 2024 +0200

    soundwire: stream: Revert "soundwire: stream: fix programming slave ports for non-continous port maps"
    
    commit 233a95fd574fde1c375c486540a90304a2d2d49f upstream.
    
    This reverts commit ab8d66d132bc8f1992d3eb6cab8d32dda6733c84 because it
    breaks codecs using non-continuous masks in source and sink ports.  The
    commit missed the point that port numbers are not used as indices for
    iterating over prop.sink_ports or prop.source_ports.
    
    Soundwire core and existing codecs expect that the array passed as
    prop.sink_ports and prop.source_ports is continuous.  The port mask still
    might be non-continuous, but that's unrelated.
    
    Reported-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Closes: https://lore.kernel.org/all/b6c75eee-761d-44c8-8413-2a5b34ee2f98@linux.intel.com/
    Fixes: ab8d66d132bc ("soundwire: stream: fix programming slave ports for non-continous port maps")
    Acked-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Tested-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Link: https://lore.kernel.org/r/20240909164746.136629-1-krzysztof.kozlowski@linaro.org
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Harry ten Berge
spockfish
7h

6.10.11 has been released and contains the fix!

The Fedora packaging team is already working on it. As soon as it can be tested (I expect within a few hours) I’ll do a quick check.

How can I load kernel 6.10.11 on NixOs ? I know I can use boot.kernelPackages = pkgs.linuxKernel.packages.linux_6_10 to have 6.10 but how to specify I precisely want the 6.10.11 version ?

1 Like

You need to either wait for it to be updated in upstream Nixpkgs, override its source to be 6.10.11 or have the patch applied.

linux_6_10 was already updated to 6.10.11 though, so all you need to do is wait for that change to propagate to your channel: Kernel updates for 2024-09-18 by K900 · Pull Request #342859 · NixOS/nixpkgs · GitHub.

1 Like

Well…

 ❮onyr ★ nixos❯ ❮~❯❯ uname -r
6.10.11
 ❮onyr ★ nixos❯ ❮~❯❯ cat /proc/asound/cards
--- no soundcards ---

Still no sound with this update…

You may try to lock the kernel to 6.6.52, it works for me after I downgrade the kernel from 6.10.x in my XPS 9710.

1 Like

So far I still have a buggy system with no sound. I also remarked that now, the system suspend is broken an does weird stuff like explained here so it’s definitly a firmware problem.

[root@nixos:/home/onyr]# journalctl -b -p err
oct. 02 10:36:51 nixos kernel: snd_hda_intel 0000:01:00.1: Cannot probe codecs, giving up
oct. 02 10:36:51 nixos kernel: snd_hda_intel 0000:00:1f.3: Cannot probe codecs, giving up
oct. 02 10:36:51 nixos kernel: proc_thermal_pci 0000:00:04.0: error: proc_thermal_add, will continue
oct. 02 10:36:52 nixos kernel: iwlwifi 0000:00:14.3: WRT: Invalid buffer destination
oct. 02 10:36:52 nixos kernel: iwlwifi 0000:00:14.3: WRT: Invalid buffer destination
oct. 02 10:36:53 nixos kernel: iwlwifi 0000:00:14.3: WRT: Invalid buffer destination
oct. 02 10:36:53 nixos bluetoothd[1088]: Failed to set mode: Failed (0x03)
oct. 02 10:39:31 nixos gdm-password][2197]: gkr-pam: unable to locate daemon control file
oct. 02 10:39:31 nixos gdm[1274]: Gdm: on_display_added: assertion 'GDM_IS_REMOTE_DISPLAY (display)' failed
oct. 02 10:39:32 nixos bluetoothd[1088]: Failed to set mode: Failed (0x03)
oct. 02 10:39:42 nixos gdm[1274]: Gdm: on_display_removed: assertion 'GDM_IS_REMOTE_DISPLAY (display)' failed

It really remind me of what @TheOddler explained, and this reddit post. But I get:

[root@nixos:/home/onyr]# rmmod int3403_thermal
rmmod: ERROR: Module int3403_thermal is not currently loaded

I’m still figuring out how to fix that. It’s really annoying. I’m pretty sure it’s a problem specific with my processor: 12th Gen Intel(R) Core(TM) i7-12700H

So… I have an embarassing confidence to make.

A friend and I spend our evening and found a way to fix the problem… using Debian Testing.

I have a dual boot Nixos / Ubuntu. And the sound problem was on both OS. So we decided to wipe the Ubuntu and install Debian Testing. Doing this restablished the sound on Debian.

I remarked that now, doing a lsmod now displays more output, and especially related to driver snd_hda*:

 ❮onyr ★ nixos❯ ❮~❯❯ lsmod | grep snd
snd_seq_dummy          12288  0
snd_hrtimer            12288  1
snd_seq               110592  7 snd_seq_dummy
snd_seq_device         16384  1 snd_seq
snd_sof_pci_intel_tgl    12288  0
snd_sof_intel_hda_common   245760  1 snd_sof_pci_intel_tgl
snd_soc_hdac_hda       28672  1 snd_sof_intel_hda_common
soundwire_intel        81920  1 snd_sof_intel_hda_common
snd_sof_intel_hda_mlink    36864  2 soundwire_intel,snd_sof_intel_hda_common
snd_sof_intel_hda      20480  1 snd_sof_intel_hda_common
snd_sof_pci            24576  2 snd_sof_intel_hda_common,snd_sof_pci_intel_tgl
snd_sof_xtensa_dsp     16384  1 snd_sof_intel_hda_common
snd_hda_codec_realtek   200704  1
snd_sof               425984  3 snd_sof_pci,snd_sof_intel_hda_common,snd_sof_intel_hda
snd_hda_codec_generic   110592  1 snd_hda_codec_realtek
snd_sof_utils          16384  1 snd_sof
snd_hda_ext_core       36864  4 snd_sof_intel_hda_common,snd_soc_hdac_hda,snd_sof_intel_hda_mlink,snd_sof_intel_hda
snd_soc_acpi_intel_match    94208  2 snd_sof_intel_hda_common,snd_sof_pci_intel_tgl
snd_soc_acpi           16384  2 snd_soc_acpi_intel_match,snd_sof_intel_hda_common
snd_soc_core          450560  4 soundwire_intel,snd_sof,snd_sof_intel_hda_common,snd_soc_hdac_hda
snd_hda_codec_hdmi     98304  2
snd_compress           28672  1 snd_soc_core
ac97_bus               12288  1 snd_soc_core
snd_pcm_dmaengine      16384  1 snd_soc_core
snd_hda_intel          65536  2
snd_intel_dspcfg       36864  3 snd_hda_intel,snd_sof,snd_sof_intel_hda_common
snd_intel_sdw_acpi     16384  2 snd_sof_intel_hda_common,snd_intel_dspcfg
snd_hda_codec         217088  6 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek,snd_soc_hdac_hda,snd_sof_intel_hda
snd_hda_core          139264  9 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_hda_codec_realtek,snd_sof_intel_hda_common,snd_soc_hdac_hda,snd_sof_intel_hda
snd_hwdep              20480  1 snd_hda_codec
snd_pcm               184320  11 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,soundwire_intel,snd_sof,snd_sof_intel_hda_common,snd_compress,snd_soc_core,snd_sof_utils,snd_hda_core,snd_pcm_dmaengine
ledtrig_audio          12288  2 snd_hda_codec_generic,asus_wmi
snd_timer              49152  3 snd_seq,snd_hrtimer,snd_pcm
snd                   151552  19 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_sof,snd_timer,snd_compress,snd_soc_core,snd_pcm
soundcore              16384  1 snd
led_class              20480  6 snd_hda_codec_generic,videodev,input_leds,iwlmvm,asus_wmi,nouveau

Rebooting on NixOs, the problem was gone. So it must be a black-magic microcode / firmware / kernel module hell.

Well, another magic…

This afternoon I had sound… and now I don’t have any more. This happened right after my laptop got out of battery and shut down. Multiple reboots and reboots to Debian doesn’t change anything. I’m starting to get tired of this.

Any idea of what could be the cause ? And how to find a decent fix for that ? Because reinstalling Debian every time I have the issue seems overkill.