How to have Pulseaudio load card specified by an invariant value when starting?

I have this in my

load-module module-alsa-card device_id=4 name="Some_card"
set-card-profile alsa_card.Some_card output:iec958-stereo+input:mono-fallback
load-module module-alsa-card device_id=3 name="Another_card"
set-card-profile alsa_card.Another_card input:iec958-stereo

However, sometimes the device_id changes and pulseaudio doesn’t start, probably because the profiles aren’t available. How can I specify that I want a specific card (like a pci path, /dev/… or /sys/…) and not a device_id that can change everytime I reboot?
The docs and my attempts to not use device_id suggest this is not possible, so what are my alternatives?

I’ve considered having a script that starts pulseaudio at boot and uses aplay -l | grep to get the device_id and use pacmd to setup pulseaudio to my desires, but then it can shutdown when not in use and I have to manually run that script.

I don’t think I can use module-detect because this is a multi-seat computer, so I have two instances of pulseaudio running at any time and each server has it’s designated cards. The first server to start would grab all the cards.

Read more here: Source link