Skip to content

No audio output when target sink is a mono Bluetooth HFP/HSP device (e.g. call profile) #298

Description

@HermannsIT

Environment

  • JDSP4Linux version: 2.7.0-50-gb585084 (PipeWire flavor)
  • OS: Linux Mint 22.3 (Cinnamon 6.6.9)
  • Audio server: PipeWire 1.0.5 + WirePlumber 0.4.17 (via pipewire-pulse)
  • Bluetooth headset: Sennheiser MOMENTUM 4
  • Bluetooth profile at time of bug: headset-head-unit-msbc (HFP, mono, 16kHz) — this profile is auto-selected by WirePlumber whenever the headset's microphone is used (e.g. during a VoIP call)

Description

When the configured output device is a Bluetooth sink that only exposes a single mono port (playback_MONO, as produced by the BlueZ HFP/HSP headset-head-unit profiles), JDSP4Linux produces no audible output, even though:

  • pw-link -l shows a valid connection from the plugin node to the sink:
    jdsp_@PwJamesDspPlugin_JamesDsp:output_FL
      |-> bluez_output.XX_XX_XX_XX_XX_XX.1:playback_MONO
    
  • The upstream app (tested with Teams for Linux / Chromium) is confirmed to be sending a live signal to jamesdsp_sink (verified visually via pavucontrol's peak meter, which moves during playback).
  • jamesdsp_sink and the Bluetooth sink both report state RUNNING (not suspended).
  • Running --relink does not fix it.
  • Disabling all DSP processing via --set master_enable=false (passthrough) does not fix it either — so this is not an effects/processing bug, but appears to be in the plugin's own routing/resampling to a mono-only sink.

Steps to reproduce

  1. Connect a Bluetooth headset that supports both A2DP and HFP/HSP (e.g. Sennheiser MOMENTUM 4).
  2. Set JDSP4Linux's output device to the Bluetooth sink, with AudioOutputUseDefault=true.
  3. Start a call in an app that uses the headset's microphone (e.g. Teams for Linux), forcing WirePlumber to switch the Bluetooth profile to headset-head-unit-msbc (mono, 16kHz).
  4. Observe: playback stream is active (visible level in pavucontrol / pactl list sink-inputs), pipeline is linked (pw-link -l shows the connection), but no audio is audible on the headset.
  5. Confirm the pipeline itself is fine: quit JDSP4Linux entirely. The same app now connects directly to the Bluetooth sink and audio works correctly.
  6. Confirm it's not a DSP/effects issue: with JDSP4Linux running, run jamesdsp --set master_enable=false (passthrough) — still no audio.

Expected behavior

Audio should play correctly regardless of whether the target sink exposes stereo (FL/FR) or a single mono port, the same way it does when the Bluetooth device is in A2DP mode (stereo, works fine).

Actual behavior

Silent output whenever the target device is a mono-only Bluetooth sink (HFP/HSP call profile), both with processing enabled and in passthrough mode.

Workaround

Quit JDSP4Linux before starting a call, relaunch afterwards for normal (A2DP) listening.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions