Internal microphone saturates at 100% volume on ASUS TUF Gaming A15 (Realtek ALC256)
alsa-project/alsa-ucm-conf issue #790 was opened from Giossue: ### Summary The internal microphone of the ASUS TUF Gaming A15 (FA506QM) saturates/distorts when the system capture volume is set above ~50%. The ALSA hardware volume range is 0–63 steps, where step 63 corresponds to approximately +30 dB. At step 31 (~0 dB / ~49% physical gain) the microphone sounds clean. Currently, the default profile exposes the full 0–63 step range to the UI volume slider, so 100% system volume maps to +30 dB physical gain, clipping the built-in microphone capsule. I am opening this issue to request an upstream fix (such as a UCM profile or hardware quirk) for this laptop model, so the limitation is applied correctly at the ALSA level for all Linux distributions. ### Environment - **Hardware:** ASUS TUF Gaming A15 (FA506QM) - **Audio codec:** Realtek ALC256 (`HDA:10ec0256,10431682,00100002`) - **Distribution:** CachyOS / Arch Linux base - **Kernel:** 6.11-cachyos (or specify exact version) - **PipeWire:** 1.0.0 (or specify exact version) - **Desktop:** KDE Plasma 6, Wayland ### Steps to reproduce 1. Boot the laptop on a fresh Linux session. 2. Open any application that uses the internal microphone (Discord, WebRTC, Audacity, etc.). 3. Set the microphone volume to 100% in the system mixer. 4. Record or monitor the microphone. ### Expected behavior At 100% UI system volume, the microphone should reach a clean, non-saturating gain level suitable for the built-in mic capsule (hardware step 31 / 0 dB). ### Actual behavior The audio is heavily distorted/clipped due to excessive hardware gain. Lowering the system volume to around 50% makes it sound clean. ### ALSA hardware details ```bash $ amixer -c 2 sget Capture Simple mixer control 'Capture',0 Capabilities: cvolume cswitch Capture channels: Front Left - Front Right Limits: Capture 0 - 63 Front Left: Capture 63 [100%] [30.00dB] [on] Front Right: Capture 63 [100%] [30.00dB] [on] ``` - Step 0 ≈ -96 dB (effectively muted) - Step 31 ≈ 0 dB / ~49% physical gain (clean level) - Step 63 ≈ +30 dB / 100% physical gain (saturates) ### User-space Workaround used I managed to solve this locally using PipeWire/PulseAudio ALSA Card Profiles, but I understand this should ideally be handled by ALSA UCM or kernel quirks: 1. Custom ALSA Card Profile in `/etc/alsa-card-profile/mixer/profile-sets/default.conf`: ```ini [DecibelFix Capture] db-values = 0:-96.00 31:0.00 ``` 2. WirePlumber rule in `~/.config/wireplumber/wireplumber.conf.d/mic-ignore-db.conf`: ```lua monitor.alsa.rules = [ { matches = [ { device.name = "alsa_card.pci-0000_06_00.6" } ] actions = { update-props = { api.alsa.ignore-dB = true } } } ] ``` Result after this workaround: 100% UI volume maps to step 31/63 (~49% physical hardware gain). The microphone is completely clean and the whole UI slider remains usable. ### Suggested fix Implement a UCM2 profile or hardware database quirk for the ASUS TUF Gaming A15 (`HDA:10ec0256,10431682,00100002`) that correctly limits the `Capture` maximum to 0 dB, so upper layers (WirePlumber/PulseAudio) map 100% volume safely. ### Additional information I am willing to test any UCM configurations or fixes. My `alsa-info.sh` output is: https://alsa-project.org/db/?f=dc8efae429325ead7103381ee34884c5f9d735e5 Issue URL : https://github.com/alsa-project/alsa-ucm-conf/issues/790 Repository URL: https://github.com/alsa-project/alsa-ucm-conf
participants (1)
-
GitHub issues - opened