Unable to set kernel module parameters

audiokernel-modulespower-management

I recently updated from the 4.9 kernel to 4.14 only to find my speakers have a constant buzzing sound. I've narrowed the problem down to the power_save parameter of the snd_hda_intel module. When enabled there is a constant buzz, but disabled (set to 0) it is silent.

I've attempted to set the value by using both a modprobe.d and a kernel parameter. The problem is, the value is being overwritten/set by something in my system.

Forcefully reloading the module (default is off) or writing 0 to /sys/module/snd_hda_intel/parameters/power_save will temporarily solve the problem, until a reboot or wake from suspend. I cannot determine what is enabling the power_save feature. I've even tried using inotifywait and lsof to find the culprit, with no results (doesn't seem to work across sleep/wake cycles).

This is a desktop PC, so no battery hence no AC vs BAT modes or anything like pm-util. I'm using a GNOME version of Manjaro, but I'm sure solutions for any platform may help. The audio is an onboard ALC887-VD chipset if that's any help.

Can anybody suggest where else I might look or what could be causing this?

Update:

I've noticed my distribution shipped with TLP (similar to pm-utils) and that on the 4.14 kernel TLP always starts up in battery mode. My PC doesn't have a battery but does have wireless peripherals. I think this may be a bug within TLP itself.

Best Answer

Have you updated your initramfs file after changing /etc/modprobe.d/? It is possible that the sound driver modules are loaded early, and your modifications won't be available until the root filesystem is mounted - at which point it's too late as the modules have already been loaded from initramfs.

I'm not too familiar with Arch, but looks like mkinitcpio is the command you'll need for updating your initramfs file.

Related Question