Bluetooth headset

This article describes the configuration of Bluetooth headsets within Gentoo Linux.

Prerequisites[edit | edit source]

The configurations for Bluetooth and ALSA must have been previously completed (just configurations, some devices do not connect without media-sound/pulseaudio-modules-bt or media-sound/bluez-alsa setup).

Also, one or both of native-headset ofono-headset USE flags might be useful:

FILE /etc/portage/package.use/pulseaudio
media-sound/pulseaudio native-headset ofono-headset

Configuration[edit | edit source]

PulseAudio[edit | edit source]

Following instructions from PulseAudio and BlueZ 5 should be sufficient to make Bluetooth headsets work (through pavucontrol for instance).

There is two protocols for handling microphone input (and button input) from headsets: HSP and HFP. In order for the microphone to work the headset has to switch from the A2DP protocol to HSP/HFP. Headset using HSP will usually work out-of-the-box with the current pulseaudio version.

pulseaudio 13.0 does not support HFP properly. There is ongoing work on this. You might have luck building the current development version from source using this merge request 288 and the accompanying hsphfpd.

ALSA + Bluez 5[edit | edit source]

You can use bluez-alsa to provide integration between Bluez and ALSA. This setup can be used either completely without Pulseaudio, or you can then use your headset as another ALSA device in Pulseaudio (in which case disable its bluetooth support, so the two don't collide).

  • Install bluez-alsa:
root #emerge --ask media-sound/bluez-alsa
  • In your ALSA configuration, /etc/asound.conf (system-wide) or ~/.asoundrc (user-level), specify the parameters of the Bluetooth connection (replace the MAC address with the MAC address of your device)
FILE /etc/asound.conf or ~/.asoundrc
# Bluetooth headset
defaults.bluealsa {
     interface "hci0"            # host Bluetooth adapter
     device "10:4F:A8:00:11:22"  # Bluetooth headset MAC address
     profile "a2dp"
}

A static ALSA configuration is also possible, make sure to change the device name in the below examples for aplay.

FILE /etc/asound.conf or ~/.asoundrc
# Bluetooth headset
pcm.btheadset {
        type plug
        slave.pcm {
                type bluealsa
                device "10:4F:A8:00:11:22"
                profile "a2dp"
        }
        hint {
                show on
                description "Your description of Bluetooth Headset"
        }
}
  • Make sure the bluetooth and bluealsa services are started. You probably want to add them to your default runlevel via rc-config.
  • Make sure the device is paired and connected to your computer. See Bluetooth for details.
  • Test with e.g. aplay, passing the PCM device 'bluealsa'
user $aplay -D bluealsa some_file.wav
  • For other applications, the precise option to set the output device may differ.
Note
Changes to ALSA configuration files /etc/asound.conf and ~/.asoundrc are picked up automatically at application start, you don't need to restart the alsasound service.
  • Hardware volume control:
user $alsamixer -D bluealsa

Testing[edit | edit source]

  • Play a sound file.
user $mplayer -ao alsa:device=bluealsa filename

Or with mpv:

user $mpv --audio-device=alsa/bluealsa filename

If it works, please add your device to the table of working devices.

Working devices[edit | edit source]

Note
The capabilities of the device are dependent on the Bluetooth controller being used.
Device Headphone Microphone BlueZ Version Notes
AfterShokz TREKZ Titanium Yes Not tested 5.50-r2
AKG N700NC Yes Not tested 5.52 Update headset firmware to latest version 0.2.7.
Beats By Dre PowerBeats3 Yes Not tested 5.55 Apply module loading to /etc/pulse/default.pa and system.pa with latest version of Bluez as device and module will not load otherwise. Supports a2dp. Media key presses work for volume, double press next, single press pause, triple click previous.
Bose SoundSport Free (774373-0010) Yes Not tested 5.48-r1
Bose QC Earbuds Yes Not tested 5.55
the BTunes 3 Yes Not tested 5.54
Cellular Innovations HFBLU-ST6 Yes No ?
Creative BT-W2 USB Bluetooth Dongle Yes Not tested 5.52 Tested on desktop PC without built-in Bluetooth. Very straightforward setup. Requires kernel USB audio enabled. Volume and Play/Pause work. Pair with any Bluetooth headphones. Compile alsa-plugins with speex libsamplerate and ffmpeg USE flags to provide options for better sampling.
Dell BH200 Yes Not tested ?
Google Pixel Buds Yes Yes 5.49-r1
Huawei FreeBuds Yes Not tested 5.49-r1
Jabra MOVE v2.3.0 Yes Yes 5.39 If supported, AAC codec is selected, otherwise SBC
JBL E40BT Yes Not tested 5.47
JBL JBL Endurance SPRINT Yes Not tested 5.55
JBL GO+ Yes Not tested 5.50-r2
JBL T450BT Yes Not tested 5.43
JBL Live 500BT Yes No 5.54
LG HBS730 Yes No ?
Marshall Major II Yes Not tested 5.51
Marshall MID Yes Not tested 5.51
Marshall Stockwell Yes Not tested BlueZ 5.54 Blutooth Speaker tested successfully. Microphone not applicable
Nokia BH-214 Yes No 4.101 & 5.39
Nokia BH-604 Yes Yes ?
Parrot Zik Yes Not tested ?
Philips SBH6201 Yes Yes ?
Philips SBH9100 Yes Not tested ?
Pioneer SE-MS9BN-G Yes Yes 5.50-r1 Microphone tested successfully with BlueZ 5.50-r1 and HSP/HFP profile. Volume and play-pause buttons recognized as Multimedia events in Xfce (XF86AudioNext - XF86AudioPrev - XF86AudioPlay). No special bluetooth configuration is required. You should only make sure that pulseaudio is built with native-headset useflag, and that pulseaudio spawns correctly from your X session.
Plantronics BackBeat GO Yes Not tested ?
Plantronics BackBeat PRO 2 Yes Yes 5.52 The microphone works with HSP/HFP. Pulseaudio have to be built with native-headset useflag to have the microphone working. Buttons work when "User level driver support" is added in the kernel.
Prestigio PBHS1 Yes Not tested ?
Sennheiser HD 4.40 BT Yes Not tested 5.50-r2
Sennheiser MM 550-X Travel Yes Not tested 5.27 Microfone tested successfully in 2011 with BlueZ 4.x/HSF
Sennheiser PXC 550 Yes Not tested 5.50-r1 Confirmed working with older versions, but not sure how far back. Tested with bluez-alsa (currently 1.3.1), not Pulse Audio. Media controls not tested.
Sennheiser URBANITE XL Wireless Yes Not tested 5.46 Volume swipes are working
Shure RMCE-BT2 Yes Not tested 5.52 Volume buttons adjust volume locally, not on host device. Microphone not detected. Tested with Pulseaudio, not with bluez-alsa.
Sony DR-BTN200 Yes No 5.39 All buttons except "Call" work and can be assigned shortcuts in the DE
Sony MDR-1000X Yes No 5.50-r3 Volume swipes are working, prev/next swipes don't work.
Sony MDR-ZX750BN Yes No ? The change track and volume buttons work.
Sony MDR-ZX770BT Yes Not tested 4.101 & 5.25 4.101 requires Enable=Socket in /etc/bluetooth/audio.conf
Sony SBH20 Yes Not tested ?
Sony SBH52 Yes Yes ? The buttons work and can be assigned actions in KDE. Supported rate 4800.
Sony WH-CH700N Yes Not tested 5.50-r3 Volume control works. BlueZ 5: blue-alsa
Sony WH-1000XM3 Yes Not tested ? The touch interface on the right speaker works.
Sony Ericsson HBH-DS200 Yes Not tested 4.101 & 5.43 BlueZ 4: software volume control via .asoundrc. BlueZ 5: BlueALSA
Sony Ericsson HBH-DS970 Yes Not tested ? Requires Enable=Socket in /etc/bluetooth/audio.conf.
Soundcore Spirit Bluetooth Headphones Yes Not tested 5.50-r2
Teufel MUTE BT Yes Yes 5.47
Apple AirPods Pro Yes No 5.54 Recording looks like it could work in ALSA, when profile is set to "sco". Recording does not work under normal PulseAudio use.
Apple AirPods (1st generation) Yes No 5.54 Recording is probably same as AirPods Pro.
Xiaomi Redmi AirDots Yes No 5.54 There might be a way to make the microphone work, if you mess with pulseaudio and manage to get HSP/HFP to work, but I couldn't do it.
CaseGuru CGpods 5.0 Yes Not tested 5.54
Soundcore Life Q30 Yes Yes 5.55 Playback via Pulseaudio worked with A2DP out of the box, attempts to get the microphone work via HSP/HFP were unsuccessful with both native-headset and ofono/phonesim mess. I was able to get it working with bluez-alsa and then added the device to Pulseaudio as described on bluez-alsa wiki.

Troubleshooting[edit | edit source]

Can't open input device[edit | edit source]

Compile and load the uinput kernel module, when things don't work, and the logs show this error:

CODE
bluetoothd: Can't open input device: No such file or directory (2)
bluetoothd: AVRCP: failed to init uinput for 00:16:44:FD:6B:A0
bluetoothd: Unable to select SEP
KERNEL
Device Drivers  --->
   Input device support  --->
      [*]   Miscellaneous devices  --->
         <M>   User level driver support

No audio service is available[edit | edit source]

After updating to net-wireless/bluez-5.xx it might happen, that a Bluetooth headset is connected, but ALSA / PulseAudio fails to pick up the connected device.

An error message like this might be shown in the output of PulseAudio:

CODE
I: [pulseaudio] module-card-restore.c: Restoring profile for card bluez_card.00_16_94_0B_6F_DE.
I: [pulseaudio] card.c: Created 10 "bluez_card.00_16_94_0B_6F_DE"
bt_audio_service_open: connect() failed: Connection refused (111)
W: [pulseaudio] module-bluetooth-device.c: Bluetooth audio service not available
W: [pulseaudio] module-bluetooth-device.c: Service not connected
I: [pulseaudio] card.c: Freed 10 "bluez_card.00_16_94_0B_6F_DE"
E: [pulseaudio] module.c: Failed to load module "module-bluetooth-device" (argument: "address="00:16:94:0B:6F:DE" path="/org/bluez/31716/hci0/dev_00_16_94_0B_6F_DE""): initialization failed.

To fix this, the following needs to be done:

  1. Enable the audio socket of bluetoothd
FILE /etc/bluetooth/audio.conf
[General]
Enable=Socket
  1. Restart bluetoothd by doing one of the following things:
    • Turn the software wireless kill switch off and on again
root #rfkill block bluetooth
root #rfkill unblock bluetooth
    • Turn the hardware wireless kill switch off and on again
    • Reboot the computer
  1. Reconnect the Bluetooth headset

Audio device not visible when using GDM[edit | edit source]

If you are using GDM, but not logging into GNOME (e.g. i3 instead), GDM might block your headset, which will it not being available for PulseAudio. This will result in your headset being connected, but the applications won't see it.

As a workaround, you can switch to a different display manager (e.g. LXDM), or disable PulseaAudio for GDM[1]:

FILE /var/lib/gdm/.config/pulse/client.conf
autospawn = no
daemon-binary = /bin/true

If you have created the file, make sure that GDM can read it:

root #chown gdm:gdm /var/lib/gdm/.config/pulse/client.conf

Audio device not visible using PulseAudio volume control (but working with ALSA)[edit | edit source]

According to this forum post, add the following to /etc/pulse/default.pa (and possibly /etc/pulse/system.pa):

FILE /etc/pulse/default.pa
### Automatically load driver modules for Bluetooth hardware
.ifexists module-bluez5-device.so
load-module module-bluez5-device
.endif

.ifexists module-bluez5-discover.so
load-module module-bluez5-discover
.endif

Ensure that the pulseaudio and bluetooth USE flags are enabled

See also[edit | edit source]

External resources[edit | edit source]

References[edit | edit source]

  1. Stanislav Naumuk. Bluetooth a2dp, Debian Wiki, June 13th, 2015. Retrieved on March 18th, 2019.
This article is issued from Gentoo. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.