0

I have a Dell XPS 9550 laptop with an up-to-date ArchLinux installation. I use KDE 6 as my Desktop Environment, with Pipewire.

$ uname -a
Linux red 6.9.3-arch1-1 #1 SMP PREEMPT_DYNAMIC Fri, 31 May 2024 15:14:45 +0000 x86_64 GNU/Linux
$ pactl status
No valid command specified.
[demurgos@red ~]$ pactl info
Server String: /run/user/1000/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 71
Tile Size: 65472
User Name: demurgos
Host Name: red
Server Name: PulseAudio (on PipeWire 1.0.7)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: auto_null
Default Source: auto_null.monitor
Cookie: a21c:d2b9

I encounter an issue where my builtin speakers are not detected 90% of the time. However about 10% of the time, it's properly detected on boot. I have no idea what causes this to work only occasionally.

KDE audio widget, no output device found

Pipewire only exposes a dummy device:

$ pactl list sinks
Sink #56
        State: SUSPENDED
        Name: auto_null
        Description: Dummy Output
        Driver: PipeWire
        Sample Specification: float32le 2ch 48000Hz
        Channel Map: front-left,front-right
        Owner Module: 4294967295
        Mute: no
        Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB
                balance 0.00
        Base Volume: 65536 / 100% / 0.00 dB
        Monitor Source: auto_null.monitor
        Latency: 0 usec, configured 0 usec
        Flags: DECIBEL_VOLUME LATENCY 
        Properties:
                node.name = "auto_null"
                device.description = "Dummy Output"
                audio.rate = "48000"
                audio.channels = "2"
                audio.position = "FL,FR"
                media.class = "Audio/Sink"
                factory.name = "support.null-audio-sink"
                node.virtual = "true"
                monitor.channel-volumes = "true"
                factory.id = "18"
                clock.quantum-limit = "8192"
                client.id = "54"
                node.driver = "true"
                factory.mode = "merge"
                audio.adapt.follower = ""
                library.name = "audioconvert/libspa-audioconvert"
                object.id = "55"
                object.serial = "56"
        Formats:
                pcm

However the corresponding sound card seems detected:

$ cat /proc/asound/cards
 1 [avsprobemb     ]: avs_probe_mb - avs_probe_mb
                      DellInc.-XPS159560--0YH90J
$ pactl list cards
Card #75
        Name: alsa_card.comprC1
        Driver: alsa:compressed
        Owner Module: n/a
        Properties:
                api.acp.auto-port = "false"
                api.alsa.card = "1"
                api.alsa.path = "hw:1"
                api.alsa.use-acp = "true"
                api.dbus.ReserveDevice1 = "Audio1"
                api.dbus.ReserveDevice1.Priority = "-20"
                device.api = "alsa:compressed"
                device.bus_path = "platform-avs_probe_mb"
                device.description = "Compress-Offload device (ALSA card 1)"
                device.enum.api = "udev"
                device.icon_name = "audio-card-analog"
                device.name = "alsa_card.comprC1"
                device.plugged.usec = "7147204"
                device.subsystem = "sound"
                sysfs.path = "/devices/platform/avs_probe_mb/sound/card1"
                media.class = "Audio/Device"
                factory.id = "14"
                client.id = "40"
                object.id = "49"
                object.serial = "75"
                object.path = "alsa:pcm:1"
                alsa.card = "1"
                alsa.card_name = "avs_probe_mb"
                alsa.long_card_name = "DellInc.-XPS159560--0YH90J"
                alsa.driver_name = "snd_soc_avs_probe"
                alsa.id = "avsprobemb"
                device.string = "1"
        Profiles:
                off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
                pro-audio: Pro Audio (sinks: 0, sources: 0, priority: 1, available: yes)
        Active Profile: off

Here are sound-related dmesg audio logs:

$ dmesg | grep snd
[    5.578520] snd_hda_intel 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040380
[    5.578537] snd_hda_intel 0000:00:1f.3: enabling device (0000 -> 0002)
[    5.612246] snd_hda_intel 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040380
[    5.684338] snd_soc_avs 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040380
[    5.687777] snd_hda_intel 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040380
[    5.688051] snd_soc_avs 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040380
[    6.131106] snd_hda_intel 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040380
[    6.131409] snd_soc_avs 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040380
[    6.484227] snd_hda_intel 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040380
[    6.484524] snd_soc_avs 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040380
[    6.580848] usbcore: registered new interface driver snd-usb-audio
[    6.580897] snd_hda_intel 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040380
[    6.581665] snd_soc_avs 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040380
[    7.014160] snd_hda_intel 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040380
[    7.014418] snd_soc_avs 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040380
[    7.073738] snd_soc_avs 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    7.133952] snd_soc_avs 0000:00:1f.3: cldma_irq_handler sd_status: 0x00000004
[    7.134011] snd_soc_avs 0000:00:1f.3: cldma_irq_handler sd_status: 0x00000004
[    7.155413] snd_hda_codec_realtek hdaudioB0D0: autoconfig for ALC3266: line_outs=1 (0x17/0x0/0x0/0x0/0x0) type:speaker
[    7.155420] snd_hda_codec_realtek hdaudioB0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    7.155423] snd_hda_codec_realtek hdaudioB0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[    7.155426] snd_hda_codec_realtek hdaudioB0D0:    mono: mono_out=0x0
[    7.155428] snd_hda_codec_realtek hdaudioB0D0:    inputs:
[    7.155430] snd_hda_codec_realtek hdaudioB0D0:      Headset Mic=0x18
[    7.155432] snd_hda_codec_realtek hdaudioB0D0:      Headphone Mic=0x1a
[    7.155434] snd_hda_codec_realtek hdaudioB0D0:      Internal Mic=0x12
[    7.165576] snd_hda_codec_realtek hdaudioB0D0: creating for ALC3266 Analog 0
[    7.206115] snd_soc_avs 0000:00:1f.3: Direct firmware load for intel/avs/hda-10ec0298-tplg.bin failed with error -2
[    7.206122] snd_soc_avs 0000:00:1f.3: request topology "intel/avs/hda-10ec0298-tplg.bin" failed: -2
[    7.206216] snd_soc_avs 0000:00:1f.3: Direct firmware load for intel/avs/hda-generic-tplg.bin failed with error -2
[    7.206220] snd_soc_avs 0000:00:1f.3: request topology "intel/avs/hda-generic-tplg.bin" failed: -2
[    7.206255] snd_soc_avs 0000:00:1f.3: ASoC: error at snd_soc_component_probe on hdaudioB0D0-platform: -2
[    7.214706] snd_hda_codec_hdmi hdaudioB0D2: creating for HDMI 0 0
[    7.214711] snd_hda_codec_hdmi hdaudioB0D2: skipping capture dai for HDMI 0
[    7.214712] snd_hda_codec_hdmi hdaudioB0D2: creating for HDMI 1 1
[    7.214714] snd_hda_codec_hdmi hdaudioB0D2: skipping capture dai for HDMI 1
[    7.214715] snd_hda_codec_hdmi hdaudioB0D2: creating for HDMI 2 2
[    7.214718] snd_hda_codec_hdmi hdaudioB0D2: skipping capture dai for HDMI 2
[    7.214783] snd_soc_avs 0000:00:1f.3: Direct firmware load for intel/avs/hda-8086280b-tplg.bin failed with error -2
[    7.214787] snd_soc_avs 0000:00:1f.3: request topology "intel/avs/hda-8086280b-tplg.bin" failed: -2
[    7.214847] snd_soc_avs 0000:00:1f.3: Direct firmware load for intel/avs/hda-8086-generic-tplg.bin failed with error -2
[    7.214851] snd_soc_avs 0000:00:1f.3: request topology "intel/avs/hda-8086-generic-tplg.bin" failed: -2
[    7.214876] snd_soc_avs 0000:00:1f.3: ASoC: error at snd_soc_component_probe on hdaudioB0D2-platform: -2

How can I fix this issue so my sound card is enabled reliably?

1 Answer 1

0

Based on your dmesg logs, it seems that snd_soc_avs and snd_hda_intel try to control the same devices, probably causing some form of race condition. This would explain why your speakers work occasionally.

You may try disabling the snd_soc_avs module on boot.

  1. Start by checking without persisting, by editing your Linux options on boot. When using systemd-boot, you can press e to edit the options. Add module_blacklist=snd_soc_avs to the kernel options line.

  2. To persist the change, create /etc/modprobe.d/disable_snd_soc_avs.conf with the content:

    # Prevent loading the `snd_soc_avs` module to fix speaker issue
    # due to a race with `snd_hda_intel`.
    # See <https://superuser.com/questions/1845508/dell-xps-9550-speakers-only-detected-some-of-the-time-when-booting-arch-linux>
    blacklist snd_soc_avs
    

See Arch Wiki - Kernel Module Blacklisting for details.

Inspired by this Arch forum thread.

2
  • Seems like it's working so far, but I'll wait a bit before marking it as accepted to make sure that it's not just due to luck.
    – Demurgos
    Commented Jun 11 at 9:36
  • Looks good after two weeks, marking as accepted.
    – Demurgos
    Commented yesterday

You must log in to answer this question.

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