2

It's known that Acer Swift 3, and in general devices using Realtek ALC 256 sound carrd, has problem with speaker, headphones and internal microphone.

However I'm here to ask you some help in, maybe, finding a solution.

Me and a friend of mine have this laptop: on his laptop the speaker, the headphones and specially the internal microphone work! The only thing is that when the headphones are plugged in one has to manually select the headphones output instead of the speaker one.

In my laptop things are completely different: initially I had only 'Dummy Output' as output device and a blank space as input device. Then, adding options snd-hda-intel model = generic and options snd-hda-intel dmic_detected = 0 I finally was able to see Seaker, Headphones and the internal microphone, but nothing works. Only from bluetooth devices I can hear sound, but internal speaker, jack headphones and internal microphone do not work! Of course I tried many things with alsamixer, pavucontrol or hdajackretask at least to make speakers working, but nothing succeeded.

Both of us is running Ubuntu 20.

I'm not a Linux expert but I tried to search which are the difference between these two devices. I found a difference in the pacmd list-cards output and also in the Alsamixer. N

ON THE WORKING DEVICE THE OUTPUT OF pacmd list-cards IS

    index: 0
    name: <alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic>
    driver: <module-alsa-card.c>
    owner module: 23
    properties:
        alsa.card = "0"
        alsa.card_name = "sof-hda-dsp"
        alsa.long_card_name = "sof-hda-dsp"
        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 = "9dc8"
        device.product.name = "Cannon Point-LP High Definition Audio Controller"
        device.string = "0"
        device.description = "Cannon Point-LP High Definition Audio Controller"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    profiles:
        HiFi: Play HiFi quality Music (priority 40768, available: unknown)
        off: Spento (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: Cannon Point-LP High Definition Audio Controller HDMI3/DP3 Output
        alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_4__sink/#2: Cannon Point-LP High Definition Audio Controller HDMI2/DP2 Output
        alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_3__sink/#3: Cannon Point-LP High Definition Audio Controller HDMI1/DP1 Output
        alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__sink/#4: Cannon Point-LP High Definition Audio Controller Speaker + Headphones
    sources:
        alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_5__sink.monitor/#1: Monitor of Cannon Point-LP High Definition Audio Controller HDMI3/DP3 Output
        alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_4__sink.monitor/#2: Monitor of Cannon Point-LP High Definition Audio Controller HDMI2/DP2 Output
        alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_3__sink.monitor/#3: Monitor of Cannon Point-LP High Definition Audio Controller HDMI1/DP1 Output
        alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__sink.monitor/#4: Monitor of Cannon Point-LP High Definition Audio Controller Speaker + Headphones
        alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__source/#5: Cannon Point-LP High Definition Audio Controller Headphones Stereo Microphone
        alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_6__source/#6: Cannon Point-LP High Definition Audio Controller 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: unknown)
            properties:
                
        [In] Mic2: Headphones Stereo Microphone (priority 200, latency offset 0 usec, available: unknown)
            properties:
                
        [In] Mic1: Digital Microphone (priority 100, latency offset 0 usec, available: unknown)
            properties:

while ON THE NOT-WORKING DEVICE such output is:

    index: 0
    name: <alsa_card.pci-0000_00_1f.3>
    driver: <module-alsa-card.c>
    owner module: 23
    properties:
        alsa.card = "0"
        alsa.card_name = "HDA Intel PCH"
        alsa.long_card_name = "HDA Intel PCH at 0xb1128000 irq 129"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:00:1f.3"
        sysfs.path = "/devices/pci0000:00/0000:00:1f.3/sound/card0"
        device.bus = "pci"
        device.vendor.id = "8086"
        device.vendor.name = "Intel Corporation"
        device.product.id = "9d71"
        device.product.name = "Sunrise Point-LP HD Audio"
        device.form_factor = "internal"
        device.string = "0"
        device.description = "Built-in Audio"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    profiles:
        input:analog-stereo: Analog Stereo Input (priority 32833, available: unknown)
        output:analog-stereo: Analog Stereo Output (priority 39268, available: unknown)
        output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (priority 39333, available: unknown)
        output:hdmi-stereo: Digital Stereo (HDMI) Output (priority 38668, available: unknown)
        output:hdmi-stereo+input:analog-stereo: Digital Stereo (HDMI) Output + Analog Stereo Input (priority 38733, available: unknown)
        off: Off (priority 0, available: unknown)
    active profile: <output:analog-stereo+input:analog-stereo>
    sinks:
        alsa_output.pci-0000_00_1f.3.analog-stereo/#1: Built-in Audio Analog Stereo
    sources:
        alsa_output.pci-0000_00_1f.3.analog-stereo.monitor/#1: Monitor of Built-in Audio Analog Stereo
        alsa_input.pci-0000_00_1f.3.analog-stereo/#2: Built-in Audio Analog Stereo
    ports:
        analog-input: Analog Input (priority 10000, latency offset 0 usec, available: unknown)
            properties:
                
        analog-output-speaker: Speakers (priority 10000, latency offset 0 usec, available: unknown)
            properties:
                device.icon_name = "audio-speakers"
        analog-output-headphones: Headphones (priority 9900, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "audio-headphones"
        hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: unknown)
            properties:
                device.icon_name = "video-display"

Further, ON THE WORKING DEVICE, alsamixer looks like this, while on the NOT-WORKING device it is this one

So, now the question: does anyone of you know what the problem is and how to solve it? How can I make the not-working device having the same settings of the working one? I see that they different sound card settings and firmware.

If you need any other output I will edit this post immediately!

EDIT: I give you the outputs of two commands: cat /proc/asound/modules and dmesg | grep snd.

1a. cat /proc/asound/modules on the working device gives 0 snd_soc_skl_hda_dsp

1b. cat /proc/asound/modules on the NOT-working device gives 0 snd_hda_intel

2a. dmesg | grep snd on the working device returns

[    3.423610] snd_hda_intel 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100
[    3.423636] snd_hda_intel 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver
[    3.699005] snd_hda_codec_realtek ehdaudio0D0: autoconfig for ALC256: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[    3.699008] snd_hda_codec_realtek ehdaudio0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    3.699010] snd_hda_codec_realtek ehdaudio0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[    3.699011] snd_hda_codec_realtek ehdaudio0D0:    mono: mono_out=0x0
[    3.699012] snd_hda_codec_realtek ehdaudio0D0:    inputs:
[    3.699013] snd_hda_codec_realtek ehdaudio0D0:      Headset Mic=0x19
[    3.758163] snd_hda_codec_realtek ehdaudio0D0: ASoC: sink widget AIF1TX overwritten
[    3.758170] snd_hda_codec_realtek ehdaudio0D0: ASoC: source widget AIF1RX overwritten

2b. on the NOT-working devices dmesg | grep snd gives

[    5.489834] snd_hda_intel 0000:00:1f.3: dmic_detect option is deprecated, pass snd-intel-dspcfg.dsp_driver=1 option instead
[    5.490101] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    5.541621] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC256: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[    5.541642] snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    5.541645] snd_hda_codec_realtek hdaudioC0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[    5.541647] snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
[    5.541649] snd_hda_codec_realtek hdaudioC0D0:    inputs:
1
  • I think this is a major issue with ALC256 and there were multiple questions on it. Check this solution out with video tutorial included (if still stuck with it, if not, then for those who are!): askubuntu.com/a/1406918/1593265
    – Michael
    May 8, 2022 at 9:07

1 Answer 1

0

Make sure the Sound Open Firmware package is installed (firmware-sof-signed on Debian/Ubuntu).

If Linux still insists on using the fallback driver (snd_hda_intel) instead of the SOF driver (snd_soc_skl_hda_dsp), you can request the latter by creating a file in /etc/modprobe.d, such as /etc/modprobe.d/alsa.conf, with the following contents:

options snd-intel-dspcfg dsp_driver=3

If that doesn't work for some reason, you can be more explicit:

blacklist snd-hda-intel
options snd slots=snd_soc_skl_hda_dsp

The change should take effect on the next reboot. There's a lot of good troubleshooting info in More Notes on HD-Audio Driver from the kernel docs as well as the SOF docs.

Also, you can try disabling Fast Boot / Fast BIOS, to ensure that the audio hardware is properly reset before Linux boots.

4
  • Can you please telle me more precisely how I can install firmware-sof-signed on the not-working device? Because it seems there's already a version of them on the pc but the two commands to force the system using them does not help (i get a "Dummy Output")
    – mcp
    Dec 16, 2021 at 13:54
  • To be more specific, in the path /lib/firmware/intel/sof of the two devices the files are exactly the same
    – mcp
    Dec 16, 2021 at 14:00
  • Hmm, sounds like you already have firmware-sof-signed installed; otherwise you'd want to do apt install firmware-sof-signed. You can cat /proc/asound/modules to confirm that ALSA truly isn't loading a driver for the card (to rule out a PulseAudio issue). In that case, you can try doing dmesg | grep snd to look for clues as to why the driver isn't being loaded properly, Dec 16, 2021 at 23:45
  • I've updated the question with the outputs of the two commands
    – mcp
    Dec 28, 2021 at 9:39

You must log in to answer this question.

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