This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
Bluetooth Headset
This article describes the configuration of a Bluetooth headset.
Prerequisites
This article assumes that Bluetooth and ALSA have been previously configured.
Configuration
PulseAudio
Following instructions from PulseAudio and BlueZ 5 should be sufficient to make Bluetooth headsets work (through pavucontrol for instance).
ALSA + Bluez 5
If you do not want to use PulseAudio, you can use bluez-alsa to provide integration between Bluez and ALSA.
- Make sure you have emerged Bluez 5, not Bluez 4
user $
equery list net-wireless/bluez
- 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)
# 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.
# 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.
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
ALSA + Bluez 4
If for some reason, you do not want to PulseAudio nor ALSA + Bluez 5 using bluez-alsa as described above, then you could try the following method.
- Make sure you have emerged Bluez 4, not Bluez 5
user $
equery list net-wireless/bluez
You will probably need to mask Bluez 5 and then re-emerge bluez.
>=net-wireless/bluez-5
- Add one of the following code snippets to /etc/asound.conf (system-wide) or ~/.asoundrc (user-level), and substitute the MAC address with the MAC address of your Bluetooth device.
# First try autodetection: @hooks [ { func load files [ "/usr/share/alsa/bluetooth.conf" ] errors false } ] # Specify your device if autodetection doesn't work for you: ## To redirect ALL output to the headset #pcm.!default { #type bluetooth #device 00:16:44:FD:6B:A0 #profile "auto" #} ## OR: to create a new, additional output channel #pcm.bluetooth { #type bluetooth #device 00:16:44:FD:6B:A0 #profile "auto" #}
- Restart ALSA.
OpenRC
root #
rc-service alsasound restart
systemd
root #
systemctl restart alsasound
Testing
- Play a sound file.
user $
mplayer -ao alsa:device=bluealsa filename
If it works, please add your device to the table of working devices.
Working devices
The capabilities of the device are dependent on the Bluetooth controller being used.
Device | Headphone | Microphone | BlueZ Version | Notes | |
---|---|---|---|---|---|
Bose SoundSport Free (774373-0010) | Yes | Not tested | 5.48-r1 | ||
Cellular Innovations HFBLU-ST6 | Yes | No | ? | ||
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 T450BT | Yes | Not tested | 5.43 | ||
JBL E40BT | Yes | Not tested | 5.47 | ||
LG HBS730 | Yes | No | ? | ||
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 | ? | ||
Plantronics BackBeat GO | Yes | Not tested | ? | ||
Prestigio PBHS1 | Yes | Not tested | ? | ||
Sennheiser MM 550-X Travel | Yes | Not tested | 5.27 | Microfone tested successfully in 2011 with BlueZ 4.x/HSF | |
Sennheiser URBANITE XL Wireless | Yes | Not tested | 5.46 | Volume swipes are working | |
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.47 | Volume, 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 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. | |
Teufel MUTE BT | Yes | Yes | 5.47 |
Troubleshooting
Audio socket (Bluez 4 only)
The ALSA + Bluez 4 setup needs Socket enabled, if there's no sound.
[General] Enable=Socket
Can't open input device
Compile and load the uinput kernel module, when things don't work, and the logs show this error:
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
'"`UNIQ--pre-00000001-QINU`"'
No audio service is available
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:
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:
- Enable the audio socket of bluetoothd
[General] Enable=Socket
- 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
- Reconnect the Bluetooth headset