Bluetooth ヘッドセット
この記事では Gentoo Linux 内での Bluetooth ヘッドセットの構成について記載しています。
前提条件
事前に Bluetooth と ALSA の構成が完了している必要があります (構成だけで構いません、一部のデバイスは media-sound/pulseaudio-modules-bt または media-sound/bluez-alsa をセットアップしないと動作しない場合があります)。
加えて、ofono-headset
USE フラグを設定していると便利かもしれません:
media-sound/pulseaudio ofono-headset
media-sound/pulseaudio-daemon ofono-headset
構成設定
PulseAudio
Bluetooth ヘッドセットを動作させる (例えば pavucontrol を介して) には、PulseAudioと BlueZ 5 から以下の操作を行うだけで十分なはずです。
マイク入力 (およびボタン入力) を処理するプロトコルは 2 つあります: HSP と HFP です。マイクを動作させるには、ヘッドセットを A2DP プロトコルから HSP/HFP に切り換える必要があります。ヘッドセットでの HSP の利用は通常、現行の pulseaudio バージョンでは特段の設定の必要なく動作するでしょう。
pulseaudio 13.0 は HFP に適切に対応していません。これには現在対処中です。運が良ければ、このマージリクエスト 288 を使ったソースから最新の開発バージョンと、それに付随する hsphfpd をビルドできるかもしれません。
ALSA + Bluez 5
Bluez と ALSA の間の連携に bluez-alsa を使うこともできます。この構成は完全に Pulseaudio なしで使用することもでき、また Pulseaudio 上の ALSA デバイスとしてヘッドセットを使用することもできます (この場合は、これらの 2 つが競合しないように bluetooth サポートを無効化してください)。
bluez-alsa を インストールしてください:
root #
emerge --ask media-sound/bluez-alsa
/etc/asound.conf (システム全体) または ~/.asoundrc (ユーザレベル) の ALSA 構成ファイル内で、Bluetooth 接続のパラメータを指定してください (MAC アドレスの部分は、利用したいデバイスの MAC アドレスに置き換えてください):
# Bluetooth headset
defaults.bluealsa {
interface "hci0" # host Bluetooth adapter
device "10:4F:A8:00:11:22" # Bluetooth headset MAC address
profile "a2dp"
}
静的に ALSA を構成することも可能です、下の 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"
}
}
bluetooth と bluealsa サービスが開始していることを確認してください。おそらく、rc-config を使ってこれらをデフォルトランレベルに追加すると良いでしょう。コンピュータにデバイスがペアリングおよび接続されていることを確認して (詳細は Bluetooth をお読みください)、aplay に PCM デバイス bluealsa
を渡してテストしてください。
user $
aplay -D bluealsa some_file.wav
その他のアプリケーションについては、出力デバイスを設定するための正確なオプションは異なるかもしれません。
ALSA 構成ファイル /etc/asound.conf および ~/.asoundrc への変更はアプリケーション開始時に自動で反映されます、alsasound サービスを再起動する必要はありません。
ハードウェア音量調節:
user $
alsamixer -D bluealsa
テスト
mplayer で音声ファイルを再生してください:
user $
mplayer -ao alsa:device=bluealsa filename
mpv を使う場合は:
user $
mpv --audio-device=alsa/bluealsa filename
もし動作した場合は、デバイスを動作しているデバイスの表に追加してくれると助かります。(訳注: オリジナルの英語ページに追加してください。)
動作しているデバイス
デバイスの機能は使用する Bluetooth コントローラに依存します。
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 (423729) | Yes | Not tested | 5.55 | ||
Bose SoundSport Free (774373-0010) | Yes | Not tested | 5.48-r1 | ||
Bose QC Earbuds | Yes | Not tested | 5.55 | ||
Bose QC35 II Headset | Yes | Yes | 5.61 | ||
the BTunes 3 | Yes | Not tested | 5.54 | ||
Cellular Innovations HFBLU-ST6 | Yes | No | ? | ||
Comexion M100 | Yes | Yes | 5.64 | Pulseaudio needed native-headset USE flag. Manual switching between A2DP and HFP bluetooth profiles is done with pavucontrol. | |
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 | |
Jabra Elite 65t | Yes | Yes | 5.65 | ||
Jabra Elite 2 | Yes | Yes | 5.65 | Sometimes the audio is lost for a very short time. | |
Jabra Evolve2 75 | Yes | Yes | 5.66-r1 | I needed to install *both* pulseaudio-daemon and pulseaudio with appropriate USE flags (sys-apps/portage-3.0.44-r1 dated Sat Apr 1 2023. Feel free to remove this instruction if the dependency is no longer present.) | |
JBL CLUB PRO+ TWS | Yes | Not tested | 5.66-r1 | ||
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 Live 400BT | Yes | Yes | 5.62-r3 | It seems some them come with factory defect making mic level too low and impossible to change | |
JBL T450BT | Yes | Not tested | 5.43 | ||
JBL Live 500BT | Yes | No | 5.54 | ||
LG HBS730 | Yes | No | ? | ||
Lenovo HX106 | Yes | Yes | 5.61 | media-sound/bluez-alsa-3.1.0 is necessary | |
Marshall Major II | Yes | Not tested | 5.51 | ||
Marshall MID | Yes | Not tested | 5.51 | ||
Marshall Stockwell | Yes | Not tested | BlueZ 5.54 | Bluetooth Speaker tested successfully. Microphone not applicable | |
Mi Bluetooth Headset Basic LYEJ02LM | Yes | Yes | BlueZ 5.61-r1 | Bluetooth Headset Speaker and Microphone both tested successfully. | |
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 USE flag 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 | Yes | 5.27 | Microphone tested successfully with BlueZ 4.x/HSF. With bluez 5.58-r1 switch of audio profile from A2DP to HSP/HFP does not work. Hence microphone does not work. | |
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 Aionic TW2 | Yes | Not tested | 5.64 | May need to re-pair after pairing with another device. | |
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. | |
Shure True Wireless Secure Fit Adapter 2 | Yes | Not tested | 5.52 | No issues. | |
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-XB900N | Yes | Yes | 5.62-r3 | Everything works well at least with pipewire. Make sure kernel's RFCOMM/BNEP are compiled as modules and upower is compiled with "ios" use flag | |
Sony WH-CH700N | Yes | Not tested | 5.50-r3 | Volume control works. BlueZ 5: blue-alsa | |
Sony WH-CH710N | Yes | Yes | 5.62-r3 | Tested with pipewire-0.3.36. A2DP bt profile for good audio quality only, HSP/HFP bt profile for having both mic and audio. | |
Sony WH-1000XM2 | Yes | Yes | 5.56-r1 | The touch interface (volume) on the right speaker works. | |
Sony WH-1000XM3 | Yes | Yes | 5.55:0/3 | The touch interface on the right speaker works. Strange echo of external sounds in headset mode (possibly feature not error). With bluez 5.58-r1 switch of audio profile from A2DP to HSP/HFP does not work. Hence microphone does not work. | |
Sony WH-1000XM4 | Yes | No | 5.66-r1 | Haven't been able to get the microphone to work yet. | |
Sony WI-1000X | Yes | Not Tested | 5.62-r3 | ||
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. |
トラブルシューティング
入力デバイスを開けない
デバイスが動作せず、ログが以下のエラーを出している場合は、uinput カーネルモジュールをコンパイルしてロードしてください:
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
Device Drivers --->
Input device support --->
[*] Miscellaneous devices --->
<M> User level driver support
オーディオサービスを利用できない
net-wireless/bluez-5.xx にアップグレードした後、Bluetooth ヘッドセットは接続されているものの、ALSA/PulseAudio が接続されたデバイスを見つけるのに失敗することがあるかもしれません。
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.
これを修正するには、以下のことを実行する必要があります:
- bluetoothd のオーディオソケットを有効化する:
[General]
Enable=Socket
- 以下のいずれかの方法で、bluetoothd を再起動する:
- ソフトウェア無線キルスイッチをオフにして、再度オンにする
root #
rfkill block bluetooth
root #
rfkill unblock bluetooth
- ハードウェア無線キルスイッチをオフにして、再度オンにする
- コンピュータを再起動する
- Bluetooth ヘッドセットを再接続する
GDM を使用しているときに、オーディオデバイスが利用できない
GDM を使用しているが GNOME にログインしていない場合 (代わりに i3 を使用している、など)、GDM がヘッドセットをブロックして、PulseAudio から利用できなくなることがあるかもしれません。この場合、ヘッドセットは接続されるものの、アプリケーションからヘッドセットを見つけることができないという結果になるでしょう。
回避策として、別のディスプレイマネージャ (LXDM など) に切り替えるか、GDM で PulseAudio の管理を無効化する[1]方法があります:
autospawn = no
daemon-binary = /bin/true
上のファイルを作成したら、GDM がこれを読めるようにしてください:
root #
chown gdm:gdm /var/lib/gdm/.config/pulse/client.conf
PulseAudio 音量調整でオーディオデバイスが利用できない (が、ALSA では動作する)
このフォーラムポストに従って、/etc/pulse/default.pa に (もしかすると /etc/pulse/system.pa にも) 以下を追加してください:
### Bluetooth ハードウェアのためのドライバモジュールを自動的にロードする
.ifexists module-bluez5-device.so
load-module module-bluez5-device
.endif
.ifexists module-bluez5-discover.so
load-module module-bluez5-discover
.endif
pulseaudio
と bluetooth
USE フラグが有効化されていることを確認してください
関連項目
外部資料
参照
- ↑ Stanislav Naumuk. Bluetooth a2dp, Debian Wiki、2015 年 6 月 13日。2019 年 3 月 18 日閲覧。