20.04 - No Speaker Audio on HP Spectre x360 2020 15t eb000

Recently bought a 2020 HP Spectre X360 15t eb000. It has both Intel sound and a 1650ti Nvidia GPU.

The speakers don't work in Linux at all. Headphones work fine in Linux, and all sound works fine in Windows. I installed all updates in both Windows and Linux for firmware and BIOS updates, and have tried the following:

  • Made sure everything is unmuted and with volume in alsamixer.
  • Added options snd-hda-intel dmic_detect=0 to the end of /etc/modprobe.d/alsa-base.conf
  • Used hdajackretask to try and make retask unconnected pins. There seem to be 3 Speaker choices here, "Speaker", "Speaker Left" and "Speaker Back". Only "speaker" is connected. I tried retasking the 2 unconnected ones to unused pins but it didn't work. Its also weird that when I came back after reboot, it showed the same pins as unused again. I reversed this after it didn't work.
  • Made sure sound was at full volume and unmuted in Windows.

UPDATE for 08/03/2020

I updated to kernel 5.7, didn't work. Reversed the change in /etc/modprobe.d/alsa-base.conf, did not work. I kept it reversed.

Tried the fix in https://blog.kafaiworks.com/posts/arch-linux-audio-setup-on-msi-gp63/. Didn't work and actually made the sound through headphones kind of grainy, so I reversed it as well.

Headphones still work fine. alsamixer now shows Nvidia sound as default for some reason. It lets me change to the Intel sound.

UPDATE for 08/31/2020

Updated kernel to 5.8.5, BIOS to F.07, still no luck. I also added options snd-hda-intel index=1,0 to alsa config according to this thread on the Arch forums, which now makes the Intel card the default in alsamixer.

I also tested sound through HDMI, which works fine.

INFORMATION AS OF 08/31/2020

My current output for pacmd list-cards is the following. Note how Speaker availability is 'unknown':

pacmd list-cards
2 card(s) available.
    index: 0
    name: <alsa_card.pci-0000_01_00.1>
    driver: <module-alsa-card.c>
    owner module: 23
    properties:
        alsa.card = "1"
        alsa.card_name = "HDA NVidia"
        alsa.long_card_name = "HDA NVidia at 0x90080000 irq 17"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:01:00.1"
        sysfs.path = "/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1"
        device.bus = "pci"
        device.vendor.id = "10de"
        device.vendor.name = "NVIDIA Corporation"
        device.product.id = "10fa"
        device.string = "1"
        device.description = "HDA NVidia"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    profiles:
        output:hdmi-stereo: Digital Stereo (HDMI) Output (priority 5900, available: no)
        output:hdmi-surround: Digital Surround 5.1 (HDMI) Output (priority 800, available: no)
        output:hdmi-surround71: Digital Surround 7.1 (HDMI) Output (priority 800, available: no)
        output:hdmi-stereo-extra1: Digital Stereo (HDMI 2) Output (priority 5700, available: no)
        output:hdmi-surround-extra1: Digital Surround 5.1 (HDMI 2) Output (priority 600, available: no)
        output:hdmi-surround71-extra1: Digital Surround 7.1 (HDMI 2) Output (priority 600, available: no)
        output:hdmi-stereo-extra2: Digital Stereo (HDMI 3) Output (priority 5700, available: no)
        output:hdmi-surround-extra2: Digital Surround 5.1 (HDMI 3) Output (priority 600, available: no)
        output:hdmi-surround71-extra2: Digital Surround 7.1 (HDMI 3) Output (priority 600, available: no)
        output:hdmi-stereo-extra3: Digital Stereo (HDMI 4) Output (priority 5700, available: no)
        output:hdmi-surround-extra3: Digital Surround 5.1 (HDMI 4) Output (priority 600, available: no)
        output:hdmi-surround71-extra3: Digital Surround 7.1 (HDMI 4) Output (priority 600, available: no)
        output:hdmi-stereo-extra4: Digital Stereo (HDMI 5) Output (priority 5700, available: no)
        output:hdmi-surround-extra4: Digital Surround 5.1 (HDMI 5) Output (priority 600, available: no)
        output:hdmi-surround71-extra4: Digital Surround 7.1 (HDMI 5) Output (priority 600, available: no)
        output:hdmi-stereo-extra5: Digital Stereo (HDMI 6) Output (priority 5700, available: no)
        output:hdmi-surround-extra5: Digital Surround 5.1 (HDMI 6) Output (priority 600, available: no)
        output:hdmi-surround71-extra5: Digital Surround 7.1 (HDMI 6) Output (priority 600, available: no)
        off: Off (priority 0, available: unknown)
    active profile: <off>
    ports:
        hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "video-display"
        hdmi-output-1: HDMI / DisplayPort 2 (priority 5800, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "video-display"
        hdmi-output-2: HDMI / DisplayPort 3 (priority 5700, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "video-display"
        hdmi-output-3: HDMI / DisplayPort 4 (priority 5600, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "video-display"
        hdmi-output-4: HDMI / DisplayPort 5 (priority 5500, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "video-display"
        hdmi-output-5: HDMI / DisplayPort 6 (priority 5400, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "video-display"
    index: 1
    name: <alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic>
    driver: <module-alsa-card.c>
    owner module: 24
    properties:
        alsa.card = "0"
        alsa.card_name = "sof-hda-dsp"
        alsa.long_card_name = "HP-HPSpectrex360Convertible15t_eb000--86E7"
        alsa.driver_name = "snd_soc_skl_hda_dsp"
        device.bus_path = "pci-0000:00:1f.3-platform-skl_hda_dsp_generic"
        sysfs.path = "/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0"
        device.bus = "pci"
        device.vendor.id = "8086"
        device.vendor.name = "Intel Corporation"
        device.product.id = "06c8"
        device.string = "0"
        device.description = "sof-hda-dsp"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    profiles:
        HiFi: Play HiFi quality Music (priority 8000, available: unknown)
        off: Off (priority 0, available: unknown)
    active profile: <HiFi>
    sinks:
        alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_5__sink/#1: sof-hda-dsp HDMI3/DP3 Output
        alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_4__sink/#2: sof-hda-dsp HDMI2/DP2 Output
        alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_3__sink/#3: sof-hda-dsp HDMI1/DP1 Output
        alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__sink/#4: sof-hda-dsp Speaker + Headphones
    sources:
        alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_5__sink.monitor/#1: Monitor of sof-hda-dsp HDMI3/DP3 Output
        alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_4__sink.monitor/#2: Monitor of sof-hda-dsp HDMI2/DP2 Output
        alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_3__sink.monitor/#3: Monitor of sof-hda-dsp HDMI1/DP1 Output
        alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__sink.monitor/#4: Monitor of sof-hda-dsp Speaker + Headphones
        alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__source/#5: sof-hda-dsp Headphones Stereo Microphone
        alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_6__source/#6: sof-hda-dsp Digital Microphone
    ports:
        [Out] HDMI3: HDMI3/DP3 Output (priority 700, latency offset 0 usec, available: no)
            properties:
                
        [Out] HDMI2: HDMI2/DP2 Output (priority 600, latency offset 0 usec, available: no)
            properties:
                
        [Out] HDMI1: HDMI1/DP1 Output (priority 500, latency offset 0 usec, available: no)
            properties:
                
        [Out] Speaker: Speaker (priority 100, latency offset 0 usec, available: unknown)
            properties:
                
        [Out] Headphones: Headphones (priority 200, latency offset 0 usec, available: no)
            properties:
                
        [In] Mic2: Headphones Stereo Microphone (priority 200, latency offset 0 usec, available: no)
            properties:
                
        [In] Mic1: Digital Microphone (priority 100, latency offset 0 usec, available: unknown)
            properties:

Output for aplay -l is:

aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sofhdadsp [sof-hda-dsp], device 0: HDA Analog (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: sofhdadsp [sof-hda-dsp], device 1: HDA Digital (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: sofhdadsp [sof-hda-dsp], device 3: HDMI1 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: sofhdadsp [sof-hda-dsp], device 4: HDMI2 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: sofhdadsp [sof-hda-dsp], device 5: HDMI3 (*) []
  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
card 1: NVidia [HDA NVidia], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 11: HDMI 5 [HDMI 5]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

And here's what dmesg shows me:

dmesg | grep snd
[    2.252960] snd_hda_intel 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100
[    2.252962] snd_hda_intel 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver
[    2.253047] snd_hda_intel 0000:01:00.1: enabling device (0000 -> 0002)
[    2.253102] snd_hda_intel 0000:01:00.1: Disabling MSI
[    2.253106] snd_hda_intel 0000:01:00.1: Handle vga_switcheroo audio client
[    2.591495] snd_hda_codec_realtek ehdaudio0D0: autoconfig for ALC285: line_outs=1 (0x17/0x0/0x0/0x0/0x0) type:speaker
[    2.591496] snd_hda_codec_realtek ehdaudio0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    2.591497] snd_hda_codec_realtek ehdaudio0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[    2.591497] snd_hda_codec_realtek ehdaudio0D0:    mono: mono_out=0x0
[    2.591498] snd_hda_codec_realtek ehdaudio0D0:    inputs:
[    2.591499] snd_hda_codec_realtek ehdaudio0D0:      Mic=0x19
[    2.637523] snd_hda_codec_realtek ehdaudio0D0: ASoC: sink widget AIF1TX overwritten
[    2.637525] snd_hda_codec_realtek ehdaudio0D0: ASoC: source widget AIF1RX overwritten
[    2.637555] skl_hda_dsp_generic skl_hda_dsp_generic: snd-soc-dummy-dai <-> DMIC48kHz 6 mapping ok
[    2.637557] skl_hda_dsp_generic skl_hda_dsp_generic: snd-soc-dummy-dai <-> DMIC16kHz 7 mapping ok
[    2.637562] skl_hda_dsp_generic skl_hda_dsp_generic: snd-soc-dummy-dai <-> HDA Analog 0 mapping ok
[    2.637566] skl_hda_dsp_generic skl_hda_dsp_generic: snd-soc-dummy-dai <-> HDA Digital 1 mapping ok
[    2.637568] skl_hda_dsp_generic skl_hda_dsp_generic: snd-soc-dummy-dai <-> HDMI1 3 mapping ok
[    2.637571] skl_hda_dsp_generic skl_hda_dsp_generic: snd-soc-dummy-dai <-> HDMI2 4 mapping ok
[    2.637574] skl_hda_dsp_generic skl_hda_dsp_generic: snd-soc-dummy-dai <-> HDMI3 5 mapping ok
dmesg | grep audio

[    2.253106] snd_hda_intel 0000:01:00.1: Handle vga_switcheroo audio client
[    2.280935] sof-audio-pci 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100
[    2.280938] sof-audio-pci 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver
[    2.280948] sof-audio-pci 0000:00:1f.3: enabling device (0000 -> 0002)
[    2.281114] sof-audio-pci 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100
[    2.344192] sof-audio-pci 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    2.423134] sof-audio-pci 0000:00:1f.3: use msi interrupt mode
[    2.438667] sof-audio-pci 0000:00:1f.3: hda codecs found, mask 5
[    2.438668] sof-audio-pci 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now
[    2.438670] sof-audio-pci 0000:00:1f.3: DMICs detected in NHLT tables: 2
[    2.554393] sof-audio-pci 0000:00:1f.3: Firmware info: version 1:4:2-66a5a
[    2.554394] sof-audio-pci 0000:00:1f.3: Firmware: ABI 3:11:0 Kernel ABI 3:16:0
[    2.557125] sof-audio-pci 0000:00:1f.3: Topology: ABI 3:11:0 Kernel ABI 3:16:0
[    2.557127] sof-audio-pci 0000:00:1f.3: warning: widget type 7 name iDisp3 Tx not handled
[    2.558092] sof-audio-pci 0000:00:1f.3: warning: widget type 0 name codec0_in not handled
[    2.558093] sof-audio-pci 0000:00:1f.3: warning: widget type 7 name iDisp2 Tx not handled
[    2.558996] sof-audio-pci 0000:00:1f.3: warning: widget type 0 name codec1_in not handled
[    2.558997] sof-audio-pci 0000:00:1f.3: warning: widget type 7 name iDisp1 Tx not handled
[    2.559892] sof-audio-pci 0000:00:1f.3: warning: widget type 1 name codec0_out not handled
[    2.559893] sof-audio-pci 0000:00:1f.3: warning: widget type 7 name Analog CPU Playback not handled
[    2.560774] sof-audio-pci 0000:00:1f.3: warning: widget type 1 name codec1_out not handled
[    2.560774] sof-audio-pci 0000:00:1f.3: warning: widget type 7 name Digital CPU Playback not handled
[    2.560775] sof-audio-pci 0000:00:1f.3: warning: widget type 0 name codec2_in not handled
[    2.560792] sof-audio-pci 0000:00:1f.3: warning: widget type 7 name Alt Analog CPU Playback not handled
[    2.560793] sof-audio-pci 0000:00:1f.3: warning: widget type 1 name codec2_out not handled
[    2.560793] sof-audio-pci 0000:00:1f.3: warning: widget type 0 name Analog CPU Capture not handled
[    2.561700] sof-audio-pci 0000:00:1f.3: warning: widget type 1 name iDisp1_out not handled
[    2.561701] sof-audio-pci 0000:00:1f.3: warning: widget type 0 name Digital CPU Capture not handled
[    2.562631] sof-audio-pci 0000:00:1f.3: warning: widget type 1 name iDisp2_out not handled
[    2.562632] sof-audio-pci 0000:00:1f.3: warning: widget type 0 name Alt Analog CPU Capture not handled
[    2.563553] sof-audio-pci 0000:00:1f.3: warning: widget type 1 name iDisp3_out not handled
[    2.572765] sof-audio-pci 0000:00:1f.3: ASoC: Parent card not yet available, widget card binding deferred
[    2.591495] snd_hda_codec_realtek ehdaudio0D0: autoconfig for ALC285: line_outs=1 (0x17/0x0/0x0/0x0/0x0) type:speaker
[    2.591496] snd_hda_codec_realtek ehdaudio0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    2.591497] snd_hda_codec_realtek ehdaudio0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[    2.591497] snd_hda_codec_realtek ehdaudio0D0:    mono: mono_out=0x0
[    2.591498] snd_hda_codec_realtek ehdaudio0D0:    inputs:
[    2.591499] snd_hda_codec_realtek ehdaudio0D0:      Mic=0x19
[    2.637523] snd_hda_codec_realtek ehdaudio0D0: ASoC: sink widget AIF1TX overwritten
[    2.637525] snd_hda_codec_realtek ehdaudio0D0: ASoC: source widget AIF1RX overwritten

Current alsamixer view:

AlsaMixer


Since the headphones are working, I suppose this is a "pinning" problem.

I suspect this line reflects the problem:

snd_hda_codec_realtek ehdaudio0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)

This solution is supplied (as an edit to my answer) by @BlizzardWyvern

@BlizzardWyvern : please create your own answer to get the credit

The audio chip has an amplifier pin that needs to be set. It is pin 1. After installing the correct topology (e.g. from here https://github.com/EvanCarroll/sof-bin/tree/stable-v1.5) a device named something like "hwC0D0" should show up in /dev/snd/. Using hda-verb from alsa-tools you can get two of the four installed speakers to work by entering these commands:

sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x01

sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x01

sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x01

sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x00

This solution worked for me except the device is hwC1D0 and I used topology from

git clone -b stable-v1.6 https://github.com/thesofproject/sof-bin.git
aplay -l

card 1: sofhdadsp [sof-hda-dsp], device 0: HDA Analog (*) []
  Subdevices: 0/1
  Subdevice #0: subdevice #0