#1148124 wireplumber: BT HFP audio node stuck in error state, needs mSBC/CVSD toggle to fix

Package:
wireplumber
Source:
wireplumber
Description:
modular session / policy manager for PipeWire
Submitter:
Tomasz Nowak
Date:
2026-09-17 12:03:01 UTC
Severity:
normal
Tags:
#1148124#5
Date:
2026-09-17 10:08:36 UTC
From:
To:
Dear Maintainer,

After upgrading wireplumber/libwireplumber-0.5-0 from 0.5.15-1 to 0.5.17-1
(2026-09-15), using the built-in mic on Bluetooth headphones (HFP/HSP,
mSBC codec) became unreliable:

  - Sometimes after switching the input source to the Bluetooth headset's
    microphone, neither playback nor the mic works.
  - Sometimes playback works but the microphone does not (nobody can hear
    me), until I manually switch the Bluetooth profile/codec from mSBC to
    CVSD and back to mSBC, which "kicks" it back into a working state.

Downgrading wireplumber and libwireplumber-0.5-0 back to 0.5.15-1
fixes the issue completely.
I have since held both packages at 0.5.15-1 to work around this.

How to reproduce:
  1. Pair/connect Bluetooth headphones that support HFP/HSP + mSBC.
  2. Start or join an audio/video call (or just switch the default source
     to the Bluetooth "headset-head-unit" mic).
  3. Talk / listen. Fairly often either the mic or the playback
     direction (or both) silently stops working, with no obvious UI
     indication other than remote party or you not hearing anything.

Relevant journal output when this happens (MAC device redacted):

wireplumber[3490]: pw.node: (bluez_output.xx_xx_xx_xx_xx_xx.1-300) running -> error (Received error event)
wireplumber[3490]: spa.bluez5: Failure in Bluetooth audio transport /org/bluez/hci0/dev_xx_xx_xx_xx_xx_xx/sep7/fd0
pipewire[3483]: pw.node: (bluez_output.xx_xx_xx_xx_xx_xx.1-300) running -> error (Received error event)
gsd-media-keys[3966]: Unable to get default sink
...
wireplumber[3490]: pw.node: (bluez_input.xx_xx_xx_xx_xx_xx.0-300) running -> error (Received error event)
wireplumber[3490]: spa.bluez5: Failure in Bluetooth audio transport /org/bluez/hci0/dev_xx_xx_xx_xx_xx_xx/fd52
pipewire[3483]: pw.link: 0x5585970c26b0: one of the nodes is in error out:suspended in:error
kernel: Bluetooth: hci0: SCO packet for unknown connection handle 257
kernel: Bluetooth: hci0: corrupted SCO packet
(repeated many times)

Hardware:
  - Bluetooth adapter: Intel Corp, USB ID 8087:0037, hci0, HCI 5.4
  - Headset: Bluetooth device xx:xx:xx:xx:xx:xx (HFP/HSP profile,
    mSBC codec by default)

Workaround: hold wireplumber and libwireplumber-0.5-0 at 0.5.15-1
(apt-mark hold), or force bluez5.codecs = [ cvsd ] in wireplumber's
bluez monitor config to avoid mSBC negotiation entirely.