Audio doesn't switch to newly-connected bluetooth speaker

I just did a fresh Manjaro/Xfce install on a laptop that used to run Arch without issues. Pretty much default settings. I’ve never used Manjaro before, but have used Arch forever.

Manjaro recognises and connects to my paired bluetooth speaker when it is turned on, but PulseAudio persists in playing audio through the internal speakers. I have to open pavucontrol and set my bluetooth speaker as fallback to force the audio to switch. Under Arch, it would automatically switch outputs, as desired.

The same does not happen when I connect wired headphones. PulseAudio appears to replace the internal speaker device with the headphone device, and the headphones work as intended. With the bluetooth speaker, PulseAudio creates a second output device, but doesn’t switch to it.

The log when the bluetooth speaker connects does show an error, but I suspect it isn’t particularly relevant:

Nov 18 08:26:08 cutter systemd[889]: Reached target Bluetooth.
░░ Subject: A start job for unit UNIT has finished successfully
░░ Defined-By: systemd
░░ Support: https://forum.manjaro.org/c/support
░░ 
░░ A start job for unit UNIT has finished successfully.
░░ 
░░ The job identifier is 247.
Nov 18 08:26:10 cutter bluetoothd[706]: /org/bluez/hci0/dev_00_1D_DF_A1_7D_85/sep1/fd0: fd(39) ready
Nov 18 08:26:10 cutter rtkit-daemon[976]: Supervising 3 threads of 1 processes of 1 users.
Nov 18 08:26:10 cutter rtkit-daemon[976]: Successfully made thread 1288 of process 975 owned by '1000' RT at priority 5.
Nov 18 08:26:10 cutter rtkit-daemon[976]: Supervising 4 threads of 1 processes of 1 users.
Nov 18 08:26:10 cutter pulseaudio[975]: org.freedesktop.DBus.Properties.Get /org/bluez/hci0/dev_00_1D_DF_A1_7D_85/sep1/fd0 Volume failed: org.freedesktop.DBus.Error.InvalidArgs: No such property 'Volume'
Nov 18 08:26:10 cutter kernel: input: JBL Charge (AVRCP) as /devices/virtual/input/input34
Nov 18 08:26:10 cutter systemd-logind[497]: Watching system buttons on /dev/input/event16 (JBL Charge (AVRCP))
Nov 18 08:26:12 cutter kernel: logitech-hidpp-device 0003:046D:400A.0007: HID++ 2.0 device connected.
Nov 18 08:26:12 cutter upowerd[1107]: treating change event as add on /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2/0003:046D:C52B.0003/0003:046D:400A.0007/power_supply/hidpp_battery_1

Here are my laptop specs, if that helps:

System:    Kernel: 5.13.19-2-MANJARO x86_64 bits: 64 compiler: gcc v: 11.1.0 Desktop: Xfce 4.16.0 tk: Gtk 3.24.29
           info: xfce4-panel wm: xfwm 4.16.1 vt: 7 dm: LightDM 1.30.0 Distro: Manjaro Linux base: Arch Linux
Machine:   Type: Laptop System: ASUSTeK product: S550CA v: 1.0 serial: <filter>
           Mobo: ASUSTeK model: S550CA v: 1.0 serial: <filter> UEFI: American Megatrends v: S550CA.202 date: 11/23/2012
Battery:   ID-1: BAT0 charge: 0 Wh (0.0%) condition: 2.1/44.6 Wh (4.7%) volts: 15.1 min: 15.1 model: ASUSTeK K56--30
           type: Li-ion serial: N/A status: Charging cycles: 438
           Device-1: hidpp_battery_0 model: Logitech Wireless Mouse M325 serial: <filter> charge: 100% (should be ignored)
           rechargeable: yes status: Discharging
           Device-2: hidpp_battery_1 model: Logitech Wireless Keyboard K360 serial: <filter> charge: 100% (should be ignored)
           rechargeable: yes status: Discharging
CPU:       Info: Dual Core model: Intel Core i5-3317U bits: 64 type: MT MCP arch: Ivy Bridge rev: 9 cache: L2: 3 MiB
           flags: avx lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 13573
           Speed: 798 MHz min/max: 800/2600 MHz Core speeds (MHz): 1: 798 2: 1095 3: 1167 4: 808
Graphics:  Device-1: Intel 3rd Gen Core processor Graphics vendor: ASUSTeK driver: i915 v: kernel bus-ID: 00:02.0
           chip-ID: 8086:0166 class-ID: 0300
           Device-2: IMC Networks USB2.0 UVC HD Webcam type: USB driver: uvcvideo bus-ID: 1-1.2:4 chip-ID: 13d3:5195
           class-ID: 0e02 serial: <filter>
           Display: x11 server: X.Org 1.20.13 compositor: xfwm4 v: 4.16.1 driver: loaded: modesetting alternate: fbdev,vesa
           resolution: 1920x1080~60Hz s-dpi: 96
           OpenGL: renderer: Mesa DRI Intel HD Graphics 4000 (IVB GT2) v: 4.2 Mesa 21.2.3 compat-v: 3.0 direct render: Yes
Audio:     Device-1: Intel 7 Series/C216 Family High Definition Audio vendor: ASUSTeK driver: snd_hda_intel v: kernel
           bus-ID: 00:1b.0 chip-ID: 8086:1e20 class-ID: 0403
           Sound Server-1: ALSA v: k5.13.19-2-MANJARO running: yes
           Sound Server-2: JACK v: 1.9.19 running: no
           Sound Server-3: PulseAudio v: 15.0 running: yes
           Sound Server-4: PipeWire v: 0.3.38 running: no
Network:   Device-1: Qualcomm Atheros AR9485 Wireless Network Adapter vendor: AzureWave driver: ath9k v: kernel
           bus-ID: 02:00.0 chip-ID: 168c:0032 class-ID: 0280
           IF: wlp2s0 state: up mac: <filter>
           Device-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet vendor: ASUSTeK driver: r8169 v: kernel port: e000
           bus-ID: 03:00.2 chip-ID: 10ec:8168 class-ID: 0200
           IF: enp3s0f2 state: down mac: <filter>
Bluetooth: Device-1: IMC Networks Atheros AR3012 Bluetooth 4.0 Adapter type: USB driver: btusb v: 0.8 bus-ID: 1-1.1:6
           chip-ID: 13d3:3362 class-ID: e001 serial: <filter>
           Report: rfkill ID: hci0 rfk-id: 1 state: up address: see --recommends
Drives:    Local Storage: total: 698.64 GiB used: 13.19 GiB (1.9%)
           ID-1: /dev/sda vendor: Seagate model: ST750LM022 HN-M750MBB size: 698.64 GiB speed: 3.0 Gb/s type: HDD rpm: 5400
           serial: <filter> rev: 0001 scheme: GPT
Partition: ID-1: / size: 686.31 GiB used: 13.19 GiB (1.9%) fs: ext4 dev: /dev/sda2
           ID-2: /boot/efi size: 299.4 MiB used: 288 KiB (0.1%) fs: vfat dev: /dev/sda1
Swap:      Alert: No swap data was found.
Sensors:   System Temperatures: cpu: 39.0 C mobo: N/A
           Fan Speeds (RPM): cpu: 0
Info:      Processes: 173 Uptime: 7m wakeups: 8 Memory: 7.47 GiB used: 893.4 MiB (11.7%) Init: systemd v: 249 Compilers:
           gcc: N/A Packages: pacman: 1100 Shell: Bash v: 5.1.8 running-in: terminator inxi: 3.3.08

Welcome to Manjaro forum

PulseAudio is probably set to use onboard audio device as default-sink for audio playback

If the Bluetooth speaker is set as default-sink audio streams will try to play audio to Bluetooth device first, but will use onboard audio as a fallback device if Bluetooth device is not available

See this from Archwiki for how to find the name of the Bluetooth sink and set it to default-sink
PulseAudio/Examples/Set the default output sink - ArchWiki

Good idea, but I’m afraid that didn’t work. Although the default sink is now set to my bluetooth speaker, when the speaker connects, the audio doesn’t automatically switch to it.

The default-sink setting would not move an audio stream that is already playing to another output sink, or change a sink output that was configured by user

If you want all streams to be switched when device is connected to system, use this command to temporarily load additional PulseAudio module module-switch-on-connect

pacmd load-module module-switch-on-connect

If that works for your needs, the module can be added permanently to PulseAudio configuration file
default.pa

1 Like

That works perfectly, thanks!

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.