39

How do I set the default profile that is used after each boot, in PulseAudio?

When I boot, sound doesn't work. If I open the PulseAudio Volume Control app, and go to the Configuration pane and select "Analog Surround 4.0 Output" from the Profile drop-down menu, then sound works again. However this only lasts until the next reboot.

How do I configure the system to use that profile in the future after reboots?

4 Answers 4

55

Add the following to /etc/pulse/default.pa:

set-card-profile <cardindex> <profilename>

How do we figure out what to use as cardindex and as profilename? Here's one way. Configure the card so everything is working. The cardindex will usually be 0, but you can find it by running pacmd list-cards and looking at the line index: .... To find the profilename, use

pacmd list-cards | grep 'active profile'

The name of the current profile should appear in the output. Remove the angle brackets (the < and >).

You can test your configuration by running

pactl set-card-profile <cardindex> <profilename>

from the command line to see if it sets the profile correctly, then add it to /etc/pulse/default.pa.

Since the index name is dynamic (it can change your PCI device index if you boot with a USB audio device plugged in), you could use <symbolic-name> instead of <index> (if you run pacmd list-cards, the symbolic name is right below the index). Also, the command might fail if the device is missing when starting pulseaudio so it might worth to wrap the command with an .ifexists clause:

.ifexists <symbolic-name>
pactl set-card-profile <symbolic-name> <profilename>
.endif
7
  • 2
    If you have multiple audio devices whose ordering is not fixed, you can also use udev rules to configure a Pulseaudio profile for a device. This allows identifying the device by vendor/product IDs, serial number, or by other means. The rule element for setting the Pulseaudio profile is ENV{PULSE_PROFILE_SET}="<profilename>"
    – telcoM
    Commented Aug 15, 2018 at 6:37
  • 1
    suggested an edit: index is dynamic, and in my case changes if I boot with the USB audio plugged in.
    – maxadamo
    Commented Jun 25, 2019 at 9:01
  • 3
    This however does not work when a device is hotplugged (i.e.: a bluetooth headset for instance). Running pactl... works, but setting the same command into /etc/pulse/default.pa does not have any effect... I'm trying to set headset_head_unit profile by default instead of a2dp_sink for my headset unit. Commented Feb 15, 2021 at 8:43
  • One might also want to check /etc/pulse/daemon.conf file to see if /etc/pulse/default.pa is used as default config and uncomment it if it's not and then reload pulseaudio with pulseaudio -k. Commented May 26, 2021 at 16:21
  • It's so complicated, man, what's the difference between: pactl set-card-profile and pacmd set-default-sink Commented Oct 12, 2022 at 15:15
1

Ended up writing this to help change the profiles. Only worried about bluetooth but you can edit it to your needs to select other sources in pactl list cards.

index=$(pactl list cards | grep -B1 "bluez_card" | grep -oP '(?<=Card #)\d+')

pactl set-card-profile $index a2dp-sink
# pactl set-card-profile $index off
# pactl set-card-profile $index headset-head-unit
0

Inserting the command line in /etc/pulse/default.pa doesn't work for me; it caused an error.

I've just worked around putting a command

pactl set-card-profile <symbolic-name> <profilename>

in the autostart task of linux, and it works.

0

I just wanted to add another way to do this that is much simpler, but may only work under certain desktop environments:

Under KDE Plasma, I could open my system settings GUI, navigate to the "Audio" pane (under "Hardware"), and change the profile from a drop-down menu. This change was persistent after rebooting. No need to edit weird files, or manually determining the card-name and desired profile.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .