Bluetooth headset does not work in headset (HSP/HFP) mode

My JBL headset connects just fine in playback mode. When I try to switch it to headset mode in order to make calls, it does not work at all. It does work in Windows and last week's plain Arch.

This is what I see in journalctl when I try to switch to headset mode:

Nov 25 10:47:56 m446 kernel: Bluetooth: hci0: urb 00000000ee97747a submission failed (90)
Nov 25 10:47:56 m446 kernel: Bluetooth: hci0: sending frame failed (-90)
Nov 25 10:47:56 m446 kernel: Bluetooth: hci0: urb 00000000ee97747a submission failed (90)
Nov 25 10:47:56 m446 kernel: Bluetooth: hci0: sending frame failed (-90)
Nov 25 10:47:56 m446 kernel: Bluetooth: hci0: SCO packet for unknown connection handle 0
Nov 25 10:47:56 m446 kernel: Bluetooth: hci0: SCO packet for unknown connection handle 0

And this is the relevant output from pacmd list-cards

index: 2
	name: <bluez_card.30_C0_1B_E5_C1_62>
	driver: <module-bluez5-device.c>
	owner module: 27
	properties:
		device.description = "JBL TUNE600BTNC"
		device.string = "30:C0:1B:E5:C1:62"
		device.api = "bluez"
		device.class = "sound"
		device.bus = "bluetooth"
		device.form_factor = "headset"
		bluez.path = "/org/bluez/hci0/dev_30_C0_1B_E5_C1_62"
		bluez.class = "0x240404"
		bluez.alias = "JBL TUNE600BTNC"
		device.icon_name = "audio-headset-bluetooth"
		device.intended_roles = "phone"
	profiles:
		headset_head_unit: Headset Head Unit (HSP/HFP) (priority 30, available: unknown)
		a2dp_sink_sbc: High Fidelity Playback (A2DP Sink: SBC) (priority 40, available: unknown)
		a2dp_sink_aac: High Fidelity Playback (A2DP Sink: AAC) (priority 40, available: no)
		a2dp_sink_aptx: High Fidelity Playback (A2DP Sink: aptX) (priority 40, available: no)
		a2dp_sink_aptx_hd: High Fidelity Playback (A2DP Sink: aptX HD) (priority 40, available: no)
		a2dp_sink_ldac: High Fidelity Playback (A2DP Sink: LDAC) (priority 40, available: no)
		off: Off (priority 0, available: yes)
	active profile: <headset_head_unit>
	sinks:
		bluez_sink.30_C0_1B_E5_C1_62.headset_head_unit/#6: JBL TUNE600BTNC
	sources:
		bluez_sink.30_C0_1B_E5_C1_62.headset_head_unit.monitor/#9: Monitor of JBL TUNE600BTNC
		bluez_source.30_C0_1B_E5_C1_62.headset_head_unit/#10: JBL TUNE600BTNC
	ports:
		headset-output: Headset (priority 0, latency offset 0 usec, available: unknown)
			properties:
				
		headset-input: Headset (priority 0, latency offset 0 usec, available: unknown)
			properties:

Any tips on how to get the headset working (again)?

It may be related to a recent pulseaudio bug, concerning hybrid ports (physical, not BT). Just guessing.
Try a different kernel, like linux-lts, or reboot to see if something changes.

3 Likes

@petsam is completely correct whenever your BT starts acting buggy always test another kernel (older is usually better in this situation).

3 Likes

If kernel doesn't fix the issue and you're using pulseaudio then try installing the pulseaudio-module-bt package. It has helped me in the past to get my Bluetooth headset working.

2 Likes