linux icon indicating copy to clipboard operation
linux copied to clipboard

ASUS Zenbook S14 microphone doesn't work

Open vanheck opened this issue 3 weeks ago • 22 comments

Following up on https://github.com/thesofproject/linux/issues/5325#issuecomment-2817360236 After updating the kernel and linux-firmware (and Fedora 43), my microphone has stopped working again.

Packages: linux-firmware: 20251125-1.fc43 kernel: 6.17.11-300.fc43 alsa-sof-firmware: 2025.05.1-1.fc43 alsa-lib: 1.2.15-4.fc43 alsa-utils: 1.2.15-2.fc43 aplay: version 1.2.15

dmesg.log

@bardliao could you help me?

vanheck avatar Dec 15 '25 16:12 vanheck

@vanheck Can you share the alsa-info? And please get the dmesg right after system boot. @rfvirgil FYI

bardliao avatar Dec 16 '25 05:12 bardliao

There are these logs:

dmesg2.log alsa-info.txt

vanheck avatar Dec 16 '25 07:12 vanheck

I can't see the issue from the log. Have you tried arecord? Like arecord -Dhw:0,10 -fDAT dmic.wav -vv

bardliao avatar Dec 16 '25 09:12 bardliao

When you say the mics don't work I assume you mean the built in mics in the laptop? And the other audio is fine? I also notice on the other ticket there is some talk of the mics needing really high gain, are you actually recording zeros, or is it just very quiet audio?

charleskeepax avatar Dec 16 '25 11:12 charleskeepax

Yes, laptop microphone. Also LED on keyboard doesn't work (mute/unmute microphone). There is no sound in any recording application (audacity / obs / zoom / ...).

Image
$ arecord -Dhw:0,10 -fDAT dmic.wav -vv
arecord: set_params:1387: Sample format non available
Available formats:
- S32_LE

vanheck avatar Dec 16 '25 12:12 vanheck

@vanheck The LED is a different issue. Did it work with previous kernel and linux-firmware? Please try arecord -Dhw:0,10 -fS32_LE -r48000 -c2 dmic.wav -vv

bardliao avatar Dec 16 '25 12:12 bardliao

Yes, it did work both LED and also microphone recording sound (was solved by previous issues). But not sure which kernel update causes this issue again. Guess broken kernel was 6.15.4 (patch version not sure) or 6.16.2. And no idea which version of linux-firmware causes this.

$ arecord -Dhw:0,10 -fS32_LE -r48000 -c2 dmic.wav -vv
Hardware PCM card 0 'sof-soundwire' device 10 subdevice 0
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 24000
  period_size  : 6000
  period_time  : 125000
  tstamp_mode  : ENABLE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 6000
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 24000
  silence_threshold: 0
  silence_size : 0
  boundary     : 6755399441055744000
  appl_ptr     : 0
  hw_ptr       : 0
Recording WAVE 'dmic.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Stereo
arecord: begin_wave:2736: Wave doesn't support S32_LE format...

vanheck avatar Dec 16 '25 12:12 vanheck

"begin_wave:2736: Wave doesn't support S32_LE format..." looks like a regression of arecord. https://github.com/alsa-project/alsa-utils/commit/e78583ab7cde7a2ccbb56339dd51608fb78c5395 @charleskeepax It seems a break is required right before default: at line 2734, right?

Not sure what happened. Previously, the issue was the driver was trying to use the codec DMIC but your hardware design uses the host DMIC. And the issue was fixed. And now the driver uses the host DMIC as expected, and I didn't see any error in the dmesg log.

@vanheck Can you try older version of alsa-lib, alsa-utils, and aplay?

bardliao avatar Dec 16 '25 13:12 bardliao

Downgrade to lib (alsa-lib, alsa-utils, and aplay) versions 1.2.12 any devices detect, no sound works (no speakers, no microphone). Downgrade to lib versions 1.2.13 the same as before. Downgrade to version 1.2.14 - speakers works, microphone not.

vanheck avatar Dec 16 '25 14:12 vanheck

Downgrade to lib (alsa-lib, alsa-utils, and aplay) versions 1.2.12 any devices detect, no sound works (no speakers, no microphone). Downgrade to lib versions 1.2.13 the same as before. Downgrade to version 1.2.14 - speakers works, microphone not.

Can you use the 1.2.14 version and run the arecord test again and share the dmesg? Please clear the dmesg before doing arecord. I.e

dmesg -c
arecord -Dhw:0,10 -fS32_LE -r48000 -c2 dmic.wav -vv
dmesg

Then share the dmesg log

bardliao avatar Dec 17 '25 01:12 bardliao

Now with 1.2.14 arecord seems to work, but in waw file is no sound.

start-dmesg.log recording-dmesg.log

This is manually killed (SIGINT) in about 10s.

$ arecord -Dhw:0,10 -fS32_LE -r48000 -c2 dmic.wav -vv
Hardware PCM card 0 'sof-soundwire' device 10 subdevice 0
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 24000
  period_size  : 6000
  period_time  : 125000
  tstamp_mode  : ENABLE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 6000
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 24000
  silence_threshold: 0
  silence_size : 0
  boundary     : 6755399441055744000
  appl_ptr     : 0
  hw_ptr       : 0
Recording WAVE 'dmic.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Stereo
#+                                                 | 00%^C
Aborted by signal Přerušení (SIGINT)...
#+                                                 | 00%

vanheck avatar Dec 17 '25 06:12 vanheck

So there is no error but can only record silence. @singalsu Could you take a look? Please find the amixer contents from https://github.com/user-attachments/files/24185046/alsa-info.txt. Below looks good to me.

	control.191 {
		iface MIXER
		name 'Dmic0 Capture Volume'
		value.0 34
		value.1 34
		comment {
			access 'read write'
			type INTEGER
			count 2
			range '0 - 45'
			dbmin -9999999
			dbmax 0
			dbvalue.0 -2200
			dbvalue.1 -2200
		}
	}
	control.192 {
		iface MIXER
		name 'Dmic0 Capture Switch'
		value.0 true
		value.1 true
		value.2 true
		value.3 true
		comment {
			access 'read write'
			type BOOLEAN
			count 4
		}
	}

Not sure what else could impact the DMIC recording.

@vanheck Can you try arecord -Dhw:0,10 -fS32_LE -r48000 -c4 dmic.wav -vv? And can you check if the LED status change if you change the Dmic0 Capture Switch control? amixer -c0 cset name='Dmic0 Capture Switch' 0 and amixer -c0 cset name='Dmic0 Capture Switch' 1

bardliao avatar Dec 17 '25 10:12 bardliao

So there is no error but can only record silence. @singalsu Could you take a look? Please find the amixer contents from https://github.com/user-attachments/files/24185046/alsa-info.txt. Below looks good to me.

Also the audio processing controls settings look normal.

singalsu avatar Dec 17 '25 12:12 singalsu

@bardliao LED switch control works (probably my bad with reporting it, apologize)

But the microphone still doesnt work - recording silence.

$ arecord -Dhw:0,10 -fS32_LE -r48000 -c4 dmic.wav -vv
arecord: set_params:1398: Channels count non available

vanheck avatar Dec 17 '25 14:12 vanheck

@vanheck Could you switch to the working kernel and linux-firmware and get the alsa-info of the working case? So that we can check what has been changed.

bardliao avatar Dec 18 '25 11:12 bardliao

@bardliao I have no idea which configuration worked, I've just tried a lot of them from april 25 but I cannot reproduce the working state of the microphone :/ (even on a clean installation of fedora 42 on an external drive).

I know the microphone used to work in end-of-april and may this year. Is there any possibility that the microphone is physically broken by too much volume gain?


I have tried to use Claude to check the problem:

Update: Further investigation revealed:

  1. arecord bug confirmed: Hardware only supports S32_LE format, but arecord fails with "Wave doesn't support S32_LE format"

    • parecord works without this error
  2. DMIC not capturing real audio: While parecord can record (creates non-silent file with mean_volume: -53.2 dB), it only captures system beep at start and noise - NOT environmental sound from microphones

  3. amixer crashes when setting DMIC controls:
    amixer -c 0 cset numid=196 on,on,on,on
    amixer: control.c:427: snd_ctl_elem_info: Assertion `ctl && info && (info->id.name[0] || info->id.numid)' failed.
    Aborted (core dumped)

  4. TDFB beamforming disable doesn't help

This suggests the issue is deeper than just arecord - likely in SOF DSP topology, DMIC routing, or alsa-lib regression affecting DMIC controls.

Already tried without success:

  • Kernel downgrade
  • alsa-sof-firmware downgrade
  • alsa-lib downgrade
  • Disabling TDFB beamforming

vanheck avatar Dec 18 '25 19:12 vanheck

  1. DMIC not capturing real audio: While parecord can record (creates non-silent file with mean_volume: -53.2 dB), it only captures system beep at start and noise - NOT environmental sound from microphones

That is an important hint. It implies that the mixer controls should be good and the issue is likely on the physical level. The microphone is not likely physically broken by too much volume gain. However, I suspect that your system might use the wrong dmic pins. Can you try rebooting with options snd_sof_intel_hda_common sof_use_tplg_nhlt=1? If it still doesn't work, please keep the sof_use_tplg_nhlt=1 option and try the tplg file for PDM1 below.

sof-lnl-cs42l43-l0-cs35l56-l23-2ch-pdm1.zip

bardliao avatar Dec 19 '25 02:12 bardliao

I use this command, and after restart sound devices are not detected (no speakers, no microphones):

sudo bash -c 'echo "options snd_sof_intel_hda_common sof_use_tplg_nhlt=1" > /etc/modprobe.d/sof-audio.conf'

I copied the tplg file into /usr/lib/firmware/intel/sof-tplg/ and /lib/firmware/intel/sof-tplg/ (not sure which one is right), it didn't help either, still no sound devices

dmesg.log

vanheck avatar Dec 19 '25 07:12 vanheck

I use this command, and after restart sound devices are not detected (no speakers, no microphones):

Hmm, I see below error in the dmesg log.

[   28.579769] sof-audio-pci-intel-lnl 0000:00:1f.3: no matching blob for sample rate: 48000 sample width: 16 channels: 2
[   28.579771] sof-audio-pci-intel-lnl 0000:00:1f.3: failed to prepare widget dai-copier.DMIC.dmic01.capture
[   28.579772] sof-audio-pci-intel-lnl 0000:00:1f.3: Failed to prepare connected widgets
[   28.579774] sof-audio-pci-intel-lnl 0000:00:1f.3: sof_pcm_setup_connected_widgets: pcm10 (DMIC Raw), dir 1: Widget list set up failed
[   28.579775] sof-audio-pci-intel-lnl 0000:00:1f.3: ASoC error (-22): at snd_soc_pcm_component_hw_params() on 0000:00:1f.3
[   28.579791]  DMIC Raw: ASoC error (-22): at __soc_pcm_hw_params() on DMIC Raw
[   28.579805]  DMIC Raw: ASoC error (-22): at dpcm_fe_dai_hw_params() on DMIC Raw

sudo bash -c 'echo "options snd_sof_intel_hda_common sof_use_tplg_nhlt=1" > /etc/modprobe.d/sof-audio.conf' I copied the tplg file into /usr/lib/firmware/intel/sof-tplg/ and /lib/firmware/intel/sof-tplg/ (not sure which one is right), it didn't help either, still no sound devices

It should be /lib/firmware/intel/sof-ipc4-tplg. But I don't expect it will work even you copy the tplg file to the right folder. Have you upgrade the BIOS? We may need to consider the possibility that the DMIC is physically broken. Could you install Windows and check it?

dmesg.log

bardliao avatar Dec 19 '25 09:12 bardliao

@bardliao windows instalation without erase my ssd data was pain, but successful. The sound is the same, speakers work microphone doesn't. When recording, a short beep sound occures at start but the rest of the record is silence. That means the microphone is physically broken? How could this happen?

Edit: BIOS upgraded, and audio drivers from windows and from official asus web has been also tried.

vanheck avatar Dec 20 '25 12:12 vanheck

@bardliao windows instalation without erase my ssd data was pain, but successful. The sound is the same, speakers work microphone doesn't. When recording, a short beep sound occures at start but the rest of the record is silence. That means the microphone is physically broken? How could this happen?

I have no idea how the microphone could be broken. But I don't see errors from the perspective of Software.

Edit: BIOS upgraded, and audio drivers from windows and from official asus web has been also tried.

This MIGHT be the problem. The microphone configurations are from the BIOS. IF there is something wrong with the new BIOS, then the microphone won't work. BUT, I don't think it could happen. You could give it a try if you can restore the old BIOS.

bardliao avatar Dec 22 '25 02:12 bardliao

This MIGHT be the problem. The microphone configurations are from the BIOS. IF there is something wrong with the new BIOS, then the microphone won't work. BUT, I don't think it could happen. You could give it a try if you can restore the old BIOS.

I cannot restore older BIOS than v306, ez flash utility blocks that. And v306 is the version, where microphone doesn't work. :/

vanheck avatar Dec 22 '25 08:12 vanheck