Built-in microphone is not working on my Asus Vivobook s16x

Hi all. I’m new to Linux and have encountered problems with the built-in microphone - it doesn’t work, and I can’t select it in the sound settings. After researching forums on the Internet, I found information that it is necessary to make changes to the kernel configuration and this could theoretically solve my problem.

  • Plz, tell me how I can make changes to the kernel configuration?
  • Or perhaps someone can tell me how to solve this problem in another way?

to enable the snd_pci_acp6x driver and it’s DMIC support in my kernel config:

CONFIG_SND_SOC=y
CONFIG_SND_SOC_AMD_ACP6x=y
CONFIG_SND_SOC_AMD_YC_MACH=y

System info:

Kernel: 6.6.2-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
    clocksource: tsc available: acpi_pm
    parameters: BOOT_IMAGE=/boot/vmlinuz-6.6-x86_64
    root=UUID=12ef720e-82e2-4dbf-99b2-110013001e9d rw
    resume=UUID=ffcdaf15-8d67-4927-a1e1-52140d376e53 resume_offset=37429248
    quiet splash apparmor=1 security=apparmor udev.log_priority=3

Desktop: GNOME v: 45.1 tk: GTK v: 3.24.38 wm: gnome-shell dm: GDM v: 45.0.1
    Distro: Manjaro Linux base: Arch Linux

Machine:
  Type: Laptop System: ASUSTeK product: Vivobook_ASUSLaptop M5602RA_M5602RA
    v: 1.0 serial: <superuser required>
  Mobo: ASUSTeK model: M5602RA v: 1.0 serial: <superuser required>
    UEFI: American Megatrends LLC. v: M5602RA.301 date: 07/30/2022

CPU:
    Info: model: AMD Ryzen 7 6800H with Radeon Graphics bits: 64 type: MT MCP
    arch: Zen 3+ gen: 4 level: v3 note: check built: 2022 process: TSMC n6 (7nm)

Graphics:
    Device-1: AMD Rembrandt [Radeon 680M] vendor: ASUSTeK driver: amdgpu
    v: kernel arch: RDNA-2 code: Navi-2x process: TSMC n7 (7nm) built: 2020-22

Display: wayland server: Xorg v: 1.21.1.9 with: Xwayland v: 23.2.2
    compositor: gnome-shell driver: gpu: amdgpu display-ID: 0

Audio:
Device-1: AMD Rembrandt Radeon High Definition Audio driver: snd_hda_intel
    v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16 bus-ID: 03:00.1
    chip-ID: 1002:1640 class-ID: 0403
  
Device-2: AMD ACP/ACP3X/ACP6x Audio Coprocessor vendor: ASUSTeK
    driver: snd_pci_acp6x v: kernel alternate: snd_pci_acp3x, snd_rn_pci_acp3x,
    snd_pci_acp5x, snd_acp_pci, snd_rpl_pci_acp6x, snd_pci_ps,
    snd_sof_amd_renoir, snd_sof_amd_rembrandt, snd_sof_amd_vangogh pcie: gen: 4
    speed: 16 GT/s lanes: 16 bus-ID: 03:00.5 chip-ID: 1022:15e2 class-ID: 0480
  
Device-3: AMD Family 17h/19h HD Audio vendor: ASUSTeK driver: snd_hda_intel
    v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16 bus-ID: 03:00.6
    chip-ID: 1022:15e3 class-ID: 0403
  API: ALSA v: k6.6.2-1-MANJARO status: kernel-api with: aoss
    type: oss-emulator tools: alsactl,alsamixer,amixer
  
Server-1: PipeWire v: 0.3.85 status: active with: 1: pipewire-pulse
    status: active 2: pipewire-media-session status: active 3: pipewire-alsa
    type: plugin 4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli

Additional data:

inxi -Fxxz | grep Audio

Audio:
    Device-1: AMD Rembrandt Radeon High Definition Audio driver: snd_hda_intel
    Device-2: AMD ACP/ACP3X/ACP6x Audio Coprocessor vendor: ASUSTeK   <-- *this is my micro*
    Device-3: AMD Family 17h/19h HD Audio vendor: ASUSTeK

pactl list cards | grep ‘.(card_name|description)’

device.description = "Rembrandt Radeon High Definition Audio Controller"
alsa.card_name = "HD-Audio Generic"
device.description = "Family 17h/19h HD Audio Controller"
alsa.card_name = "HD-Audio Generic"

dmesg | grep ‘(acp6x|DMIC)’

snd_pci_acp6x 0000:03:00.5: enabling device (0000 -> 0002)

arecord -l

**** List of CAPTURE Hardware Devices ****
card 1: Generic_1 [HD-Audio Generic], device 0: ALC294 Analog [ALC294 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Generic_1 [HD-Audio Generic], device 2: ALC294 Alt Analog [ALC294 Alt Analog]
  Subdevices: 2/2
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1

zgrep CONFIG_SND_SOC_AMD_ACP /proc/config.gz

CONFIG_SND_SOC_AMD_ACP=m
CONFIG_SND_SOC_AMD_ACP3x=m
CONFIG_SND_SOC_AMD_ACP5x=m
CONFIG_SND_SOC_AMD_ACP6x=m

Thank you in advance!

Putting an y here means that it will always, also if it is not needed and waste memory. If you want to set this config, then you need to recompile the kernel again. At the end it means: Load the driver very early and that’s it. That can also be be accomplish by adding the module to the initcpio (see mkinitcpio.conf).

Actually there are record devices. What reports pulseaudio?

 pactl list sources

Hi, and thanks for your answer and clarification.

No, commands output for arecord -l and pactl list sources does not contain the device required for input. If I understand everything correctly, the device I need is indicated in the output inxi -Fxxz | grep Audio and this is Device-2: AMD ACP/ACP3X/ACP6x Audio Coprocessor.

Output for the pactl list sources command:

Source #49
	State: IDLE
	Name: alsa_output.pci-0000_03_00.6.analog-stereo.monitor
	Description: Monitor of Family 17h/19h HD Audio Controller Analog Stereo
	Driver: PipeWire
	Sample Specification: s32le 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 of Sink: alsa_output.pci-0000_03_00.6.analog-stereo
	Latency: 0 usec, configured 0 usec
	Flags: HARDWARE DECIBEL_VOLUME LATENCY 
	Properties:
		object.path = "alsa:pcm:1:front:1:playback"
		api.alsa.path = "front:1"
		api.alsa.pcm.card = "1"
		api.alsa.pcm.stream = "playback"
		audio.channels = "2"
		audio.position = "FL,FR"
		device.routes = "2"
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "monitor"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "ALC294 Analog"
		alsa.id = "ALC294 Analog"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "0"
		alsa.card = "1"
		alsa.card_name = "HD-Audio Generic"
		alsa.long_card_name = "HD-Audio Generic at 0xd05c0000 irq 104"
		alsa.driver_name = "snd_hda_intel"
		device.profile.name = "analog-stereo"
		device.profile.description = "Analog Stereo"
		card.profile.device = "4"
		device.id = "46"
		factory.name = "api.alsa.pcm.sink"
		priority.driver = "945"
		priority.session = "945"
		media.class = "Audio/Sink"
		node.nick = "HD-Audio Generic"
		node.name = "alsa_output.pci-0000_03_00.6.analog-stereo"
		device.description = "Family 17h/19h HD Audio Controller"
		device.icon_name = "audio-card-analog"
		device.bus = "pci"
		device.bus_path = "pci-0000:03:00.6"
		node.pause-on-idle = "false"
		factory.id = "18"
		clock.quantum-limit = "8192"
		client.id = "33"
		node.driver = "true"
		factory.mode = "merge"
		audio.adapt.follower = ""
		library.name = "audioconvert/libspa-audioconvert"
		object.id = "49"
		object.serial = "49"
		node.max-latency = "16384/48000"
		api.alsa.period-size = "1024"
		api.alsa.period-num = "32"
		api.alsa.headroom = "0"
		device.enum.api = "udev"
		api.alsa.card = "1"
		api.alsa.card.name = "HD-Audio Generic"
		api.alsa.card.longname = "HD-Audio Generic at 0xd05c0000 irq 104"
		device.plugged.usec = "16363739"
		sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:03:00.6/sound/card1"
		device.subsystem = "sound"
		device.vendor.id = "0x1022"
		device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"
		device.product.id = "0x15e3"
		device.product.name = "Family 17h/19h HD Audio Controller"
		device.name = "alsa_card.pci-0000_03_00.6"
		device.nick = "HD-Audio Generic"
		api.alsa.use-acp = "true"
		api.acp.auto-profile = "false"
		api.acp.auto-port = "false"
		api.dbus.ReserveDevice1 = "Audio1"
		device.string = "1"
	Ports:
		analog-output-speaker: Speakers (type: Speaker, priority: 10000, availability group: Legacy 1, availability unknown)
		analog-output-headphones: Headphones (type: Headphones, priority: 9900, availability group: Legacy 2, not available)
	Active Port: analog-output-speaker
	Formats:
		pcm

Source #50
	State: SUSPENDED
	Name: alsa_input.pci-0000_03_00.6.analog-stereo
	Description: Family 17h/19h HD Audio Controller Analog Stereo
	Driver: PipeWire
	Sample Specification: s32le 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 of Sink: n/a
	Latency: 0 usec, configured 0 usec
	Flags: HARDWARE DECIBEL_VOLUME LATENCY 
	Properties:
		object.path = "alsa:pcm:1:front:1:capture"
		api.alsa.path = "front:1"
		api.alsa.pcm.card = "1"
		api.alsa.pcm.stream = "capture"
		audio.channels = "2"
		audio.position = "FL,FR"
		device.routes = "1"
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "ALC294 Analog"
		alsa.id = "ALC294 Analog"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "0"
		alsa.card = "1"
		alsa.card_name = "HD-Audio Generic"
		alsa.long_card_name = "HD-Audio Generic at 0xd05c0000 irq 104"
		alsa.driver_name = "snd_hda_intel"
		device.profile.name = "analog-stereo"
		device.profile.description = "Analog Stereo"
		card.profile.device = "0"
		device.id = "46"
		factory.name = "api.alsa.pcm.source"
		priority.driver = "1945"
		priority.session = "1945"
		media.class = "Audio/Source"
		node.nick = "HD-Audio Generic"
		node.name = "alsa_input.pci-0000_03_00.6.analog-stereo"
		device.description = "Family 17h/19h HD Audio Controller"
		device.icon_name = "audio-input-microphone-analog"
		device.bus = "pci"
		device.bus_path = "pci-0000:03:00.6"
		node.pause-on-idle = "false"
		factory.id = "18"
		clock.quantum-limit = "8192"
		client.id = "33"
		node.driver = "true"
		factory.mode = "split"
		audio.adapt.follower = ""
		library.name = "audioconvert/libspa-audioconvert"
		object.id = "50"
		object.serial = "50"
		device.enum.api = "udev"
		api.alsa.card = "1"
		api.alsa.card.name = "HD-Audio Generic"
		api.alsa.card.longname = "HD-Audio Generic at 0xd05c0000 irq 104"
		device.plugged.usec = "16363739"
		sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:03:00.6/sound/card1"
		device.subsystem = "sound"
		device.vendor.id = "0x1022"
		device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"
		device.product.id = "0x15e3"
		device.product.name = "Family 17h/19h HD Audio Controller"
		device.name = "alsa_card.pci-0000_03_00.6"
		device.nick = "HD-Audio Generic"
		api.alsa.use-acp = "true"
		api.acp.auto-profile = "false"
		api.acp.auto-port = "false"
		api.dbus.ReserveDevice1 = "Audio1"
		device.string = "1"
	Ports:
		analog-input: Analog Input (type: Analog, priority: 10000, availability unknown)
	Active Port: analog-input
	Formats:
		pcm

Well there is it.

Hard to believe though,since it looks pretty functional. Explain this more, so one can understand what you mean.

Here I see only an analog input and, as I understand it, this is my 3.5 jack input, but this is not a built-in microphone, and I cannot select anything other than a jack. Screenshot:

I found a similar problem here, but it’s still difficult for me to understand what I need to do/try to do: 216270 – Builtin microphone doesn't work on ASUS Zenbook S 13 OLED 2022 (UM5302TA)

Alright and sorry. I guess just overread “builtin”. Sure that is your jack connection.

What basically is said here, is that you need to add your device to the quirk list and recompile the module.

Here is a good tutorial how you could do that: [HowTo] Build a (patched) kernel module

  • DMI_BOARD_VENDOR → Manufacturer
  • DMI_PRODUCT_NAME → Product Name

Get it from here: sudo dmidecode -t baseboard

1 Like

Today\tomorrow I will try to do this and report the results.
Perhaps you can suggest a good utility for creating a full backup of my system, which will allow me to restore the system if I do something incorrectly? Because the microphone is the last thing left to configure in my system)) and I spent about a week setting it up.
And one more additional question - will I have to recompile for the subsequent new Linux kernel?

Thank you for your help.

Allright. :+1:

No. You need the full source of the kernel, but since the exact version match, you need only compile the module. You will use the PKGBUILD of Manjaro.

Hi! So, in a step from [HowTo] Build a (patched) kernel module after i do make --directory="$srcDir" M=sound/soc/amd/yc/ I can’t find the acp6x-mach.ko file and the command output is as follows:

make: Entering directory '/home/sava/MyKernel/linux66/src/linux-6.6'
  CC [M]  sound/soc/amd/yc/pci-acp6x.o
  LD [M]  sound/soc/amd/yc/snd-pci-acp6x.o
  CC [M]  sound/soc/amd/yc/acp6x-pdm-dma.o
  LD [M]  sound/soc/amd/yc/snd-acp6x-pdm-dma.o
  CC [M]  sound/soc/amd/yc/acp6x-mach.o
  LD [M]  sound/soc/amd/yc/snd-soc-acp6x-mach.o
  MODPOST sound/soc/amd/yc/Module.symvers
  CC [M]  sound/soc/amd/yc/snd-pci-acp6x.mod.o
  LD [M]  sound/soc/amd/yc/snd-pci-acp6x.ko
  BTF [M] sound/soc/amd/yc/snd-pci-acp6x.ko
Skipping BTF generation for sound/soc/amd/yc/snd-pci-acp6x.ko due to unavailability of vmlinux
  CC [M]  sound/soc/amd/yc/snd-acp6x-pdm-dma.mod.o
  LD [M]  sound/soc/amd/yc/snd-acp6x-pdm-dma.ko
  BTF [M] sound/soc/amd/yc/snd-acp6x-pdm-dma.ko
Skipping BTF generation for sound/soc/amd/yc/snd-acp6x-pdm-dma.ko due to unavailability of vmlinux
  CC [M]  sound/soc/amd/yc/snd-soc-acp6x-mach.mod.o
  LD [M]  sound/soc/amd/yc/snd-soc-acp6x-mach.ko
  BTF [M] sound/soc/amd/yc/snd-soc-acp6x-mach.ko
Skipping BTF generation for sound/soc/amd/yc/snd-soc-acp6x-mach.ko due to unavailability of vmlinux
make: Leaving directory '/home/sava/MyKernel/linux66/src/linux-6.6'

Please tell me what could be the problem?

modinfo snd-soc-acp6x-mach
ls  -l /lib/modules/$(uname -r)/kernel/sound/soc/amd/yc/

Hi!

 modinfo snd-soc-acp6x-mach                                       ✔ 
filename:       /lib/modules/6.6.2-1-MANJARO/kernel/sound/soc/amd/yc/snd-soc-acp6x-mach.ko.zst
alias:          platform:acp_yc_mach
license:        GPL v2
author:         Vijendar.Mukunda@amd.com
srcversion:     6CC41D28D7C6491F33221B6
depends:        snd-soc-core
retpoline:      Y
intree:         Y
name:           snd_soc_acp6x_mach
vermagic:       6.6.2-1-MANJARO SMP preempt mod_unload 
sig_id:         PKCS#7
signer:         Build time autogenerated kernel key
sig_key:        70:63:B5:E4:FE:47:76:99:D9:7C:BE:B8:FF:5E:21:0C:17:45:DE:97
sig_hashalgo:   sha512
signature:      30:64:02:30:4B:31:6A:F9:52:3C:CF:E5:FA:81:7B:E4:29:B1:06:76:
		82:0A:4D:5E:4B:C5:E1:E1:ED:66:BA:91:02:2C:EE:19:D9:BB:52:8E:
		90:0D:D6:F1:FC:9D:C7:9C:1A:4A:7D:B7:02:30:2F:26:C1:BE:24:09:
		89:33:DF:ED:5F:B0:74:8B:90:98:74:9E:8B:9A:B1:7D:B5:97:B5:D2:
		C1:6F:54:51:92:77:71:1C:F5:40:60:D4:6E:B8:DF:9A:EF:4B:90:8A:
		89:D5
ls -l /lib/modules/$(uname -r)/kernel/sound/soc/amd/yc/          ✔ 
total 40
-rw-r--r-- 1 root root 15433 лис 20 13:42 snd-acp6x-pdm-dma.ko.zst
-rw-r--r-- 1 root root  8078 лис 20 13:42 snd-pci-acp6x.ko.zst
-rw-r--r-- 1 root root 13652 лис 20 13:42 snd-soc-acp6x-mach.ko.zst

Well, the problem was that I needed to get some sleep and read the instructions more carefully. Everything works and thank you very much Mr. Elmo Sputterspark for help. You helped me out a lot.

Screenshot with a working microphone on 6.6.3-1 kernel! wiiiiii!:

@Vyacheslav Glad I could help you a bit out. Keep in mind that you need to patch and compile this module after every kernel upgrade. It would far better to report it to the kernel devs, so that they add the quirk/exception upstream: https://bugzilla.kernel.org/

Yes, of course, I’m already reading how to properly format and send a patch…

This topic was automatically closed 36 hours after the last reply. New replies are no longer allowed.