I’m here to help people solve a similar issue, with speakers not being selected, and the steps I took.
The Symptoms:
-
You have to manually run scripts or change settings (
alsamixer,wpctl) every single time you reboot. -
PipeWire/WirePlumber forgets your volume levels or default device.
-
Your PC sometimes outputs sound to your Monitor (HDMI/DP) instead of your Speakers/Headphones.
The Cause: This is usually a Race Condition. You likely have two audio devices (e.g., Motherboard Audio + GPU HDMI Audio) that use the same driver (usually snd_hda_intel). Because they share a driver name, the Linux kernel assigns “Card 0” to whichever one wakes up first. If your GPU wakes up faster than your Motherboard, your sound settings get applied to the wrong device.
Step 1: Confirm the Diagnosis
Open your terminal and run:
Bash
cat /proc/asound/modules
-
If you see
snd_hda_intellisted twice (e.g., on line 0 AND line 1), you have this problem. -
If you see different driver names, this fix might not apply to you.
Step 2: Create the “Seating Chart” (The Config)
We need to tell the kernel: “Always make the Motherboard index=0 and the GPU index=1, no matter who wakes up first.”
Run this command to create the rule:
Bash
echo "options snd_hda_intel index=0,1" | sudo tee /etc/modprobe.d/sound_fix.conf
(Note: If you want to completely DISABLE the second device instead, use enable=1,0 instead of index=0,1).
Step 3: Bake the Fix (The Important Part)
Crucial: The kernel loads audio drivers before it looks at your hard drive. You must “bake” the config file from Step 2 into the Boot Image (Initramfs).
Choose the command that matches your Boot Manager:
Option A: You use Mkinitcpio & Limine (Common for CachyOS)
If you are using the Limine bootloader (you’ll see a simple menu at startup), CachyOS uses a special wrapper to ensure the boot images are placed correctly. Run:
Bash
sudo limine-mkinitcpio
(If that command isn’t found, run sudo mkinitcpio -P and answer Y when it asks to run the Limine hook).
Option B: You use Standard Mkinitcpio (Standard Arch/EndeavourOS)
If you are on a standard Arch install using GRUB or systemd-boot with mkinitcpio: Run:
Bash
sudo mkinitcpio -P
Option C: You use Dracut (Default CachyOS/Fedora)
If you are using Dracut (you’ll often see “Dracut” text during boot): Run:
Bash
sudo dracut-rebuild
(If that fails or command not found, use the raw command: sudo dracut --force).
Step 4: Reboot and Verify
Restart your computer.
-
Open a terminal and type
aplay -l. -
Check
card 0: It should always be your generic/motherboard audio (e.g., ALC1220, Starship/Matisse), andcard 1should be your GPU (Nvidia/AMD). -
Adjust your volume once. Reboot again. It should stick this time.