Lenovo Yoga Pro 7 14ASP9 (83HN): dead "Digital Microphone" + Brave/Chrome can't see the working mic, fix
Hardware: Yoga Pro 7 14ASP9 (83HN), Ryzen AI 9 365, Realtek ALC287 Tested on: Fedora 44, kernel 7.2.9, PipeWire/WirePlumber 1.6.10, KDE Plasma 6.7
Symptoms
- Two internal mics show up: "Digital Microphone" (Mic1) and "Stereo Microphone" (Mic3)
- Mic1 is dead. Apps open it and record silence
- The system keeps picking Mic1 as the default, because the UCM profile (
/usr/share/alsa/ucm2/HDA/HiFi-acp.conf) gives it priority 100. Raising Mic3's priority or using wpctl set-default doesn't stick
- Discord and Zoom work if you pick "Stereo Microphone" manually, but Brave/Chrome don't list it at all (
NotFoundError: Requested device not found)
Fix: two config files in your home folder, no system files edited
1. Disable the dead mic. Check the name first with pactl list sources short, then save as ~/.config/wireplumber/wireplumber.conf.d/52-disable-dmic.conf:
monitor.alsa.rules = [
{
matches = [
{ node.name = "alsa_input.pci-0000_62_00.6.HiFi__Mic1__source" }
]
actions = {
update-props = {
node.disabled = true
}
}
}
]
2. Create a virtual mic on top of the working one so Chromium-based browsers accept it. Save as ~/.config/pipewire/pipewire.conf.d/60-laptop-mic.conf:
context.modules = [
{
name = libpipewire-module-loopback
args = {
node.description = "Laptop Mic"
audio.position = [ FL FR ]
capture.props = {
node.name = "laptop_mic_capture"
target.object = "alsa_input.pci-0000_62_00.6.HiFi__Mic3__source"
node.passive = true
}
playback.props = {
node.name = "laptop_mic"
media.class = "Audio/Source"
priority.session = 3000
}
}
}
]
priority.session = 3000 makes it the default automatically, and node.passive = true means the real mic only opens while something is recording.
3. Restart audio and your browser:
systemctl --user restart pipewire wireplumber
"Laptop Mic" should now be the default and work everywhere, including Brave.
Optional: if new audio streams start too loud or clip, save this as ~/.config/wireplumber/wireplumber.conf.d/99-default-volume.conf to start them at 95%:
wireplumber.settings = {
node.stream.default-volume = 0.95
}
Notes
- Device names may differ on your machine, or change after a kernel/UCM update. If the mic goes silent, recheck with
pactl list sources short and update both files.
- If
wpctl status suddenly shows no devices after a system update, check that the pipewire and wireplumber versions match in its client list. A partial update can make wpctl misreport, and a reboot fixes it.
- Don't edit the system UCM files. Updates overwrite them, and with Mic1 disabled they don't matter anyway.
Why Chromium rejects the raw Mic3 device is still unknown. If anyone figures it out, please reply.
Github gist linked below (will continue to be updated):
https://gist.github.com/AdyanshSahai/103812edf34f2830d4335e51244d0ef9