Skip to content

Instantly share code, notes, and snippets.

@mikoim
Last active January 22, 2025 14:35
Show Gist options
  • Save mikoim/414949185aafe01b20411d937d14869e to your computer and use it in GitHub Desktop.
Save mikoim/414949185aafe01b20411d937d14869e to your computer and use it in GitHub Desktop.
Sennheiser MOMENTUM True Wireless 2 on Linux with BlueZ 5 and PulseAudio

Sennheiser MOMENTUM True Wireless 2 on Linux with BlueZ 5 and PulseAudio

Unfortunately, it does not work as out of box. After applying following workarounds, finally, it works.

  • Fedora 32 x86_64
  • Linux kernel 5.7.10 vanilla
  • PulseAudio 13.99 + pulseaudio-module-bluetooth-freeworld (for proprietary codecs aptX)
  • BlueZ 5.54

😱🙀😱🙀😱

pulseaudio
xxx xx xx:xx:xx xxx pulseaudio[14636]: E: [pulseaudio] bluez5-util.c: Transport Acquire() failed for transport /org/bluez/hci1/dev_xx_xx_xx_xx_xx_xx/sep4/fd11 (Input/output error)

bluetoothd
xxx xx xx:xx:52 sushi bluetoothd[54384]: Unable to get io data for Headset Voice gateway: getpeername: Transport endpoint is not connected (107)
xxx xx xx:xx:52 sushi bluetoothd[54384]: No reply to Start request
xxx xx xx:xx:45 sushi bluetoothd[54384]: xx:xx:xx:xx:xx:xx: error updating services: Input/output error (5)
xxx xx xx:xx:45 sushi bluetoothd[54384]: No reply to Start request

Workaround

Step 1: Prevent automatically starting PulseAudio server for gdm

# vim /var/lib/gdm/.pulse/client.conf

autospawn = no
daemon-binary = /bin/true

Step 2: Disable AVRCP plugin

# systemctl edit --full bluetooth.service

ExecStart=/usr/lib/bluetooth/bluetoothd --noplugin=avrcp

# systemctl restart bluetooth.service

Step 3: Pair wireless earphones

$ bluetooth

[NEW] Device XX:XX:XX:XX:XX:XX MOMENTUM TW 2

pair XX:XX:XX:XX:XX:XX
connect XX:XX:XX:XX:XX:XX
trust XX:XX:XX:XX:XX:XX
info XX:XX:XX:XX:XX:XX

Device XX:XX:XX:XX:XX:XX (public)
	Name: MOMENTUM TW 2
	Alias: MOMENTUM TW 2
	Class: 0x00240404
	Icon: audio-card
	Paired: yes
	Trusted: yes
	Blocked: no
	Connected: yes
	LegacyPairing: no
	UUID: Serial Port               (00001101-0000-1000-8000-00805f9b34fb)
	UUID: Headset                   (00001108-0000-1000-8000-00805f9b34fb)
	UUID: Audio Source              (0000110a-0000-1000-8000-00805f9b34fb)
	UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)
	UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
	UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)
	UUID: Handsfree                 (0000111e-0000-1000-8000-00805f9b34fb)
	UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
	UUID: Vendor specific           (0000eb03-d102-11e1-9b23-00025b00a5a5)
	Modalias: usb:v1377p7001d0480

Step 4: Change sound card profile (if you need)

$ pactl list

Card #1
	Name: bluez_card.xx_xx_xx_xx_xx_xx
	Driver: module-bluez5-device.c
	Owner Module: 23
	Properties:
		device.description = "MOMENTUM TW 2"
		device.string = "xx:xx:xx:xx:xx:xx"
		device.api = "bluez"
		device.class = "sound"
		device.bus = "bluetooth"
		device.form_factor = "headset"
		bluez.path = "/org/bluez/hci1/dev_xx_xx_xx_xx_xx_xx"
		bluez.class = "0x240404"
		bluez.alias = "MOMENTUM TW 2"
		device.icon_name = "audio-headset-bluetooth"
		device.intended_roles = "phone"
	Profiles:
		headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 30, available: yes)
		a2dp_source_sbc: High Fidelity Capture (A2DP Source: SBC) (sinks: 0, sources: 1, priority: 20, available: yes)
		a2dp_source_aac: High Fidelity Capture (A2DP Source: AAC) (sinks: 0, sources: 1, priority: 20, available: no)
		a2dp_source_aptx: High Fidelity Capture (A2DP Source: APTX) (sinks: 0, sources: 1, priority: 20, available: no)
		a2dp_source_aptx_hd: High Fidelity Capture (A2DP Source: aptX HD) (sinks: 0, sources: 1, priority: 20, available: no)
		a2dp_sink_sbc: High Fidelity Playback (A2DP Sink: SBC) (sinks: 1, sources: 0, priority: 40, available: yes)
		a2dp_sink_aac: High Fidelity Playback (A2DP Sink: AAC) (sinks: 1, sources: 0, priority: 40, available: yes)
		a2dp_sink_aptx: High Fidelity Playback (A2DP Sink: aptX) (sinks: 1, sources: 0, priority: 40, available: yes)
		a2dp_sink_aptx_hd: High Fidelity Playback (A2DP Sink: aptX HD) (sinks: 1, sources: 0, priority: 40, available: no)
		a2dp_sink_ldac: High Fidelity Playback (A2DP Sink: LDAC) (sinks: 1, sources: 0, priority: 40, available: no)
		off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
	Active Profile: a2dp_sink_aptx
	Ports:
		headset-output: Headset (priority: 0, latency offset: 0 usec, available)
			Part of profile(s): headset_head_unit, a2dp_sink_sbc, a2dp_sink_aac, a2dp_sink_aptx, a2dp_sink_aptx_hd, a2dp_sink_ldac
		headset-input: Headset (priority: 0, latency offset: 0 usec)
			Part of profile(s): headset_head_unit, a2dp_source_sbc, a2dp_source_aac, a2dp_source_aptx, a2dp_source_aptx_hd

$ pacmd set-card-profile 1 a2dp_sink_aptx
@Aryston
Copy link

Aryston commented Aug 11, 2023

Unfortunately, this solution doesn't work for Momentum 4 on Fedora 38, but thanks for sharing this, it was a good learning experience.

@odravison
Copy link

odravison commented Aug 25, 2023

Any idea how to make Momentum 4 work properly in Ubuntu 20.04 ?

Behavior: After headset connected, the output sound is good, but after switched input device from computer mic to headset mic, my noise cancel is activated and the output sounds like too far away. Do you know anything about it?

This strange behavior seems like the "enhancement option" that Windows have.
Any idea how to solve this?

Before switching mic (audio is good):
image

After switching mic to headset mic (audio seems be far away and noise cancel is activated):
image

@Klusio19
Copy link

Any idea how to make Momentum 4 work properly in Ubuntu 20.04 ?

Behavior: After headset connected, the output sound is good, but after switched input device from computer mic to headset mic, my noise cancel is activated and the output sounds like too far away. Do you know anything about it?

This strange behavior seems like the "enhancement option" that Windows have. Any idea how to solve this?

Before switching mic (audio is good): image

After switching mic to headset mic (audio seems be far away and noise cancel is activated): image

I just bought Momentum 4 Wireless today. And I'm messing with it on Arch Linux. Bluetooth connetcion works flawless for me as well as jack connection, however I care only about sound, I did not check mic. Paradoxically I had a weird problem with wired USB-C conenction but I figured it out. Can you specify your problem more? And is that problem when bluetooth, or wired connection?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment