Laptop13 Ryzen AI 340 internal mic in Fedora42 doesn't work

Which Linux distro are you using?

Fedora 42 Workstation latest up-to-date w/ GNOME

Which kernel are you using?

6.16.8-200.fc42

Which BIOS version are you using?

LFK30.03.04

Which Framework Laptop 13 model are you using?

AMD Ryzen AI 340

Just got my new DIY Laptop 13 a few days ago and installed Fedora 42 and almost everything has been great, with one exception: the built-in mic doesn’t work in a usable way. Framework’s own audio-diagnostic.sh script shows there are three input choices:

3) Available audio devices
Output devices (Sinks):
  • 57. Family 17h/19h/1ah HD Audio Controller Speaker [vol: 1.00] ← DEFAULT

Input devices (Sources):
  • 58. Family 17h/19h/1ah HD Audio Controller Headset Mono Microphone [vol: 0.75] ← DEFAULT
  • 59. Family 17h/19h/1ah HD Audio Controller Digital Microphone [vol: 1.00]
  • 66. Laptop Webcam Module (2nd Gen) (V4L2) ← DEFAULT

Fedora’s sound settings app shows the same:

The default (first) one – headset mono microphone – does nothing. If I switch to the second one (digital microphone), I still get nothing. If I switch to the third input choice, something bad immediately happens – I suddenly lose output devices.

If I ignore that (and the corresponding fact that I can no longer hear anything), I can record audio with the mic. Then I can do systemctl --user restart wireplumber to get output back and listen to what I recorded, but of course that resets the input device.

Doing something like journalctl -f --user -u wireplumber -u pipewire -u pipewire-pulse before changing the input shows no new logs, but one error/warning is always shown when restarting wireplumber:

Sep 30 22:22:42 fedora wireplumber[7048]: wp-device: SPA handle 'api.alsa.acp.device' could not be loaded; is it installed?
Sep 30 22:22:42 fedora wireplumber[7048]: s-monitors: Failed to create 'api.alsa.acp.device' device
Sep 30 22:22:42 fedora wireplumber[7048]: [1:00:01.342764699] [7048]  INFO Camera camera_manager.cpp:327 libcamera v0.4.0

I’d appreciate any help or suggestions. Thanks!

PS: As an aside, there’s a flaw in Framework’s audio-diagnostic.sh from this article. Take a look:

✅ Default Output: Family 17h/19h/1ah HD Audio Controller Speaker (ID: 44)
✅ Default Input: Family 17h/19h/1ah HD Audio Controller Digital Microphone (ID: 42)

Output Device Technical Details:
ℹ️    • Connection: Analog/Built-in
awk: cmd. line:1: /Name:.*Family 17h/19h/1ah HD Audio Controller Speaker/{flag=1} flag && /^$/{flag=0} flag
awk: cmd. line:1:                                                        ^ syntax error

Of course, it’s not correctly expecting and escaping the forward-slashes for that awk command, e.g.:

$ diff audio-diagnostic.sh.orig audio-diagnostic.sh
349c349,350
<         local sink_info=$(pactl list sinks 2>/dev/null | awk "/Name:.*${DEF_SINK_NAME//./\\.}/{flag=1} flag && /^$/{flag=0} flag")
---
>         local def_sink_name=$(sed -e 's@\.@\\.@g' -e 's@/@\\/@g' <<<$DEF_SINK_NAME)
>         local sink_info=$(pactl list sinks 2>/dev/null | awk "/Name:.*${def_sink_name}/{flag=1} flag && /^$/{flag=0} flag")

try to log out and log-in again, I have been in the same situation on Bazzite.

1 Like

Thanks for the suggestion, but I have definitely tried different users and rebooted multiple times.

I have also had this happen intermittently, also on a 13in laptop with a Ryzen AI motherboard, though it is currently not happening (which is nice). I am pretty sure that a reboot is what “resolved” it most recently. The input that actually seems to work is Internal Stereo Microphone, which is of course not useful when selecting it removes all of the real output devices.

I am having the EXACT same issue as you and have the exact same laptop and os setup. @framework please help us fix this

Hi, had the same issue.

In your first screenshot, under configuration recording device choose “Play HiFi Quality Music (Mic1, Mic2, Speaker). That solved it for me.

2 Likes

Also seeing this on a Ryzen AI 350 running Arch. The Stereo input device is missing entirely and the Digital one does not work.

Hi everyone,

I just solved this on my FW 13 (Ryzen AI) that runs Arch by adding this config:
.config/wireplumber/wireplumber.conf.d/alsa-config.conf

monitor.alsa.properties = {
  alsa.use-ucm = false
}

You can read more about the issue here (5.1.1): PipeWire - ArchWiki

I’ve had this issue from the start, but most of the time I use a headset so hasn’t bothered me too much.

But nice to get it to work! I hope this can help.

2 Likes

As far as I understand, dmic is totally broken.
You can disable it with:
blacklist snd_soc_dmic
in a config fine in /etc/modprobe.d

and boom, it goes back to the old alsa and it works.
you can see in KDE that the profiles become more like Analog * and Pro Audio instead of mic1, mic2 etc…

So this is YET another quirk I needed to fix on Arch. so, SO many things are broken.
I have half a dozen files in modprobe.d to disable stuff the firmware doesn’t present well and 0 progress on any of those for the past 6 months on the AI 300, I feel like on an abandoned platform at that point.

2 Likes

@Guillaume_Binet : mind posting all the modprobe options you have found effective?


=== ./disable_ucsi_acpi.conf ===
# This is probably a firmware bug from Framework
# This is related to Power Delivery handling
blacklist ucsi_acpi

=== ./disable-dmic.conf ===
# This disable the digital mic array feature, it is not well supported yet
# It gets recognized but not well routed (?) and totally silent, works perfectly under windows, fails here so this reverts back to old ALSA mono mic
blacklist snd_soc_dmic
blacklist snd_acp_legacy_mach
blacklist snd_acp_mac

=== ./disable-uas.conf ===
# if you let the v1 framework branded storage module with uas, you'll have a bad day with your entire USB chain crashing
options usb-storage quirks=13fe:6500:u

=== ./blacklist-cros_ec.conf ===
# it has been broken for a long time but the default fn handling more or less works.
blacklist cros_ec_lpcs


==============

Kernel command line:
root=LABEL=root resume=PARTLABEL=swap amdgpu.dcdebugmask=0x10 quiet splash loglevel=3 audit=0 rd.systemd.show_status=auto rd.udev.log_level=3 vt.global_cursor_default=0 initrd=amd-ucode.img 
initrd=initramfs-linux-cachyos.img 

But still: forget about hibernation, a lot of usb issues (USB 2 devices loop crashing, PD not getting the right way ie a battery charging instead of powering) and all the ports are not equal like on the intel version so move stuff around to be maybe lucky.

2 Likes

Thank you!

I found a fix that worked for me.

First I installed pavucontrol

sudo dnf install pavucontrol

Then in the sound settings, I was able to select the second profile, which allowed me to select the correct microphone labeled “…internal…” as the digital and headphone ones don’t work for me.

KDE has this option under its built in volume control application.

I have found that my mic does not work on Arch Linux if I start the laptop with the mic muted physically. Therefore, I do not physically mute my microphone.

I had this issue under Manjaro, but it was working for me under a liveboot Fedora, on a Ryzen AI 9 HX 370 FW13, which is how I determined it was a software and not hardware issue. I thought it may have been an oopsie on my part when I upgraded my mainboard from the previous AMD mainboard - I never would have guessed it to be a fundamental flaw with the, I guess firmware?

I tried to disable DMIC / fiddle with all these settings via config only, but nothing managed to prevent this from appearing in journalctl or systemctl status: SPA handle ‘api.alsa.acp.device’ could not be loaded; is it installed?

In the end, I resolved following Guillaume_Binet’s advice, and created /etc/modprobe.d/blacklist-dmic.conf, into which I put blacklist snd_soc_dmic. I then rebooted, and my microphone worked again with no other configuration (other than lowering the capture volume because it was way too high).

Same issue here on Fedora 43 with kernel 6.17.12 and AMD Ryzen AI 5 340.

I did some deep debugging and found the root cause: the digital microphone is outputting garbage data at the ALSA level. When recording directly via arecord -D plughw:2,0, the captured audio contains alternating min/max values (0x0080 / 0xff7f) instead of actual audio samples. ffmpeg’s volumedetect shows mean_volume: -0.0 dB, max_volume: 0.0 dB - full-scale clipping with no actual audio content.

What I tried:

  • Setting alsa.use-ucm = false in WirePlumber config - changed profile names but DMIC still outputs garbage
    • Blacklisting snd_soc_dmic module - this removes the broken device entirely but doesn’t fix it
      • Various ALSA mixer settings - no effect (DMIC is on card 2/acp-pdm-mach, separate from the ALC285 codec)
    • The snd_acp_pdm driver appears to be broken for the Ryzen AI 300 series. This affects multiple distros - NixOS users reported the same issue after kernel 6.16.x updates (see nixos-hardware #1603).
  • Is there any timeline for a fix from Framework? This is a significant hardware defect that makes the built-in microphone completely unusable.

Got it working on Fedora 43 / Kernel 6.18.6 / Ryzen AI 9 HX 370

I was experiencing the same issue on my Framework 13 AMD with:

  • Fedora 43 (Forty Three)

  • Kernel 6.18.6-200.fc43.x86_64

  • AMD Ryzen AI 9 HX 370 w/ Radeon 890M

The UCM disable fix worked for me. The key is creating a WirePlumber config to disable UCM:


sudo mkdir -p /etc/wireplumber/wireplumber.conf.d/

sudo tee /etc/wireplumber/wireplumber.conf.d/50-disable-ucm.conf << 'EOF'

monitor.alsa.properties = {

alsa.use-ucm = false

}

EOF

systemctl --user restart wireplumber pipewire pipewire-pulse

After this, my audio profile switched from HiFi (Headset, Mic1, Speaker) to output:analog-stereo+input:analog-stereo, and the built-in DMIC started working properly.

I wrote up the full steps in a blog post if anyone needs a detailed walkthrough: Fixing the Built-in Microphone on Framework 13 AMD Laptops

1 Like