Bluetooth headset stops playing sound after smartphone played sound

Hi there,

I have connected my bluetooth headset (Sennheiser Momentum 3) to both my PC and my smartphone and most things work fine. When a headset is connected to two devices at the same time, only one of them is able to play sound, which is ok. The device which wants to playback something will take over, play it’s sounds (like notifications on your phone or something) and pauses the playback of media on the other device, in my case my PC. After the phone finished playing, the PC should take the ‘audio focus’ back and resume playback over the headset.

On my Windows laptop this works flawlessly, on my Manjaro PC, there are issues. The PC won’t play anything over bluetooth after my phone played something.

Steps to reproduce:

  1. Switch on bluetooth headset, it connects to my PC and my phone.
  2. Play a sound or video file on my PC. The sound comes out of my bluetooth headset just fine.
  3. Open an app on my phone that plays sounds (like social media). My headset will switch audio playback from PC to phone automatically and play the app’s sound.
  4. I close the app and resume playback on my PC. Expected behavior: PC Sound will continue to play back on my headset. Actual behavior: No sound comes out of my headset whatsoever. No program is able to play sound.

To get sound back I have to turn off my headset and turn it back on again. What can I do to solve this?

Thanks. :slight_smile:

Here are some system infos:

inxi --admin --verbosity=7 --filter --width

System:
  Kernel: 5.16.7-1-MANJARO x86_64 bits: 64 compiler: gcc v: 11.1.0
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-5.16-x86_64
    root=UUID=6d51f798-065a-4a40-82b9-d421de0c0fe3 rw rootflags=subvol=@ quiet
    splash apparmor=1 security=apparmor
    resume=UUID=eb0c6a05-ccc5-464b-9ea4-8275587266c0 udev.log_priority=3
  Desktop: GNOME 41.3 tk: GTK 3.24.31 wm: gnome-shell dm: GDM 41.3
    Distro: Manjaro Linux base: Arch Linux
Machine:
  Type: Desktop System: Gigabyte product: X570 AORUS MASTER v: -CF
    serial: <superuser required>
  Mobo: Gigabyte model: X570 AORUS MASTER serial: <superuser required>
    UEFI: American Megatrends LLC. v: F33 date: 05/21/2021
Battery:
  Message: No system battery data found. Is one present?
Memory:
  RAM: total: 62.8 GiB used: 4.66 GiB (7.4%)
  RAM Report:
    permissions: Unable to run dmidecode. Root privileges required.
CPU:
  Info: model: AMD Ryzen 9 3950X bits: 64 type: MT MCP arch: Zen 2
    family: 0x17 (23) model-id: 0x71 (113) stepping: 0 microcode: 0x8701021
  Topology: cpus: 1x cores: 16 tpc: 2 threads: 32 smt: enabled cache:
    L1: 1024 KiB desc: d-16x32 KiB; i-16x32 KiB L2: 8 MiB desc: 16x512 KiB
    L3: 64 MiB desc: 4x16 MiB
  Speed (MHz): avg: 3691 high: 4398 min/max: 2200/4761 boost: enabled
    scaling: driver: acpi-cpufreq governor: performance cores: 1: 3600 2: 3600
    3: 3538 4: 3600 5: 3938 6: 3600 7: 3671 8: 3612 9: 3599 10: 3429 11: 3596
    12: 3592 13: 3425 14: 3640 15: 3950 16: 3608 17: 3999 18: 3516 19: 3653
    20: 3403 21: 4086 22: 4398 23: 4224 24: 3602 25: 4032 26: 3598 27: 3617
    28: 3596 29: 3595 30: 3611 31: 3600 32: 3613 bogomips: 224099
  Flags: 3dnowprefetch abm adx aes aperfmperf apic arat avic avx avx2 bmi1
    bmi2 bpext cat_l3 cdp_l3 clflush clflushopt clwb clzero cmov cmp_legacy
    constant_tsc cpb cpuid cqm cqm_llc cqm_mbm_local cqm_mbm_total
    cqm_occup_llc cr8_legacy cx16 cx8 de decodeassists extapic extd_apicid
    f16c flushbyasid fma fpu fsgsbase fxsr fxsr_opt ht hw_pstate ibpb ibs
    irperf lahf_lm lbrv lm mba mca mce misalignsse mmx mmxext monitor movbe
    msr mtrr mwaitx nonstop_tsc nopl npt nrip_save nx osvw overflow_recov pae
    pat pausefilter pclmulqdq pdpe1gb perfctr_core perfctr_llc perfctr_nb
    pfthreshold pge pni popcnt pse pse36 rapl rdpid rdpru rdrand rdseed rdt_a
    rdtscp rep_good sep sev sev_es sha_ni skinit smap smca sme smep ssbd sse
    sse2 sse4_1 sse4_2 sse4a ssse3 stibp succor svm svm_lock syscall tce
    topoext tsc tsc_scale umip v_spec_ctrl v_vmsave_vmload vgif vmcb_clean vme
    vmmcall wbnoinvd wdt xgetbv1 xsave xsavec xsaveerptr xsaveopt xsaves
  Vulnerabilities:
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: spec_store_bypass
    mitigation: Speculative Store Bypass disabled via prctl
  Type: spectre_v1
    mitigation: usercopy/swapgs barriers and __user pointer sanitization
  Type: spectre_v2 mitigation: Full AMD retpoline, IBPB: conditional, STIBP:
    conditional, RSB filling
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: AMD Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT]
    vendor: Tul driver: amdgpu v: kernel bus-ID: 0b:00.0 chip-ID: 1002:731f
    class-ID: 0300
  Display: wayland server: X.org 1.21.1.3 compositor: gnome-shell driver:
    loaded: amdgpu,ati unloaded: modesetting,radeon alternate: fbdev,vesa
    display-ID: 0 resolution: <missing: xdpyinfo>
  OpenGL: renderer: AMD Radeon RX 5700 XT (NAVI10 DRM 3.44.0
    5.16.7-1-MANJARO LLVM 13.0.0)
    v: 4.6 Mesa 21.3.5 direct render: Yes
Audio:
  Device-1: AMD Navi 10 HDMI Audio driver: snd_hda_intel v: kernel
    bus-ID: 0b:00.1 chip-ID: 1002:ab38 class-ID: 0403
  Sound Server-1: ALSA v: k5.16.7-1-MANJARO running: yes
  Sound Server-2: JACK v: 1.9.20 running: no
  Sound Server-3: PulseAudio v: 15.0 running: yes
  Sound Server-4: PipeWire v: 0.3.45 running: yes
Network:
  Device-1: Intel Wi-Fi 6 AX200 driver: iwlwifi v: kernel bus-ID: 04:00.0
    chip-ID: 8086:2723 class-ID: 0280
  IF: wlp4s0 state: down mac: <filter>
  Device-2: Intel I211 Gigabit Network vendor: Gigabyte driver: igb
    v: kernel port: f000 bus-ID: 05:00.0 chip-ID: 8086:1539 class-ID: 0200
  IF: enp5s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
  IP v4: <filter> type: dynamic noprefixroute scope: global
    broadcast: <filter>
  IP v6: <filter> type: dynamic noprefixroute scope: global
  IP v6: <filter> type: dynamic noprefixroute scope: global
  IP v6: <filter> type: dynamic noprefixroute scope: global
  IP v6: <filter> type: dynamic noprefixroute scope: global
  IP v6: <filter> type: noprefixroute scope: link
  IF-ID-1: virbr0 state: down mac: <filter>
  IP v4: <filter> scope: global broadcast: <filter>
  WAN IP: <filter>
Bluetooth:
  Device-1: Intel AX200 Bluetooth type: USB driver: btusb v: 0.8 bus-ID: 3-5:2
    chip-ID: 8087:0029 class-ID: e001
  Report: rfkill ID: hci0 rfk-id: 1 state: up address: see --recommends
Logical:
  Message: No logical block device data found.
RAID:
  Message: No RAID data found.
Drives:
  Local Storage: total: 4.55 TiB used: 995.76 GiB (21.4%)
  SMART Message: Required tool smartctl not installed. Check --recommends
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Gigabyte
    model: GP-ASM2NE6100TTTD size: 931.51 GiB block-size: physical: 512 B
    logical: 512 B speed: 63.2 Gb/s lanes: 4 type: SSD serial: <filter>
    rev: EGFM11.3 temp: 49.9 C scheme: GPT
  ID-2: /dev/sda maj-min: 8:0 vendor: Samsung model: SSD 860 EVO 4TB
    size: 3.64 TiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
    type: SSD serial: <filter> rev: 4B6Q scheme: GPT
  Message: No optical or floppy data found.
Partition:
  ID-1: / raw-size: 862.19 GiB size: 862.19 GiB (100.00%)
    used: 227.28 GiB (26.4%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
    label: N/A uuid: 6d51f798-065a-4a40-82b9-d421de0c0fe3
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
    used: 568 KiB (0.2%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
    label: NO_LABEL uuid: 6D02-42FE
  ID-3: /home raw-size: 862.19 GiB size: 862.19 GiB (100.00%)
    used: 227.28 GiB (26.4%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
    label: N/A uuid: 6d51f798-065a-4a40-82b9-d421de0c0fe3
  ID-4: (mounted NAS folder)
  ID-5: (mounted NAS folder)
  ID-6: (mounted NAS folder)
  ID-7: (mounted NAS folder)
  ID-8: (mounted NAS folder)
  ID-9: /mnt/SSD_4TB raw-size: 3.64 TiB size: 3.64 TiB (100.00%)
    used: 768.47 GiB (20.6%) fs: btrfs dev: /dev/sda1 maj-min: 8:1
    label: SSD_4TB uuid: 301ddaa1-d3ad-4439-9598-b81d86c48d22
  ID-10: /run/timeshift/backup raw-size: 862.19 GiB
    size: 862.19 GiB (100.00%) used: 227.28 GiB (26.4%) fs: btrfs
    dev: /dev/nvme0n1p2 maj-min: 259:2 label: N/A
    uuid: 6d51f798-065a-4a40-82b9-d421de0c0fe3
  ID-11: /var/cache raw-size: 862.19 GiB size: 862.19 GiB (100.00%)
    used: 227.28 GiB (26.4%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
    label: N/A uuid: 6d51f798-065a-4a40-82b9-d421de0c0fe3
  ID-12: /var/log raw-size: 862.19 GiB size: 862.19 GiB (100.00%)
    used: 227.28 GiB (26.4%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
    label: N/A uuid: 6d51f798-065a-4a40-82b9-d421de0c0fe3
Swap:
  Kernel: swappiness: 60 (default) cache-pressure: 100 (default)
  ID-1: swap-1 type: partition size: 69.02 GiB used: 0 KiB (0.0%)
    priority: -2 dev: /dev/nvme0n1p3 maj-min: 259:3 label: swap
    uuid: eb0c6a05-ccc5-464b-9ea4-8275587266c0
Unmounted:
  Message: No unmounted partitions found.
USB:
  Hub-1: 1-0:1 info: Hi-speed hub with single TT ports: 6 rev: 2.0
    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900
  Device-1: 1-1:2 info: Integrated Express IT8297 RGB LED Controller
    type: Keyboard driver: hid-generic,usbhid interfaces: 1 rev: 2.0
    speed: 12 Mb/s power: 100mA chip-ID: 048d:8297 class-ID: 0301
  Hub-2: 1-6:3 info: Genesys Logic Hub ports: 4 rev: 2.0 speed: 480 Mb/s
    power: 100mA chip-ID: 05e3:0608 class-ID: 0900
  Hub-3: 2-0:1 info: Super-speed hub ports: 4 rev: 3.1 speed: 10 Gb/s
    chip-ID: 1d6b:0003 class-ID: 0900
  Hub-4: 3-0:1 info: Hi-speed hub with single TT ports: 6 rev: 2.0
    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900
  Device-1: 3-5:2 info: Intel AX200 Bluetooth type: Bluetooth driver: btusb
    interfaces: 2 rev: 2.0 speed: 12 Mb/s power: 100mA chip-ID: 8087:0029
    class-ID: e001
  Hub-5: 3-6:3 info: Genesys Logic Hub ports: 4 rev: 2.0 speed: 480 Mb/s
    power: 100mA chip-ID: 05e3:0608 class-ID: 0900
  Hub-6: 4-0:1 info: Super-speed hub ports: 4 rev: 3.1 speed: 10 Gb/s
    chip-ID: 1d6b:0003 class-ID: 0900
  Hub-7: 5-0:1 info: Hi-speed hub with single TT ports: 4 rev: 2.0
    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900
  Hub-8: 5-4:7 info: VIA Labs USB2.0 Hub ports: 4 rev: 2.0 speed: 480 Mb/s
    chip-ID: 2109:2817 class-ID: 0900
  Hub-9: 5-4.2:10 info: VIA Labs USB2.0 Hub ports: 2 rev: 2.0
    speed: 480 Mb/s chip-ID: 2109:2817 class-ID: 0900
  Device-1: 5-4.2.1:11
    info: Corsair CORSAIR K70 RGB MK.2 LOW PROFILE Mechanical Gaming Keyboard
    type: Keyboard,HID driver: hid-generic,usbhid interfaces: 2 rev: 2.0
    speed: 12 Mb/s power: 500mA chip-ID: 1b1c:1b55 class-ID: 0300
    serial: <filter>
  Device-2: 5-4.3:8 info: Logitech MX518 Gaming Mouse type: Mouse,HID
    driver: hid-generic,usbhid interfaces: 2 rev: 2.0 speed: 12 Mb/s
    power: 300mA chip-ID: 046d:c08e class-ID: 0300 serial: <filter>
  Device-3: 5-4.4:9 info: EIZO FlexScan EV3895 type: HID
    driver: hid-generic,usbhid interfaces: 1 rev: 1.1 speed: 12 Mb/s
    chip-ID: 056d:4065 class-ID: 0300
  Hub-10: 6-0:1 info: Super-speed hub ports: 4 rev: 3.1 speed: 10 Gb/s
    chip-ID: 1d6b:0003 class-ID: 0900
  Hub-11: 6-4:4 info: VIA Labs USB3.0 Hub ports: 4 rev: 3.1 speed: 5 Gb/s
    chip-ID: 2109:0817 class-ID: 0900
  Hub-12: 6-4.2:5 info: VIA Labs USB3.0 Hub ports: 2 rev: 3.1 speed: 5 Gb/s
    chip-ID: 2109:0817 class-ID: 0900
Sensors:
  System Temperatures: cpu: 16.8 C mobo: N/A gpu: amdgpu temp: 56.0 C
    mem: 60.0 C
  Fan Speeds (RPM): N/A gpu: amdgpu fan: 0
Info:
  Processes: 658 Uptime: 1h 19m wakeups: 0 Init: systemd v: 250
  tool: systemctl Compilers: gcc: 11.1.0 clang: 13.0.1 Packages: 1622
  pacman: 1604 lib: 437 flatpak: 9 snap: 9 Shell: Zsh v: 5.8
  running-in: gnome-terminal inxi: 3.3.12

cat /etc/pulse/default.pa

#!/usr/bin/pulseaudio -nF
#
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

# This startup script is used only if PulseAudio is started per-user
# (i.e. not in system mode)

.fail

### Automatically restore the volume of streams and devices
load-module module-device-restore
load-module module-stream-restore
load-module module-card-restore

### Automatically augment property information from .desktop files
### stored in /usr/share/application
load-module module-augment-properties

### Should be after module-*-restore but before module-*-detect
load-module module-switch-on-port-available

### Load audio drivers statically
### (it's probably better to not load these drivers manually, but instead
### use module-udev-detect -- see below -- for doing this automatically)
#load-module module-alsa-sink
#load-module module-alsa-source device=hw:1,0
#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load-module module-null-sink
#load-module module-pipe-sink

### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect tsched=0
.else
### Use the static hardware detection module (for systems that lack udev support)
load-module module-detect
.endif

### Automatically connect sink and source if JACK server is present
.ifexists module-jackdbus-detect.so
.nofail
load-module module-jackdbus-detect channels=2
.fail
.endif

### Automatically load driver modules for Bluetooth hardware
.ifexists module-bluetooth-policy.so
load-module module-bluetooth-policy
.endif

.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
.endif

### Load several protocols
load-module module-dbus-protocol
.ifexists module-esound-protocol-unix.so
load-module module-esound-protocol-unix
.endif
load-module module-native-protocol-unix

### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
#load-module module-native-protocol-tcp
#load-module module-zeroconf-publish

### Load the RTP receiver module (also configured via paprefs, see above)
#load-module module-rtp-recv

### Load the RTP sender module (also configured via paprefs, see above)
#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
#load-module module-rtp-send source=rtp.monitor

### Load additional modules from GSettings. This can be configured with the paprefs tool.
### Please keep in mind that the modules configured by paprefs might conflict with manually
### loaded modules.
.ifexists module-gsettings.so
.nofail
load-module module-gsettings
.fail
.endif

### Automatically restore the default sink/source when changed by the user
### during runtime
### NOTE: This should be loaded as early as possible so that subsequent modules
### that look up the default sink/source get the right value
load-module module-default-device-restore

### Make sure we always have a sink around, even if it is a null sink.
load-module module-always-sink

### Honour intended role device property
load-module module-intended-roles

### Automatically suspend sinks/sources that become idle for too long
#load-module module-suspend-on-idle

### If autoexit on idle is enabled we want to make sure we only quit
### when no local session needs us anymore.
.ifexists module-console-kit.so
load-module module-console-kit
.endif
.ifexists module-systemd-login.so
load-module module-systemd-login
.endif

### Enable positioned event sounds
load-module module-position-event-sounds

### Cork music/video streams when a phone stream is active
load-module module-role-cork

### Modules to allow autoloading of filters (such as echo cancellation)
### on demand. module-filter-heuristics tries to determine what filters
### make sense, and module-filter-apply does the heavy-lifting of
### loading modules and rerouting streams.
load-module module-filter-heuristics
load-module module-filter-apply

### Make some devices default
#set-default-sink output
#set-default-source input

### Allow including a default.pa.d directory, which if present, can be used
### for additional configuration snippets.
.nofail
.include /etc/pulse/default.pa.d


load-module module-switch-on-connect
load-module module-switch-on-connect ignore_virtual=no

Any suggestions on this? It’s kind of annoying to always switch off and on bluetooth on my PC manually after my phone played any sound.

When it happens, I canm see this in systemctl status bluetooth

systemctl status bluetooth                                                                                                                       ✔ 
● bluetooth.service - Bluetooth service
     Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: disabled)
     Active: active (running) since Fri 2022-03-18 21:33:18 CET; 20h ago
       Docs: man:bluetoothd(8)
   Main PID: 1274 (bluetoothd)
     Status: "Running"
      Tasks: 1 (limit: 77071)
     Memory: 2.7M
        CPU: 23ms
     CGroup: /system.slice/bluetooth.service
             └─1274 /usr/lib/bluetooth/bluetoothd

Mär 19 17:04:31 PC bluetoothd[1274]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSink/sbc
Mär 19 17:04:31 PC bluetoothd[1274]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSource/sbc
Mär 19 17:04:31 PC bluetoothd[1274]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSink/sbc_xq_453
Mär 19 17:04:31 PC bluetoothd[1274]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSource/sbc_xq_453
Mär 19 17:04:31 PC bluetoothd[1274]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSink/sbc_xq_512
Mär 19 17:04:31 PC bluetoothd[1274]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSource/sbc_xq_512
Mär 19 17:04:31 PC bluetoothd[1274]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSink/sbc_xq_552
Mär 19 17:04:31 PC bluetoothd[1274]: Endpoint registered: sender=:1.56 path=/MediaEndpoint/A2DPSource/sbc_xq_552
Mär 19 17:32:12 PC bluetoothd[1274]: src/service.c:btd_service_connect() a2dp-sink profile connect failed for 00:1B:66:2F:59:4E: Device or resource busy
Mär 19 17:32:12 PC bluetoothd[1274]: /org/bluez/hci0/dev_00_1B_66_2F_59_4E/sep3/fd0: fd(41) ready

So the bluetooth service is not able to connect to my device once it has been used by another device. Since coupling headphones to two devices at the same time is a common scenario, this issue should be looked at.

Any suggestions?

PulseAudio default.pa configuration is showing an additional module requested to load twice.

AFAIK this module cannot be loaded more than once (check modules loaded in ‘pactl list modules short’ ) so requesting the module twice could be a point of failure

Most users would not want to use this module because of the effects already described in post#1

module-switch-on-connect

Whenever a new sink or source appears, this module will switch the default sink/source to be the new sink/source

This module is not loaded by default, because it’s a bit too aggressive. If the user sets the default sink or source manually, that choice gets forgotten when plugging in a new sound card, which can be undesirable

Removing both requests to load module-switch-on-connect should allow switching between devices without having to re-plug or restart devices

If audio to the headset is still interrupted by phone audio try disabling module-role-cork
Starting an application interrupts other app’s sound - wiki.archlinux.org/PulseAudio/Troubleshooting

I tried both solutions, but it did not work. If my phone plays any sound via my headphones, I still have to reconnect my headphones on my PC manually or it will not play any sound from my PC again.