CachyOS / CachyOS/CachyOS-Settings

Electrical interference/buzzing on AMD Ryzen AI (Strix/Krackan) due to forced audio power management

Open
#204 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Shell
Stars
443
Forks
76
PR merge metrics
No merged PRs in 30d

Description

## Hardware Information
- **Laptop:** Lenovo IdeaPad 5 Pro
- **Processor:** AMD Ryzen AI 350 (Strix/Krackan platform)
- **Audio Controllers:**
- `1002:1640` Radeon High Definition Audio Controller
- `1022:15e3` Ryzen HD Audio Controller
- `1022:15e2` Audio Coprocessor (ACP)
- **GPU:** `1002:1114` Radeon 840M / 860M Graphics (shared PCI bus with audio)
- **Storage:** NVMe SSDs (WD SN7100S / Lexar NM790)
- **OS:** CachyOS

## Description
On this specific hardware (and likely other Strix/Krackan based laptops), the audio controllers and the GPU share the same PCI bus/root complex. Due to this proximity, there is significant electrical interference (buzzing/crackling) audible through the speakers whenever there is GPU or NVMe activity, even if the system volume is muted.

The issue is exacerbated by the current implementation of [20-audio-pm.rules](https://github.com/CachyOS/CachyOS-Settings/blob/master/usr/lib/udev/rules.d/20-audio-pm.rules) introduced in [PR #174](https://github.com/CachyOS/CachyOS-Settings/pull/174).

## The Problem with `20-audio-pm.rules`
The rule explicitly disables power saving for `snd_hda_intel` when the device is on AC power:
`echo 0 > /sys/module/snd_hda_intel/parameters/power_save`

By forcing the audio controller to stay "awake" (D0 state) while idle, it remains electrically sensitive to the activity on the shared PCI bus. This results in a constant, annoying buzzing sound during normal desktop use (scrolling, GPU rendering, disk I/O).

## Solution / Mitigation
Enabling aggressive power saving allows the audio controller to enter the `suspended` state when not in use, which reduces the audible interference by approximately 10x (making it almost unnoticeable).

### Applied Workaround:
1. **Kernel Parameters:** Added `snd_hda_intel.power_save=1 snd_hda_intel.power_save_controller=Y` to the kernel cmdline.
2. **Udev Override:** Masked the conflicting rule:
`sudo ln -s /dev/null /etc/udev/rules.d/20-audio-pm.rules`

When the card is active (playing audio), the interference is still present but is mostly masked by the actual audio output. The critical improvement is achieving silence when the audio system is idle and there's GPU activity.

## Recommendation for CachyOS
While `20-audio-pm.rules` was intended to prevent "popping" sounds on some hardware, it causes regressions on newer AMD platforms with shared PCI topologies.

I suggest either:
1. Making this rule more selective based on hardware/vendor IDs.
2. Adding an option to easily opt-out or providing a blacklist for platforms known to suffer from EMI when the audio codec is kept active.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.