Bluetooth headset (简体中文)

From ArchWiki
Jump to navigation Jump to search
翻译状态:本文是 Bluetooth_headset翻译。上次翻译日期:2015-08-31。如果英文版本有所更改,则您可以帮助同步翻译。

Tango-preferences-desktop-locale-modified.png这篇文章或章节的翻译不反映原文。Tango-preferences-desktop-locale-modified.png

原因:Last updated in 2017 (471472), out of sync with English page(在 Talk:Bluetooth headset (简体中文)# 中讨论)

Arch Linux 现在默认支持 A2DP profile (Audio Sink),可以实现远程音频播放功能。


通过 Pipewire 连接耳机

PipeWire 是一个 PulseAudio (简体中文) 的代替品,PipeWire 提供了一个简易地设置蓝牙耳机的方式。PipeWire 开箱即提供了针对耳机音箱的 A2DP 配置文件,支持 SBC/SBC-XQ、AptX、LDAC、AAC 蓝牙音频编码。PipeWire 也支持 HFP/HSP 蓝牙音频协议。

安装软件包 pipewire-pulse (这是 pulseaudiopulseaudio-bluetooth的替代品)。

守护程序将会自动启动为一个 user service。请使用 pavucontrol 或你的桌面环境提供的“设置”应用程序来进行 PipeWire 设置。更多信息请查看 PipeWire#Bluetooth devices

获取蓝牙耳机的电池电量

若要获取蓝牙耳机的剩余电量并将其提供给 upower,需要启动守护程序 bluetoothd 的试验性功能,方法如下:

建立一个 bluetooth.service 的替换单元文件(replacement unit file),在 ExecStart 行后添加 -E。这之后重新启动 bluetooth.service


通过 Bluez5/PulseAudio 连接蓝牙耳机

Merge-arrows-2.pngThis article or section is a candidate for merging with Bluetooth.Merge-arrows-2.png

Notes: Significant redundancy with general setup on Bluetooth page. Should be merged there. Headset-specific info would stay on this page. (Discuss in Talk:Bluetooth#Merging general setup from Keyboard, Mouse, Headset pages)


安装软件包 pulseaudio-alsapulseaudio-bluetoothbluez-utils。其中 bluez-utils 提供了 bluetoothctl 工具。

注意: 在继续下一步之前,请确认蓝牙设备没有被 rfkill 占用。


通过命令行进行设置

启动 bluetooth.service

现在我们可以使用 bluetoothctl 命令行工具来配对、连接蓝牙。关于 bluetoothctl 的更多详细信息请查看 Bluetooth (简体中文)

运行以下命令进入 bluetooth 命令环境:

$ bluetoothctl

然后输入:

[bluetooth]# power on
[bluetooth]# agent on
[bluetooth]# default-agent
[bluetooth]# scan on

现在让你的蓝牙耳机进入配对模式,它应该很快就能被发现。如:

[NEW] Device 00:1D:43:6D:03:26 Lasmex LBT10

这里发现了一个名字是"Lasmex LBT10",对应 MAC 地址是00:1D:43:6D:03:26的设备。接下来我们使用这个MAC地址来配对:

# pair 00:1D:43:6D:03:26

配对成功后,你需要显式地连接设备。 (如果不起效,请尝试在连接蓝牙设备之前先使用 trust 命令)

# [bluetooth]# connect 00:1D:43:6D:03:26

如果出现连接错误 org.bluez.Error.Failed,先停止现存的 PulseAudio daemon 再重试:

$ pulseaudio -k
[bluetooth]# connect 00:1D:43:6D:03:26

最后,如果你希望将来自动连接此设备:

[bluetooth]# trust 00:1D:43:6D:03:26

如果一切正常,你现在可以在PulseAudio看到一个独立的输出设备。

注意: 设备默认情况下可能是停用的。你可以在pavucontrol的"Configuration"标签页里选择配置(OFF, A2DP, HFP)

你现在可以通过pavucontrol的"Playback"和"Pecording"标签页重定向音频的输入、输出了。

现在可以禁用蓝牙发现新设备并退出此程序:

[bluetooth]# scan off
[bluetooth]# exit

设置自动连接

若要使你的蓝牙耳机自动连接,你需要启用 PulseAudio 的 switch-on-connect 模块。请添加以下几行到 /etc/pulse/default.pa

/etc/pulse/default.pa
### Automatically switch to newly-connected devices
load-module module-switch-on-connect
注意:

媒体播放控制

媒体控制信号需要被转发给 MPRIS,并被支持 MPRIS 的媒体播放器所获取,来实现外部播放控制。详细信息请查看 MPRIS#Bluetooth

通过 GNOME Bluetooth 进行设置

注意: 由于一个现存的 bug,在 PulseAudio 9/10 下,通过如下方法无法使 A2DP Profile 启动,这可能导致声音质量劣化。查看 #A2DP not working with PulseAudio[损坏的链接:无效的章节] 来查看可能的解决方案。

你可以使用 GNOME Bluetooth 作为一个图形化前端来简单地配置你的蓝牙耳机。

首先,你需要确定 bluetooth.service systemd unit 正在运行。

打开 GNOME Bluetooth,开启蓝牙、扫描设备、在设备列表中选择蓝牙设备进行连接。你可以在设备配置菜单中直接进入声音控制面板中。当你的设备已连接后,声音控制面板中将会出现一个新的播放设备。

LDAC/aptX 编码

若要增加对 LDAC/aptX 蓝牙音频编码的支持,请安装软件包 pulseaudio-modules-btAURlibldac,并重启 PulseAudio。查看项目主页来获取配置方法。你可以通过如下命令来查看你正在使用的蓝牙音频编码:

$ pactl list | grep a2dp_codec

常见问题及解决方案

注意: 有很多用户报告 A2DP/蓝牙 耳机不能正常工作。更多信息请查看 #Switch between HSP/HFP and A2DP setting[损坏的链接:无效的章节]

音质差/底噪/声音浑浊

如果音质很差,很可能是因为你的耳机没有被正确配置。 查看 #Switch between HSP/HFP and A2DP setting[损坏的链接:无效的章节] 来解决这个问题。


已经选择音频配置,但耳机没有激活,不能重定向音频

音频配置的菜单项在设备还没有成功连接的时候就已经存在了,但它并不能起作用。这个菜单项似乎是在设备被发现的时候就马上创建了。

确认一下bluetoothctl是在root用户下或在sudo环境下执行的;然后手动连接设备。有配置选项可以避免每次都需要手动连接,但是配对和信任并不会导致自动连接。

授权失败导致配对失败

如果配对失败,你可以尝试禁用 SSPMode:

# btmgmt ssp off

# btmgmt ssp on

当你运行这个命令时,你可能需要关闭蓝牙。

配对成功, 但连接失败

你可能在 bluetoothctl 里面看到下面的错误:

[bluetooth]# connect 00:1D:43:6D:03:26
Attempting to connect to 00:1D:43:6D:03:26
Failed to connect: org.bluez.Error.Failed

你可以查看 bluetooth.service 的单元状态或通过以下命令查看日志以进一步定位问题:

# systemctl status bluetooth
# journalctl -n 20

你可能会在日志里看到下面类似的信息:

bluetoothd[5556]: a2dp-sink profile connect failed for 00:1D:43:6D:03:26: Protocol not available

这是因为没有安装pulseaudio-bluetooth 包导致的。 如果确实没有安装,安装一下这个包,然后重启一下PulseAudio

问题也可能由权限问题引发。如果 root 用户可以连接蓝牙设备而普通用户不可,请将你的用户添加到 lp 用户组,再重启 pulseaudio。 参考:/etc/dbus-1/system.d/bluetooth.conf

如果不是因为缺失包导致的, 很可能是PulseAudio没收到消息,一般重启一下PulseAudio就可以解决问题。 注意bluetoothctl和PulseAudio不需要在相同的用户下运行,bluetooth在root环境下运行,而PulseAudio在用户环境下运行也可以很好的工作。 重启PulseAudio后,不需要重新配对,直接重连即可。

如果重启PulseAudio后,仍然不能正常工作,你需要重新加载 module-bluetooth-discover 模块。

# pactl load-module module-bluetooth-discover

你可以把同样的加载命令添加到 /etc/pulse/default.pa,让PulseAudio启动时自动加载。

如果仍然不能正常工作,或者你使用的是系统级别的PulseAudio,下面的模块也需要加载一下(同样可以把他们加到 default.pasystem.pa 里面):

module-bluetooth-policy
module-bluez5-device
module-bluez5-discover


It is also possible there are no write permissions for the owner of /var/lib/bluetooth/. If this is the case, you may get the device to work by removing and re-pairing it, but the issue will return after rebooting. Restoring write permissions fixes this issue:

# chmod -R u+w /var/lib/bluetooth


也可能是因为 /var/lib/bluetooth/ 缺少写权限。这种情况下,你可以通过移除再重新配对设备来使其工作,但重启后问题会再次出现。恢复写权限会修复问题:

# chmod -R u+w /var/lib/bluetooth

连接成功,但声音播放总有小故障

如果你的蓝牙与 WiFi 设备为同一个硬件,这非常有可能发生。因为它们共享了同一个天线甚至是频段(2.4GHz)。尽管在 Windows 上它们可以共同工作,但在 Linux上又是不是这样。

一个可能的解决方案是是 WiFi 工作在 5 GHz,从而使得它们不会互相干扰。如果你的网卡/路由器不支持 5GHz WiFi,你可以升级 WiFi 固件或驱动。这个方法对 Realtek 8723BE 配合最新版 rtl 驱动(AUR)有效。

如果难以使用以上方法,一个不那么有效的方法是在 PulseAudio 输出端优化信号元包大小与延迟时长来试图补偿信号干扰问题。你需要选择合适的参数值大小,因为这有可能使得音画不同步。若要设置更改蓝牙耳机的延时(以更改到125000微秒为例):

$ pactl set-port-latency-offset <bluez_card> headset-output 125000

其中蓝牙驱动器的ID号可以通过如下命令获得:

$ pacmd list-sinks | egrep -o 'bluez_card[^>]*'

元包大小可以在配置文件 /etc/pulse/daemon.conf 中设定,重启 PulseAudio 生效。更多信息请参考 PulseAudio/Troubleshooting#Setting the default fragment number and buffer size in PulseAudio

对于某些特定的蓝牙适配器,添加 options ath9k btcoex_enable=1/etc/modprobe.d/ath9k.conf 中可能会有帮助

/etc/modprobe.d/ath9k.conf
# possibly fix for sound glitches
options ath9k btcoex_enable=1

之后重启 PulseAudio 服务。

连接成功,但无法播放声音

确定你在系统日志里面可以看到如下信息:

bluetoothd[5556]: Endpoint registered: sender=:1.83 path=/MediaEndpoint/A2DPSource
bluetoothd[5556]: Endpoint registered: sender=:1.83 path=/MediaEndpoint/A2DPSink

如果你可以看到类似的信息,说明蓝牙没有问题,你可以去检查PulseAudio的配置问题了。否则的话,退回来再次确认蓝牙是否已经连接成功。

Tango-go-next.pngThis article or section is a candidate for moving to PulseAudio/Troubleshooting.Tango-go-next.png

Notes: The following seems to be general issue: [1] (Discuss in Talk:Bluetooth headset (简体中文))

如果使用的是GDM, PulseAudio 的另外一个实例可能已经启动,并且“捕获”了你的蓝牙连接。这种情况可以通过屏蔽GDM用户的pulseaudio socket来解决:

# mkdir -p  /var/lib/gdm/.config/systemd/user
# ln -s /dev/null  /var/lib/gdm/.config/systemd/user/pulseaudio.sockett

重启电脑后,PulseAudio的第二个实例将不再启动。

bluez 可能会错误地认为某个蓝牙耳机不兼容 A2DP。这种情况下,首先确定蓝牙设备的标号:

$ pacmd ls

在输出中应当会有一段关于蓝牙耳机的内容,类似于:

$ pacmd ls
index: 2
        name: <bluez_card.XX_XX_XX_XX_XX_XX>
        driver: <module-bluez5-device.c>
        owner module: 27
        properties:
                device.description = "SONY MDR-100ABN"
                device.string = "XX:XX:XX:XX:XX:XX"
                device.api = "bluez"
                device.class = "sound"
                ...

若要手动更改配置文件,运行以下命令:

$ pacmd set-card-profile 2 a2dp_sink

其中 2 是通过 pacmd ls 得到的设备标号。

连接成功,声音播放正常,但播放暂停后再继续就会播放卡顿

如果原先声音播放正常,但蓝牙连接空闲后再恢复播放就会出现卡顿/高延迟/无声,可以尝试禁用 PulseAudio 的音源/音响空闲自动挂起功能。这是由 module-suspend-on-idle 模块控制的。

若要禁用 module-suspend-on-idle,将配置文件中的以下行注释掉:

~/.config/pulse/default.pa
### Automatically suspend sinks/sources that become idle for too long
#load-module module-suspend-on-idle

之后,重启 PulseAudio。


UUIDs has unsupported type

在配对的时候,你可能会在bluetoothctl看到如下信息:

[CHG] Device 00:1D:43:6D:03:26 UUIDs has unsupported type

这种情况很常见,没有影响,可以被忽略。


PC 上显示设备已经配对,但外设端无法识别 PC

这也许是因为蓝牙设备不支持 Bluetooth LE for pairing。

尝试在 /etc/bluetooth/main.conf 中设置 ControllerMode = bredr

更多信息查看此链接[2](关于 Bose QC 35)

设备连接成功,但随即断连

如果你的设备蓝牙连接失败或很快断连,并且在日志 (systemd (简体中文)/Journal (简体中文)) 中看到了如下内容:

bluetoothd: Unable to get connect data for Headset Voice gateway: getpeername: Transport endpoint is not connected (107)
bluetoothd: connect error: Connection refused (111)

这有可能是因为你已经在本电脑的蓝牙适配器上用其他操作系统配对了此蓝牙设备。有些设备不能处理来自同一 MAC 地址(例如:同一蓝牙适配器)的多次配对。你可以通过重新配对来修复问题:

$ bluetoothctl
[bluetooth]# devices
Device XX:XX:XX:XX:XX:XX My Device
[bluetooth]# remove XX:XX:XX:XX:XX:XX

之后,重启 bluetooth.service,开启蓝牙适配器并处于可被发现模式,重新扫描、重新配对。对于某些蓝牙管理程序,你可能需要重启电脑来从头进行设备扫描。

Apple Airpods 声音小

创建一个 bluetooth.servicedrop-in file,添加以下内容:

/etc/systemd/system/bluetooth.service.d/noplugin-avrc.conf
[Service]
ExecStart=
ExecStart=/usr/lib/bluetooth/bluetoothd --noplugin=avrcp

之后,重启 bluetooth.service,重新载入(reload)其配置文件,重新连接耳机。

另外,对于 Airpods Pro,请禁用空间音频功能,开启单声道模式(使用iPhone进行设置)。

Apple AirPods Pro 无法在 HSP/HFP 配置模式下工作,可以在 A2DP 配置模式下工作

如果你的 Airpods Pro 可以与 PluseAudio 正常工作,但无法兼容 HSP/HFP 配置模式(在 pavucontrolConfigurations 标签也下,通常被表明“不可用”),请尝试换用 pipewire-pulse

请注意,换用 pipewire-pulse(并重启电脑或某些 systemd service)后,HSP/HFP 应当可以使用了。但这也可能导致 A2DP 不可用(当选择为 A2DP sink 时,立即被取消选择,并选择到"OFF"模式)。如果你遇到这个问题,请尝试删除/重命名 /var/lib/bluetooth 文件夹:

# mv /var/lib/bluetooth /var/lib/bluetooth.bak

重新配对你的蓝牙设备后,所有的配置模式理论上都应当可用了。你可以使用pavucontrolpacmd 进行选择。

HSP 问题:蓝牙音频源与播放设备都正常,但声音信号没有被在两者间正确传输

你可能缺少某些固件或 SCO (audio protocol of HSP and HFP) 路由配置错误。

请查看[3]

BCM20702 所需固件:bcm20702a1-firmwareAUR or bcm20702b0-firmwareAUR.

Error: Failed to start discovery org.bluez.Error.InProgress

如果你的耳机可被发现,但由于 "Failed to start discovery org.bluez.Error.InProgress" 错误无法连接,请安装软件包 bluez-hciconfigAUR 并运行如下命令:

$ hciconfig hciX up
$ hciconfig hciX reset

其中 X 是你电脑的蓝牙适配器的标号(通常为 0)

之后你应当就可以进行设备连接了。参考以下步骤:#通过命令行进行设置.

在 HSV 和 A2DP 配置间切换

通过下面命令可以很容易的在两者间做切换:

$ pacmd set-card-profile card_number a2dp_sink

其中 card_number 可以通过 pacmd list-cards 命令获得。

For enabling automatic profile switching from A2DP to HSP when a recording stream appears without any role set, you can append auto_switch=2 to load-module module-bluetooth-policy in /etc/pulse/default.pa.

更多关于 PulseAudio 配置的说明请参考 PulseAudio 文档

PulseAudio 下 A2DP 不能工作

Socket Interface problem

对于 bluez 4.1+, PulseAudio 3.0+,若 PulseAudio 无更改到 A2DP 配置模式,你可以尝试禁用 Socket interface from /etc/bluetooth/audio.conf。在此文件中将行 Enable=Socket 改为 Disable=Socket


A2DP sink profile 不可用

当 A2DP 播放设备配置(A2DP sink profile) 不可用时,你无法将 PluseAudio 切换到 A2DP 输出,甚至 A2DP 播放设备不会被列出。你可以通过 pactl 来确定是否是这种情况:

$ pactl list | grep -C2 A2DP
     Profiles:
             headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 30, available: yes)
             a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 40, available: no)
             off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
        Active Profile: headset_head_unit

你无法通过 pacmd 手动设置声卡配置

$ pacmd set-card-profile bluez_card.C4_45_67_09_12_00 a2dp_sink
Failed to set card profile to 'a2dp_sink'.

对于 10.0 版本的 PulseAudio,当你通过 Bluedevil 或其他 BlueZ 前端连接蓝牙耳机时,这个问题可能会出现。

在第一次通过某些蓝牙控制器(例如0a12:0001, Cambridge Silicon Radio)与耳机配对时,这个问题同样可能出现。这些蓝牙控制器默认使用 HandsfreeHeadset - HS service,并且不允许切换到需要使用 AudioSink service 的 A2DP PulseAudio 音频播放设备。

可能的解决方案:

  • 对于某些耳机,连接成功后在蓝牙耳机段调整音量或播放/暂停音乐可能会触发 A2DP 配置,使其可用
  • 使用 bluez-utils 软件包中的 bluetoothctl 连接蓝牙耳机可能会使 A2DP 播放配置可用。fix-bt-a2dpAUR 可以在蓝牙设备连接后自动完成这一过程。详细使用方法请看[4]
[bluetooth]# connect headset_MAC_address
  • 手动切换到蓝牙的 AudioSink service 可能会使 A2DP 配置文件与 A2DP PulseAudio 播放设备可用。blueman 软件包中的 blueman-manager 可以帮你完成这一过程。你也可以使用 bluetoothctl 中注册 AudioSink service 的 UUID:
$ bluetoothctl
[bluetooth]# menu gatt
[bluetooth]# register-service 0000110b-0000-1000-8000-00805f9b34fb
[bluetooth]# quit
  • 禁用蓝牙耳机的配置文件
/etc/bluetooth/main.conf
[General]
Disable=Headset
  • 启用多配置文件模式。这可以使得蓝牙耳机同时支持 A2DP 以及 HSP/HFP
/etc/bluetooth/main.conf
[General]
MultiProfile=multiple
  • 有时以上方法都无效。你可能已经尝试过重启电脑、开关蓝牙。此时可以尝试重启 bluetooth.service
$ sudo systemctl restart bluetooth.service

Gnome with GDM

Merge-arrows-2.pngThis article or section is a candidate for merging with #Connecting works, but I cannot play sound.Merge-arrows-2.png

Notes: duplicate instructions (Discuss in Talk:Bluetooth headset (简体中文))

The instructions below were tested on Gnome 3.24.2 and PulseAudio 10.0 however they may still be applicable and useful for other versions.

If PulseAudio fails when changing the profile to A2DP while using GNOME with GDM, you need to prevent GDM from starting its own instance of PulseAudio:

  • Prevent Pulseaudio clients from automatically starting a server if one is not running by adding the following:
/var/lib/gdm/.config/pulse/client.conf
autospawn = no
daemon-binary = /bin/true
  • Prevent systemd from starting Pulseaudio anyway with socket activation:
$ sudo -ugdm mkdir -p /var/lib/gdm/.config/systemd/user
$ sudo -ugdm ln -s /dev/null /var/lib/gdm/.config/systemd/user/pulseaudio.socket
  • Restart, and check that there is no PulseAudio process for the gdm user using:
$ pgrep -u gdm pulseaudio

Further discussion about this problem and alternative fixes can be found at [5] and [6]. Alternatively, one may try and install fix-bt-a2dpAUR.

HFP not working with PulseAudio

HFP-only bluetooth headsets may not be usable in the standard configuration of PulseAudio. The respective profiles occur, but they are not available:

  • bluetoothctl info output shows:
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)
  • pactl list of respective device shows:
...
Profiles:
      ...
      headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 30, available: no)

To solve the respective issue, update to pulseaudio (>=13) and potentially pulseaudio-modules-bt-gitAUR and bluez (>=5.5) to latest versions. Then install ofonoAUR (start and enable using systemctl) and phonesimAUR and create / activate a fake modem as described here [7]:

  • Create /etc/ofono/phonesim.conf with:
[phonesim]
Address=127.0.0.1
Driver=phonesim
Port=12345
  • Start as user:
$ phonesim -p 12345 /usr/share/phonesim/default.xml &
$ dbus-send --print-reply --system --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:"Powered" variant:boolean:true
  • Activate modem:
$ dbus-send --print-reply --system --dest=org.ofono /phonesim org.ofono.Modem.SetProperty string:"Online" variant:boolean:true
  • If you want to check the results of this, download ofono git sources ([8]) and call list-modems from the ofono/test directory. The output of the respective modem section should read like this:
...
[ /phonesim ]
  Online = 1
  Powered = 1
  Lockdown = 0
  Emergency = 0
  Manufacturer = MeeGo
  ...
  • Finally, restart pulseaudio and reconnect headset. Now, HFP should be available:
headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 30, available: yes)
Note: HFP support is not stable and may cause glitches with switching to A2DP; try reconnecting, if the needed mode is not available.

Disable auto switching headset to HSP/HFP

When using a bluetooth headset that supports multiple profiles, some applications switch to HSP/HFP profile automatically. If this behaviour is undesired you can disable this by appending the auto_switch=false parameter to the bluetooth-policy module:

/etc/pulse/default.pa
load-module module-bluetooth-policy auto_switch=false

Tested headsets

Model Version Comments Compatible
Philips SHB9150 bluez5, pulseaudio 5 Pause and resume does not work. With at least mpv and Banshee hitting the pause button stops audio output but does not pause the player. Limited
Philips SHB9100 Pause and resume is flaky. See [9] for the underlying issue and a temporary solution to improve audio quality. Limited
Philips SHB7000 Pause and resume is flaky. Limited
Philips SHB7100 bluez 5.32, pulseaudio 6.0 Next/previous buttons work. Pause and resume is flaky (sometimes works in VLC, not at all in Audacious). Tested only A2DP and Handsfree audio out, built-in mic was broken. Limited
Philips SHB7150 bluez 5.32, pulseaudio 6.0 Next/previous buttons work. Pause and resume work in VLC. Tested only A2DP profile.
Philips SHB5500BK/00 bluez 5.28, PulseAudio 6.0 Pause and resume is not working. Limited
Parrot Zik Firmware 1.04. The microphone is detected, but does not work. Sometimes it lags (but does not stutter); usually this is not noticeable unless playing games, in which case you may switch to a wired connection. Limited
Sony DR-BT50 bluez{4,5} Works for a2dp, see [10]). Adapter: D-Link DBT-120 USB dongle.
Sony SBH50 bluez5 Works for a2dp, Adapter: Broadcom Bluetooth 2.1 Device (Vendor=0a5c ProdID=219b Rev=03.43). Requires the btusb module.
Sony MDR-XB950BT pulseaudio Tested a2dp. Adapter: Grand-X BT40G. Does not auto-connect, need to connect manually. Other functionality works fine. Limited
Sony MUC-M1BT1 bluez5, pulseaudio-gitAUR Both A2DP & HSP/HFP work fine.
SoundBot SB220 bluez5, pulseaudio-gitAUR
Auna Air 300 bluez5, pulseaudio-git For some reason, a few restarts were required, and eventually it just started working. Limited
Sennheiser MM 400-X bluez5, pulseaudio 4.0-6
Sennheiser MM 550-X Travel bluez 5.27-1, pulseaudio 5.0-1 Next/Previous buttons work out-of-the-box, Play/Pause does not
Audionic BlueBeats (B-777) bluez5, pulseaudio 4.0-6
Logitech Wireless Headset bluez 5.14, pulseaudio-git part number PN 981-000381, advertised for use with iPad
HMDX Jam Classic Bluetooth bluez, pulseaudio-git
PT-810 bluez 5.14, pulseaudio-git Generic USB-Powered Bluetooth Audio Receiver with 3.5mm headset jack and a2dp profile. Widely available as "USB Bluetooth Receiver." IDs as PT-810.
Philips SHB4000WT bluez5 A2DP works, HDP distorted.
Philips AEA2000/12 bluez5
Nokia BH-104 bluez4
Creative AirwaveHD bluez 5.23 Bluetooth adapter Atheros Communications usb: 0cf3:0036
Creative HITZ WP380 bluez 5.27, pulseaudio 5.0-1 A2DP Profile only. Buttons work (Play, Pause, Prev, Next). Volume buttons are hardware-only. Auto-connect works but you should include the bluetooth module in "pulseaudio" to switch to it automatically. Clear HD Music Audio (This device support APTx codec but it is not supported in linux yet). You may have some latency problems which needs pulseaudio restart.
deleyCON Bluetooth Headset bluez 5.23 Adapter: CSL - USB nano Bluetooth-Adapter V4.0. Tested a2dp profile. Untested microphone. Does not auto-connect (even when paired and trusted), must connect manually. Play/pause button mutes/unmutes the headphones, not the playback. Playback fwd/bwd buttons do not work (nothing visible with xev). Limited
UE BOOM bluez 5.27, pulseaudio-git 5.99 Update to latest UE BOOM fw 1.3.58. Sound latency in video solved by configuring pavucontrol. Works with UE BOOM x2.
LG HBS-730 bluez 5.30, pulseaudio 6.0 Works out of box with A2DP profile.
LG HBS-750 bluez 5.30, pulseaudio-git 6.0 Works out of box with A2DP profile.
Beats Studio Wireless bluez 5.28, pulseaudio 6.0 Works out of box. Not tested multimedia buttons.
AKG Y45BT bluez 5.30, pulseaudio 6.0 Pause and resume does not work. Needs Enable=Socket in /etc/bluetooth/audio.conf and load-module module-bluetooth-discover in /etc/pulse/default.pa.
Bluedio Turbine/Turbine 2+ bluez5.3, pulseaudio 6.0 HSP/HFP work fine, A2DP work fine.
Sony SBH20 bluez 5.30, pulseaudio 6.0 Works out of box with A2DP profile.
Nokia BH-111 bluez 5.30, pulseaudio 6.0 Works with both HSP/HFP and A2DP. Buttons work in certain apps.
Sony MDR-ZX330BT bluez 5.31, pulseaudio 6.0 Works out of box (HSP/HFP and A2DP). Buttons work in certain apps.
Samsung Level Link bluez 5.33, pulseaudio 6.0 Works out of box (HSP/HFP and A2DP). Buttons work in certain apps.

See also

Using the same device on Windows and Linux without pairing the device over and over again