Make PulseAudio prefer external audio device

Solution 1:

Also of use, is loading the module module-switch-on-connect. If you add the line:

load-module module-switch-on-connect

to /etc/pulse/default.pa (as su, of course), this should happen automatically without having to call a script.

The documentation for module-switch-on-connect has a more detailed description of how this works.

Solution 2:

In theory, this should be handled by 'PulseAudio Volume Control'. There is a button to select a device as the default device, though imho poorly titled as 'Set as fallback'. More info about this feature here: http://ubuntuguide.org/wiki/Ubuntu_Oneiric_Hardware

Unfortunately the feature doesn't work. As soon as a USB audio device is unplugged the setting as default device is annoyingly forgotten, despite the fact that all the other settings such as volume, balance, etc. are retained next time the device is plugged in. In your case, if the device is not being removed this feature may actually work for you. If you are missing the app, just install the package 'pavucontrol'

I use a USB headset for calling and had to make a script using 'pacmd' to enable or disable it as needed to avoid going through the GUI, This allowed me to to just add a few launcher items to switch back and forth as needed. In my case, my script to enable the headset is:

#!/bin/bash
pacmd "set-default-sink alsa_output.usb-Logitech_Logitech_USB_Headset-00-Headset.analog-stereo"
pacmd "set-default-source alsa_input.usb-Logitech_Logitech_USB_Headset-00-Headset.analog-mono"

And to revert to my internal audio:

#!/bin/bash
pacmd "set-default-sink alsa_output.usb-Logitech_Logitech_USB_Headset-00-Headset.analog-stereo"
pacmd "set-default-source alsa_input.usb-Logitech_Logitech_USB_Headset-00-Headset.analog-mono"

'pacmd' is fairly easy to use, just run it from terminal and enter 'help' for more info.

Solution 3:

I had a similar answer to what Sam Whitlock said, except I had to edit the file default.pa in ~/.config/pulse. Just adding the load-module module-switch-on-connect worked!

Running Ubuntu 17.04 with a JieLi AC4100/IQ Sound Bluetooth Headset (using USB though).